PHP で SSL 経由でリモート MySQL サーバーに安全に接続するにはどうすればよいですか?

DDD
リリース: 2024-11-23 22:48:10
オリジナル
718 人が閲覧しました

How to Securely Connect to a Remote MySQL Server via SSL in PHP?

PHP から SSL を使用してリモート MySQL サーバーに接続する

古い MySQL を使用して SSL を使用してリモート MySQL サーバーへの接続を確立しようとする場合拡張機能 (mysql_connect) を使用すると、「SSL 接続エラー」を示すエラーが発生する場合があります。 my.cnf で適切な SSL パラメータを設定して安全な端末接続を有効にしているにもかかわらず、PHP 接続は失敗したままです。

PHP バージョンに関する考慮事項

提供されたコードは古い MySQL 拡張機能を利用しています。 、現在は積極的に開発されていません。代わりに、次のような拡張機能セットを提供する MySQLi 拡張機能 (MySQL Enhanced Extension) を使用することをお勧めします。

  • オブジェクト指向インターフェイス
  • 準備された複数のステートメントのサポート
  • デバッグ機能の改善

改善MySQLi との接続

次のサンプル コードは、安全な SSL 接続に MySQLi を使用する方法を示しています。

ini_set ('error_reporting', E_ALL);
ini_set ('display_errors', '1');
error_reporting (E_ALL|E_STRICT);

$db = mysqli_init();
mysqli_options ($db, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);

$db->ssl_set('/etc/mysql/ssl/client-key.pem', '/etc/mysql/ssl/client-cert.pem', '/etc/mysql/ssl/ca-cert.pem', NULL, NULL);
$link = mysqli_real_connect ($db, 'ip', 'user', 'pass', 'db', 3306, NULL, MYSQLI_CLIENT_SSL);
ログイン後にコピー

PDO_MYSQL 代替

古い PHP バージョンでは SSL サポートが制限されているため理想的ではありませんが、PDO_MYSQL は次の目的で利用できます。 SSL 接続:

$pdo = new PDO('mysql:host=ip;dbname=db', 'user', 'pass', array(
    PDO::MYSQL_ATTR_SSL_KEY    =>'/etc/mysql/ssl/client-key.pem',
    PDO::MYSQL_ATTR_SSL_CERT=>'/etc/mysql/ssl/client-cert.pem',
    PDO::MYSQL_ATTR_SSL_CA    =>'/etc/mysql/ssl/ca-cert.pem'
));

$statement = $pdo->query("SHOW TABLES;");
$row = $statement->fetch(PDO::FETCH_ASSOC);
ログイン後にコピー

5.3.8 より前の PHP バージョンの PDO での SSL サポートは期待どおりに機能しない可能性があることに注意することが重要です。

さらに問題が発生した場合は、お問い合わせください。追加のガイダンスについては、次のリソースを参照してください:

  • [PHP MySQLi SSL Connection例](https://www.digitalocean.com/community/tutorials/how-to-use-ssl-to-secure-mysql-connections-in-php)
  • [PDO MySQL SSL 構成]( https://stackoverflow.com/questions/30075513/pdo-ssl-connection-fails)

以上がPHP で SSL 経由でリモート MySQL サーバーに安全に接続するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート