2012-02-24 8 views
1

私は今、Facebookのようなhttps apiからコンテンツをプルする際にssl証明書バンドルを持つ必要があることをよく理解していると思います。しかし、私の質問は、証明書がなくても時には動作するのはなぜですか? libcurlには、この問題を単独で解決する方法があるようです。SSL証明書が断続的に動作するカールエラーが発生するのはなぜですか?

なぜ、どのように起こるのでしょうか?誰も同じ経験をしていましたか?

答えて

0

SSL証明書に関するcUrlの動作は、CURLOPT_SSL_VERIFYPEERオプションによって異なります。 PHPを使用すると仮定すると、このオプションの値を変更するには、関数curl_setoptを使用できます。

私はSSLのうわべだけの知識を持っているが、カールが、以下のように動作しているようです:0は、チェック、1つのチェック証明書が合法的である場合、および2つのチェックも意味していない証明書が正しいホスト名に発行されたかどうかを確認する 。

CURLOPT_SSL_VERIFYPEERを0に設定すると「迷惑なエラー」をオフにすることはできますが、これは誰でも可能な限り正しいサーバーに接続することを確認できないことを意味します。spoof the DNSそうすることは非常に危険です。

正式なfacebook php sdkは、CURLOPT_CAINFOを使用して独自の証明書を提供しますが、curlが独自の証明書を検証できなかった場合のみです。私はなぜfacebook SDKの開発者がこれを条件付きにするのか分からない。おそらく読書の証明書が高価かもしれないからです。

+0

こんにちは、ありがとう。 私は自分自身を正しく説明していないと思う。私が知りたいと思っているのは、あなたが設定をそのままにしておけば、デフォルトでカールはSSL証明書を探します...時にはPHP上でエラーが起きることはありませんし、何も問題なく動作します。 私の質問は次のようなものだと思います。それとも私だけですか? – royco

+0

私はこれがopensslに利用可能な、いわゆる「ルート証明書」と関係していると信じています。 debianでは、これらは/ usr/lib/ssl/certsに格納されます。 – Bart

+0

graph.facebook.com/の証明書は、DigiCert(www.digicert.com)によって発行されています。私のディレクトリには、その名前の証明書ファイルがいくつかあります(DigiCert _ *。pem)。これらのファイルを移動すると、カールがfacebook.comを認識するのを止めることはできません。おそらく証明書は何とかキャッシュされていますか? – Bart

関連する問題