1. ホーム
  2. php

[解決済み】SSLピア証明書またはSSHリモートキーがOKでなかった

2022-02-22 17:44:38

質問

を使用するAPIをテストしています。 curl_exec php関数とCA証明書を使用していますが、何かがうまくいかず、少し迷っています。

apacheのVirtualHostにSSLを設定し、見た目は問題ないのですが(オープニング https:://[myVHost] ...は動作します)。

しかし、APIのcurl呼び出しでは、このようなメッセージが返されました。

  • SSL peer certificate or SSH remote key was not OK

私はSSLについてあまり経験がないので、その原因についてほとんど思い当たることがないのですが。

UPDATEしてください。

これは私がcURLリクエストで使用しているコードです。私は2行をコメントし、その値を変更しました('TODO'の行を見てください)この方法でそれは動作していますが、これは単なる回避策です....

$opts[CURLOPT_URL] = $url;
    $opts[CURLOPT_RETURNTRANSFER] = true;
    $opts[CURLOPT_CONNECTTIMEOUT] = 50;
    $opts[CURLOPT_TIMEOUT] = 100;
    $headers = array(
        'Accept: application/json',
        "User-Agent: APIXXX-PHP-Client");
    $opts[CURLOPT_HTTPHEADER] = $headers;
    $opts[CURLOPT_USERPWD] = $env->getApiKey() . ':';
    if (certificatePresent()) {

        //  $opts[CURLOPT_SSL_VERIFYPEER] = true;
        //  $opts[CURLOPT_SSL_VERIFYHOST] = 2;

        // TODO: SET IT BACK
        $opts[CURLOPT_SSL_VERIFYPEER] = 0;
        $opts[CURLOPT_SSL_VERIFYHOST] = 0;

        $opts[CURLOPT_CAINFO] = $path

      }

    curl_setopt_array($curl, $opts);

    $response = curl_exec($curl);

解決方法は?

おそらく自己署名のSSL証明書を使用しているため、CURLOPT_SSL_VERIFYPEERオプションが設定されている場合、SSL証明書は通過しません。

解決策は2つあります。

  1. 有効なSSL証明書を購入する。
  2. CurlのSSL検証を無効にする。( insecureオプションを追加 )

検証を無効にすると、ホストと本当に通信しているかどうかがわからなくなります。 ですから、どの程度のセキュリティが必要なのかによります。