web-dev-qa-db-ja.com

SSL接続でMySQLに接続する方法

Drupal 7.24/PHP 5.3.27を使用しており、PHPネイティブMySQLドライバを使用しています。PHPinfoは、SSLがサポートされています。

Drupalを取得できないようです。SSLがなくても正常に機能します。パッチ726192-arbitrary-pdo-options-attributes.patchが次のようになりました7.17についてコミットしました。ただし、ダウンロードした7.24にパッチが表示されなかったため、パッチを適用しました。それでも機能しません。接続方法を疑う他の人には、設定の悪い例がたくさんあります。この構成ですが、やはり機能しません。これらのSSL証明書と接続Navicatをテストしましたが、正常に接続します

何を試してみるか、どこを見るかに関する提案はありますか?

$databases = array (
  'default' => 
   array (
    'default' => 
     array (
       'database' => 'drupaldb',
       'username' => 'drupaluser',
       'password' => 'password',
       'Host' => '192.168.10.100',
       'port' => '3306',
       'driver' => 'mysql',
       'prefix' => '',
       'pdo attributes' => array(
           PDO::MYSQL_ATTR_SSL_KEY => '/path/client-key.pem',
           PDO::MYSQL_ATTR_SSL_CERT => '/path/client-cert.pem',
           PDO::MYSQL_ATTR_SSL_CA => '/path/ca-cert.pem',
        ),
     ),
   ),
);
1
user24412

最後にそれを理解しました。 「PDO属性」ではなく「ドライバーオプション」です。

  $databases = array (
    'default' => 
     array (
       'default' => 
        array (
          'database' => 'drupaldb',
          'username' => 'drupaluser',
          'password' => 'password',
          'Host' => '192.168.10.100',
          'port' => '3306',
          'driver' => 'mysql',
          'prefix' => '',
          'driver options' => array(
              PDO::MYSQL_ATTR_SSL_KEY => '/path/client-key.pem',
              PDO::MYSQL_ATTR_SSL_CERT => '/path/client-cert.pem',
              PDO::MYSQL_ATTR_SSL_CA => '/path/ca-cert.pem',
           ),
       ),
    ),
  );
3
user24412

SSLを使用して新しいサイトをセットアップする方法が見つかりませんでした。したがって、セットアップ段階ではSSLを使用できません。つまり、SSLをオンにした後は、データの安全性を確保するためにパスワードを変更し、悪意のある方法でセットアップやパスワードの変更中に小さなウィンドウを使用しないようにしてください。

drupalサイトを稼働させたら、settings.phpを次のように更新します。

$databases = array (
  'default' =>
  array (
    'default' =>
    array (
      'database' => 'drupal7',
      'username' => 'drupaladmin',
      'password' => 'P@ssw0rd',
      'Host' => '12.23.34.45',
      'port' => '',
      'driver' => 'mysql',
      'prefix' => '',
      'pdo' => array (
            PDO::MYSQL_ATTR_SSL_KEY => '/etc/pki/tls/private/client-key.pem',
            PDO::MYSQL_ATTR_SSL_CERT => '/etc/pki/tls/certs/client-cert.pem',
            PDO::MYSQL_ATTR_SSL_CA => '/etc/pki/tls/certs/ca-cert.pem',
                     ),
      ),
  ),
);

必要に応じて、証明書のパスと名前を調整します。 Apacheまたは使用しているWebサーバーを再起動します。

MYSQLサーバーでの使用

GRANT USAGE ON database.* TO 'USERNAME'@'%' REQUIRE SSL;
FLUSH PRIVILEGES;

sSLの使用を強制します。

それを取り消す必要がある場合は、次のコマンドを使用できます。

GRANT USAGE ON database.* TO 'USERNAME'@'%' REQUIRE NONE;
FLUSH PRIVILEGES;

お役に立てば幸いです。

1
anonymous