ぷ~ろぐぷ~ろぐ身辺雑記、アニメ・マンガ、Jリーグ(特に新潟)のこととか。2014PHPメモ037:cURLでHTTPSなサイトにアクセスするPHPで外部のWebサービスを利用するため、POSTメソッドのHTTPリクエストを送信する処理について調べた。ステータスコードを取ることはできるようだ。以外の方法を探して下記のサイトを見つけた。curl"でググるとこれ以外にもたくさん参考になるサイトが出てくる。blogcURLが使える環境だったので「cURL版」をベースに、GETは必要ないので不要な部分を削った関数を作成。$res_data;}これを利用して下記のようなコードによりHTTPSでBASIC認証ありのリクエストを送ってみた。接続先は他社Webサービスのテスト環境。URLは適当に書き換えてある。これならエラーにならない。$res_data;}しかし、うまくいかなかった。いうのはありえないので、HTTPで通信する以前でエラーになっているようだ。とマッチするのでは?よくわからない。FALSE);を追加してサーバー証明書の検証をしないようにしたところ、レスポンスが帰ってきてステータスコードは200番台、想定どおりの動きになった。本番では証明書の検証はしないというのは、まずいような。エラーの原因はサーバ側かクライアント側か。自分が作っている方がこちらがHTTPクライアントである。いうことWEBブラウザと同様にクライアント証明書が必要じゃないか、という気がして調べた。cURLのサイトに証明書が置いてあるので、それを設定するということが書いてあったので同じようにやってみた。証明書を持ってきてサーバ上に置き、下記のコードを追加。'/var/www/ca/cacert.pem');しかし、これでも同じエラーが出た。22:30追記エラーが解消した。そっちならエラーにならないかも。」と回答があったので、そのように変更したところ、エラーが発生しなくなった。よる設定による証明書関連の設定していない。クライアント証明書を設定しておらず、サーバー証明書の検証はしているはず。マッチするということだろうか。ホスト名にアンダースコアは使えないはずだが。cURLではデフォルトでこの証明書をクライアント証明書として使っているのだろうか?問題は解決したが、またわからないことが出てきた。テクノポップのカリスマ。