2012-12-03 28 views
9

PHPを使用してサイトAからサイトBにデータをPOSTする予定です。サイトAには商用SSL証明書があります。サイトBには自己署名証明書があります。これは実行可能ですか?そうでない場合、制限をバイパスするように設定できるPHP(またはApache)の設定オプションがありますか?自己署名入りの証明書付きのPOST要求

+0

実行可能であれば、最初に試してみませんか? – samayo

+0

アプリケーションは完全ではなく、サイトBはまだ設定されておらず、自分の管理下にもありません – Aaron

答えて

18

おそらくサーバーAでカールを使用していますか?証明書の検証を無効にするためのカールのオプションがいくつかあります。これにより、自己署名証明書を通過させることができます。リンクは暗号化されますが、あなたは本当にをそのサーバBを信頼することはできませんサーバB IS:あなたは、ブラウザを求めている場合は

$ch = curl_init("https://example.com/example/path"); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
$response = curl_exec($ch); 
+5

*特定の*自己署名証明書だけを受け入れるようにPHP(またはクライアント)を設定する方法はありますか?私は、証明書をまったく検証しないよりも、これが外見上、より安全であると考えています。 –

2

これは実行可能です。 PHPでは、cURLを使用してPOSTを実行する場合は、オプションCURLOPT_SSL_VERIFYPEERCURLOPT_SSL_VERIFYHOSTをfalseに設定するだけで、証明書が自己署名されているので失敗しないようにする必要があります。

2

curlopt_ssl_verifypeer (checking the CA auth chain) 
curlopt_ssl_verifyhost (hostname/certname match checks) 

例PHPコードPOSTを実行すると、信頼されていない証明書に関する通常の警告が表示されます。

cURLを使用してPHPコード内からPOSTを実行する場合は、cURLのSSLチェックを無効にします。 related question

によると、あなたはFALSECURLOPT_SSL_VERIFYPEERCURLOPT_SSL_VERIFYHOSTを設定する必要があります。これにより、2つの主なチェックを無効にする必要があります。両方とも必須ではないかもしれませんが、これは少なくともあなたを動かすはずです。

関連する問題