[解決済み】file_get_contents(): SSL 操作にコード 1 で失敗した、暗号を有効にするのに失敗した
質問
私たちのサーバーに作成したPHPページから、この特定のRESTサービスにアクセスしようとしています。 問題は、この2行に絞られました。 つまり、私のPHPページは次のようになります。
<?php
$response = file_get_contents("https://maps.co.weber.ut.us/arcgis/rest/services/SDE_composite_locator/GeocodeServer/findAddressCandidates?Street=&SingleLine=3042+N+1050+W&outFields=*&outSR=102100&searchExtent=&f=json");
echo $response; ?>
2行目で次のようなエラーが出てページが終了します。
- 警告:file_get_contents()。SSL 操作はコード 1 で失敗しました。 OpenSSL エラーメッセージ: error:14090086:SSL ルーチン:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in ...phpの2行目
- 警告:file_get_contents(): 暗号を有効にするのに失敗しました。 2行目
- 警告 ファイル_get_contents(
https://maps.co.weber.ut.us/arcgis/rest/services/SDE_composite_locator/GeocodeServer/findAddressCandidates?Street=&SingleLine=3042+N+1050+W&outFields=*&outSR=102100&searchExtent=&f=json
): ストリームを開くのに失敗しました: ...php の 2 行目で操作が失敗しました。
Gentooのサーバーを使用しています。 最近、PHPのバージョンを5.6にアップグレードしました。 この問題が発生したのは、アップグレード後でした。
のようなアドレスでRESTサービスを置き換えてみるとわかりました。
https://www.google.com
私のページは正常に動作しています。
以前の試行で、私は
“verify_peer”=>false
で、これを file_get_contents の引数として渡すと、ここに書かれているようになります。
file_get_contents ignoring verify_peer=>false?
しかし、作者が指摘したように、それは何の違いもなかった。
サーバー管理者の一人に、php.iniファイルにこれらの行が存在するかどうか尋ねてみました。
- 拡張子=php_openssl.dll
- allow_url_fopen = On
Gentooなので、ビルド時にopensslがコンパイルされ、php.iniファイルには設定されていないとのことでした。
また、確認したところ
allow_url_fopen
は動作しています。 この問題の特殊性から、ヘルプのための情報があまり見つかりません。 どなたかこのようなことに遭遇した方はいらっしゃいますか? ありがとうございます。
解決方法は?
このリンクは非常に役に立ちました。
http://php.net/manual/en/migration56.openssl.php
PHP 5.6 の open ssl に関する変更点を説明した公式ドキュメントです。 ここから、もう一つfalseに設定すべきパラメータがあることを知りました: "verify_peer_name"=>false
<ブロッククオート注意 これには 非常に セキュリティ上、重要な意味を持ちます。検証を無効にすることで、潜在的に MITM攻撃者 は、無効な証明書を使用してリクエストを盗聴することができます。ローカルな開発でこれを行うことは有用かもしれませんが、実運用では他の方法を使うべきです。
というわけで、私の作業コードはこんな感じです。
<?php
$arrContextOptions=array(
"ssl"=>array(
"verify_peer"=>false,
"verify_peer_name"=>false,
),
);
$response = file_get_contents("https://maps.co.weber.ut.us/arcgis/rest/services/SDE_composite_locator/GeocodeServer/findAddressCandidates?Street=&SingleLine=3042+N+1050+W&outFields=*&outSR=102100&searchExtent=&f=json", false, stream_context_create($arrContextOptions));
echo $response; ?>
関連
-
[解決済み】PHP - 構文エラー、予期しないT_CONSTANT_ECAPSED_STRING [閉店].
-
[解決済み】Fatal error: 未定義の関数 sqlsrv_connect() を呼び出した。
-
[解決済み】不明なMySQLサーバーのホスト
-
[解決済み】pdo - 非オブジェクトのメンバー関数prepare()への呼び出し【重複】。
-
[解決済み】「Fatal error: Class 'MySQLi' not found "を解決するには?
-
[解決済み】 libapache2-mod-php7 パッケージが見つからない。
-
[解決済み】file_get_contents( )が動作しない。
-
[解決済み] 入力ファイルが指定されていない
-
[解決済み】chromeの「net : Failed to load resource: net::ERR_SPDY_PROTOCOL_ERROR" は何がおかしいのか?
-
[解決済み] SSLエラー SSL3_GET_SERVER_CERTIFICATE:証明書の検証に失敗しました。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】phpのob_start()の使い道は?
-
[解決済み】 PHP 未定義関数の呼び出し
-
[解決済み】メンバ関数をnullで呼び出す?
-
[解決済み】mysqli_select_db()は、パラメータ1がmysqliであることを期待し、文字列が与えられる。
-
[解決済み】In_arrayが動作しない。
-
[解決済み】Fatal error: mysqli_result 型のオブジェクトは使用できません [終了] 。
-
[解決済み] Forbidden :このサーバーの /phpmyadmin にアクセスする権限がありません。
-
[解決済み] SSLエラー SSL3_GET_SERVER_CERTIFICATE:証明書の検証に失敗しました。
-
[解決済み] SOAP-ERROR: WSDLのパース: からロードできませんでした - しかし、WAMPで動作します。
-
[解決済み】HTTPSとSSL3_GET_SERVER_CERTIFICATE:証明書の検証に失敗、CAは問題なし