phpで証明書付きのSSL通信を行おうとしているですが、証明書をどうやって使えば良いのかが分かりません。

以下のようにすると$fpにちゃんと値は返ってくるのですが、この後、証明を使う方法が分かりません。
証明書は同じフォルダに pkcs12.pfx のようなファイル名で置いています。
SSLeayモジュールを使わないとできないのでしょうか?

$fp = fsockopen('https://www.test.com/');

回答の条件
  • 1人2回まで
  • 登録:2008/04/25 14:34:07
  • 終了:2008/04/26 15:30:22

回答(3件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332008/04/25 15:39:40

ポイント20pt

PHPでSSL通信する場合は、直接、電子証明書には触れません。fsockopenなどの関数がSSL通信に対応していることが必要です。

具体的な確認手順は「PHPでSSL通信する時の注意点」を参照ください。

この記事に補足すると、OpenSSLが有効なら、phpinfoの openssl の項目に enable という表示があります。


また、OpenSSLの入手方法と使い方については「OpenSSL」を参照ください。

id:MrB

ありがとうございます。&私の書き方が悪くてすみません。openssl自体は有効です。ただ、fsockopenだけでは、証明書がないため、HTTPリクエストをしてもHTTPレスポンスが返ってこないのです。perlの場合は、環境変数HTTPS_PKCS12_FILE、HTTPS_PKCS12_PASSWORDを設定して、通信を行えばできたのですが、PHPだとどうするのかと思って、質問させて頂きました。証明書が要らないSSLだとfsockopenだけでできるんですけどね。

2008/04/25 21:02:36
id:ken33jp No.2

ken33jp回答回数928ベストアンサー獲得回数132008/04/26 01:59:14

ポイント10pt

>SSLeayモジュールを使わないとできないのでしょうか?

YES

id:MrB

ありがとうございます。

2008/04/26 15:28:34
id:pahoo No.3

pahoo回答回数5960ベストアンサー獲得回数6332008/04/26 10:49:57

ポイント100pt

perlの場合は、環境変数HTTPS_PKCS12_FILE、HTTPS_PKCS12_PASSWORDを設定して、通信を行えばできたのですが

SSLクライアント認証を行いたいというご質問ですね。

PHPではcurl関数群を使うのが一般的です。まず、PKCS#12形式証明書をPEM形式に変換する必要があります。

下記サイトを参考にしてください。

  • [PHP-users 24529 【お願いします】クライアント認証→外部サーバーのCGIを起動の方法]
  • [PHP-users 16578SSLのクライアント認証方法]
id:MrB

そうです。すみません。質問の仕方がおかしかったですね。

fsockopenでやりたかったので、1つ目の方法を試してみたのですが、PEM形式まではできたのですが、最終的に、通信が行えませんでした。

2つ目のcurlを試してみます。色々とありがとうございました。

2008/04/26 15:28:31

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません