web-dev-qa-db-ja.com

SSLハンドシェイクが「証明書が不明」で失敗する

現在、HTTPプロトコルを介して実行されているアプリケーションがあります。 HTTPSへの移行を目指しています。必要な変更を加えましたが、アプリケーションへのログイン中に「ピアが認証されていません」というエラーメッセージが表示されます。

私はSSLの世界にはまったく慣れていないので、Googleを起動してWiresharkトレースをキャプチャしました。通信は次のようになります。

  1. クライアントは[SYN]をサーバーに送信します。
  2. サーバーは[SYN、ACK]をクライアントに送信します。
  3. クライアントが[ACK]をサーバーに送信します。
  4. クライアントはメッセージClientHelloをサーバーに送信します。
  5. サーバーはServerHelloを送信し、次に証明書「ServerHello, Certificate, ServerHelloDone
  6. Alert 61、Level Fatal、Description:Certificate Unknown //ここで失敗。

何が問題になっているのかについてのご意見をお聞かせください。ここに行き詰まり、先へ進むことができません。

5
Pavan Dittakavi

[〜#〜]更新[〜#〜]

これは奇妙なエラーです。 Certificate Unknownには通常Alert46のコードが付き、61は付きません。

表示されている場合、SSL Alert 61Alert Protocol(RFC 5246)) に記載されていません

  enum {
      close_notify(0),
      unexpected_message(10),
      bad_record_mac(20),
      decryption_failed_RESERVED(21),
      record_overflow(22),
      decompression_failure(30),
      handshake_failure(40),
      no_certificate_RESERVED(41),
      bad_certificate(42),
      unsupported_certificate(43),
      certificate_revoked(44),
      certificate_expired(45),
      certificate_unknown(46),
      illegal_parameter(47),
      unknown_ca(48),
      access_denied(49),
      decode_error(50),
      decrypt_error(51),
      export_restriction_RESERVED(60),
      protocol_version(70),
      insufficient_security(71),
      internal_error(80),
      user_canceled(90),
      no_renegotiation(100),
      unsupported_extension(110),
      (255)
  } AlertDescription;

痕跡を見ないで、さらに調査することは困難です。

Server Helloで提供されるServer certificateがクライアントによって信頼されていないようです。

cURL.exeオプションを付けて-vを使用してこれをテストすることをお勧めします。