0

リモート サーバーでホストされている MySQL データベースがあり、SSL 接続のみを受け入れるように設定されています。SSL オプション付きの Java JDBC を使用してこのデータベースに接続すると、正常に動作します。「jdbc:mysql://:/?verifyServerCertificate=false&useSSL=true&requireSSL=true」のように、JDBC 接続に使用する特別な jdbc 文字列があります。

ADODB ライブラリを使用して PHP 経由で同様の接続を使用する必要があります。

ADODB mysqli 拡張機能の使用について、ウェブ上でいくつかの参照を見つけました


(参照http://mbrisby.blogspot.com/2008/06/adodb-php-mysql-ssl.html )

CA 証明書 (/path/to/ca-cert.pem にあるとします) を作成した後、次の項目が /etc/my.cnf または接続ユーザーの ~/ の [client] スタンザにあることを確認します。クライアント ホスト上の .my.cnf:

ssl-ca=/パス/to/ca-cert.pem

次に、次の PHP プログラムを試してください。

// これらは AdoDB ライブラリの一部です require '/path/to/adodb-exceptions.inc.php'; 「/path/to/adodb.inc.php」が必要です。

/* * '2048' を * printf( "%d\n", MYSQLI_CLIENT_SSL ) * PHP プログラムで (mysqli エクステンションがインストールされている状態で) 実行した結果 */ $dsn = 'mysqli://ssluser:sslpass@ dbhost/test?clientflags=2048';

$dbh = NewADOConnection($dsn);

$sql = "'ssl_cipher' のようなステータスを表示"; $res =& $dbh->Execute($sql); print_r( $res->fields ); $res->閉じる();

$dbh->閉じる();



別のマシンからこの mysql データベースに接続している場合、証明書情報は必要ですか?

PHP で利用できる JDBC 文字列に似たものはありますか?

誰かが実際の例を投稿できれば素晴らしいでしょう

ありがとうございました

4

1 に答える 1

0

MySQL を SSL に接続した経験はありません。MySQL ドライバーには、接続時に使用できるフラグ( ) があります。MYSQL_CLIENT_SSL

AdoDB を使用して接続するときに設定するには、私の接続テンプレートを試すことができます。

$options = '';
if ($driver == 'mysql' OR $driver == 'mysqli')
{
  if ($params['pconnect'] === TRUE)
  {
    $options .= '?persist';
  }
  $flags = MYSQL_CLIENT_COMPRESS;
  if ($params['ssl'] === TRUE)
  {
    $flags = $flags | MYSQL_CLIENT_SSL;
  }
  $options .= (empty($options)?'?':'&')."clientflags=$flags";
}

$dsn = "{$driver}://{$username}:{$password}@{$hostname}/{$database}{$options}";

$adodb =& ADONewConnection($dsn);

if ($adodb)
{
  //set fetch mode
  $adodb->SetFetchMode(ADODB_FETCH_BOTH);

  //character set
  if ($driver == 'mysql' OR $driver == 'mysqli')
  {
    if (isset($params['char_set']) AND $params['char_set']
        AND isset($params['dbcollat']) AND $params['dbcollat'])
    {
      $charset    = $adodb->qstr($params['char_set']);
      $collation  = $adodb->qstr($params['dbcollat']);
      $adodb->Execute("SET NAMES $charset COLLATE $collation");
    }
  }
  if ($debug)
  {
    @ob_start();
    $adodb->debug = TRUE;
  }
}
于 2010-01-31T05:12:24.463 に答える