web-dev-qa-db-ja.com

OpenSSL SSL_connect:api.amazonalexa.com:443に関連するSSL_ERROR_SYSCALL

私はSkillManagement APIを機能させようとしてきましたが、今朝は何も変更せずに新しい障害にぶつかりました。 「昨夜、ユーザーはこの操作エラーに同意していません」というメッセージが表示されましたが、今朝は何も変更せずに、次のようなカールログを取得しています。

昨夜と同じコードでAPIをヒットしようとすると、次のようになります。

string(513) "
* Hostname api.amazonalexa.com was found in DNS cache
* Trying 54.239.28.187...
* TCP_NODELAY set
* Connected to api.amazonalexa.com (54.239.28.187) port 443 (#0)
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
* CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none
* OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to api.amazonalexa.com:443
* stopped the pause stream! * Closing connection 0 "

これが私が使用しているコードです:

ob_start();  
$out = fopen('php://output', 'w');

// exchange the access token for list of skills
$c = curl_init('https://api.amazonalexa.com/v0/skills/');
curl_setopt($c, CURLOPT_HTTPHEADER, array(
  'Authorization: ' . $access_token,
  'Accept: application/json',
  'Content-Type: application/x-www-form-urlencoded;charset=UTF-8'
));
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($c, CURLOPT_VERBOSE, true);
curl_setopt($c, CURLOPT_STDERR, $out);
curl_setopt($c, CURLOPT_POST, 1);

$r = curl_exec($c);
curl_close($c);
fclose($out);
$debug = ob_get_clean();
var_dump($r);
echo "<BR><BR>";
var_dump($debug);
$d = json_decode($r);

この場合、$ rはbool(false)を生成し、$ dはNULLを出力します。それが違いを生むなら、私はGodaddyでサーバーをホストします。私はまだAmazonでログインにアクセスしてアクセストークンを取得することができます。したがって、ホスティングの問題ではないようです。

4
Optimus

エラートレースによると、接続にSSLエラーがあります。ホストされているエンドポイントに有効なHTTPS認定がないか、HTTPS構成が正しくないという最も明白な理由。これは、ブラウザまたはcurlリクエストを介してエンドポイントに到達できる場合に簡単にテストできます。

1
Juned Ahsan