6

私は、集中型サインオンに対して認証を行うサイトをローカルで開発しています。手順の 1 つは、アクセス トークンを取得するために https リソースに対して curl 要求を行うことです。

curl 構成の一部は次のとおりです。

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);                                         
    //curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

ご覧のとおり、CURLOPT_SSL_VERIFYHOST オプションをコメントアウトしました。私は php.net とさまざまなブログ/stackoverflow ( CURLOPT_SSL_VERIFYHOST (libcurl/openssl) を無効にすることによるセキュリティの影響) の投稿で、これらのオプションの意味を読みました。

私の開発マシンCURLOPT_SSL_VERIFYHOST 2では正常に動作しています。ubuntu 12.04 php5 パッケージで提供されているバニラ php インストールと php5-curl を使用しています。

実稼働環境 (ラックスペース クラウドサイト) ではCURLOPT_SSL_VERIFYHOST 2が機能していないため、これが問題であることを確認するために false に変更しました。ローカルホストでこれを有効にするために明示的に何もしなかったので、これを制御するディレクティブ/構成オプションがわかりません。

「機能していない」というのは、本番環境では、が に設定されているときにcurl 呼び出しがhttp_codeを返しているということです。に設定すると、ステータスコードが返されます0VERIFYHOST2FALSE200

私の質問は:

SSL_VERIFYHOSTLinux ボックスで有効にするにはどうすればよいですか?

どんな助けでも大歓迎です。ありがとうございました。

4

1 に答える 1

7

「2」の場合、SSL 証明書の共通名が使用されているホスト名と一致することを確認する必要があります。これはデフォルトであり、使用しているホスト名 (共通名) に対して SSL 証明書が適切に作成されている限り、簡単です。

PHP curl_setopt マニュアルから:

1 は、SSL ピア証明書内の共通名の存在を確認します。2 共通名の存在を確認し、それが提供されたホスト名と一致することも確認します。本番環境では、このオプションの値は 2 (デフォルト値) のままにしておく必要があります。

curl_setopt の手動入力

于 2013-03-21T15:49:48.667 に答える