2011-01-11 25 views
11

私は最近、SSL証明書が更新されたサーバーにデータをポストする際に問題が発生しました。私はいくつかの調査を行い、CURLOPT_SSL_VERIFYPEERがfalseに設定されていると、投稿日が正常に処理されることがわかりました。誰かがCURLOPT_SSL_VERIFYPEERと_VERIFYHOSTの関係を説明することはできますか?また、VERIFYPEERをfalseに設定すると、安全な接続を介してデータを送信しなくなりますか?CURLOPT_SSL_VERIFYPEERがfalseの場合、データ転送は安全ではありませんか?

誰もが助けることができるおかげです。

答えて

19

接続はまだSSLで暗号化されています。あなたは、正当なものとして検証された証明書を使用するリンクではそれをしません。誰でもあなた自身のSSL証明書を作成することができます。この証明書は、ブラウザとWebサーバがサポートするあらゆるレベルで完全に受け入れ可能な暗号化を行います。

ただし、証明書の信頼性を確認できないという苦情が多くあります。これは、Joe M. Aliciousが「microsoft.com」と主張し、独自のWindows Updateホストを設定する証明書を作成するのを防ぐためです。証明書はmicrosoft.comだと言いますが、実際にmicrosoft.comとして認証されることはありません。なぜなら、Verisign(または誰でも)はその証明書を実際に発行せず、証明書に署名することです。

_VERIFYHOSTは、接続しているURLのホスト名(「microsoft.com」など)がSSL証明書に記載されていることを確認するために使用します。このオプションをfalseに設定すると、urlとcertのホスト名の不一致が無視されます(たとえば、testbox.develhost.comに開発ボックスがありますが、クライアントの実際の有効な 'example.com'証明書を使用しています)。

_VERIFYPEERは、証明書全体の検証を無効にします。これにより、自己署名証明書が機能します。それ以外の場合、SSLライブラリは証明書の発行者が有効でないことを示します。

どちらの設定にもかかわらず、接続を強制すると、SSLで暗号化されます。

+0

優れた、ありがとう、簡潔な応答のためにトン。 –

+1

[プライベートサーバーにアクセスしていない限りオフにしないでください!](http://snippets.webaware.com.au/howto/stop-turning-off-curlopt_ssl_verifypeer-and-fix-your-php -config /) – webaware

1

テストから_VERIFYHOSTと_VERIFYPEERの関係を明確にしたいと思います。

_VERIFYHOSTオプション1または2に依存するマニュアルとして共通名(CN)を確認します。この確認では、エラーメッセージの大文字と小文字が区別されます。検証自体は接続に全く影響を与えません。検証エラーが発生しても_VERIFYPEERが接続を切断または継続するために使用する結果です。

_VERIFYPEER(1)2点を確認してください。まず、CAINFOで証明書をチェックします。 curlオプションでCAINFOを指定するとその値でチェックし、そうでなければphp.iniで指定した値でチェックします。次に、_VERIFYHOSTの結果をチェックします(ケースの_VERIFYHOSTを1または2に設定します)。検証が両方の条件に合格した場合、接続は継続されます。そうしないと、接続が切断されます。

0

CURLOPT_SSL_VERIFYPEERを無効にすると、証明書の検証は行われません(CURLOPT_SSL_VERIFYHOSTの値は無視されます)。結果として、これは中間者の攻撃に対してあなたを危険にさらすことになります。つまり、安全な接続でデータを送信しなくなります。

はい、データは暗号化されていますが、それでも安全ではありません。あなたはの誰かにを送信していますが、誰には分かりません。ユーザーのアーチの敵に送信している可能性があります(慎重に暗号化して、攻撃者以外の誰もデータを読み取ることはできません)。これは悪いです。世界中のすべての暗号化は、攻撃者の公開鍵を使用して暗号化している場合はあまり効果がありません。

ボトムライン:CURLOPT_SSL_VERIFYPEERを無効にしないでください。それはあなたを危険にさらす。

cURLのSSLサポートを安全に使用するために必要なことについては、Security consequences of disabling CURLOPT_SSL_VERIFYHOST (libcurl/openssl)を参照してください。

関連する問題