OPENSSL 警告: 特定の HTTPS URL の「暗号化を有効にできませんでした」
この問題は、file_get_contents を使用して特定の HTTPS URL にアクセスしようとすると発生します。 openssl 拡張機能を有効にしているにもかかわらず、() 関数が返されます。この関数は、必要な暗号化操作を実行できないことを示すエラー メッセージ「警告: 暗号化の有効化に失敗しました」を返します。
この問題の根本原因は、問題のある Web サイトで使用されているセキュリティ プロトコルにあります。この場合、Web サイトは、時代遅れで脆弱なプロトコルである SSLv3 を利用しています。 openssl のデフォルト設定は、セキュリティ上の理由から、デフォルトでは SSLv3 をサポートしていません。
この問題を解決し、Web サイトからコンテンツを正常に取得するには、回避策が必要です。 1 つのオプションは、curl_setopt() 関数を使用して、使用する SSL バージョンを手動で指定することです。これは、CURLOPT_SSLVERSION オプションを 3 (SSLv3 に対応) に設定することで実現できます。
<code class="php">function getSSLPage($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSLVERSION,3); $result = curl_exec($ch); curl_close($ch); return $result; } var_dump(getSSLPage("https://eresearch.fidelity.com/eresearch/evaluate/analystsOpinionsReport.jhtml?symbols=api"));</code>
Windows で発生する可能性のあるもう 1 つの潜在的な問題は、ルート証明書にアクセスできないことです。これに対処するには、ルート証明書をダウンロードし、CURLOPT_CAINFO および CURLOPT_SSL_VERIFYPEER オプションを使用してその場所を手動で指定することをお勧めします。
<code class="php">curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/certs/cacert.pem"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);</code>
これらの回避策を実装すると、問題のある証明書に正常にアクセスしてコンテンツを取得できるようになります。 openssl を使用したウェブサイト
以上がOpenSSL を使用して HTTPS URL にアクセスするときに発生する「警告: 暗号化を有効にできませんでした」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。