PHPでクライアント証明書(CA証明書)を使ってアクセスする方法

PHPで、所有しているクライアント証明書(CA証明書)を使ってクライアント認証サイトにアクセスする方法です。 NagiosでCA証明書を利用したHTTPアクセスの可否監視プラグインを作成したくて利用しました。

まず事前にクライアント証明書(P12ファイル)からPEMファイルを作成しておく必要があります。 サーバのopensslコマンドで作成できます。

# openssl pkcs12 -in client.p12 -nodes -clcerts -out client.pem

続いて実際に作成したCA証明書(client.pem)を利用してサイトに接続してオープンする処理です。 処理にはstream_context_create関数とstream_context_set_option関数、そしてfsockopen関数を利用します。

$context = stream_context_create();
stream_context_set_option($context, ssl, local_cert, "client.pem");
$fp = fsockopen("ssl://".[対象のドメイン], 443, $errno, $errstr, 30, $context);

これでOKです。
正常に接続できたか失敗したかは $fp===false などで確認することができます。案外簡単。

コメントを残す

メールアドレスが公開されることはありません。