1. ホーム
  2. apache

[解決済み】SSL接続が確立できません。SSL証明書を修正するにはどうしたらいいですか?

2022-01-27 12:34:04

質問内容

私は、以下のことを試みています。 wget を自分のボックスにコピーすると、wgetの内部アドレスになりえません(他の開発者がそう言っています)。

wgetすると、こうなります。

wget http://example.com
--2013-03-01 15:03:30--  http://example.com/
Resolving example.com... 172.20.0.224
Connecting to example.com|172.20.0.224|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://www.example.com/ [following]
--2013-03-01 15:03:30--  https://www.example.com/
Resolving www.example.com... 172.20.0.224
Connecting to www.example.com|172.20.0.224|:443... connected.
OpenSSL: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
Unable to establish SSL connection.

証明書の設定が適切でないためだと思います。opensslを使用しています。

openssl s_client -connect example.com:443
CONNECTED(00000003)
15586:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:588:

一方、別のサイトで同じコマンドを実行すると、証明書全体が表示されます。

おそらく、そのドメインのApacheのconfファイルにssl証明書がセットアップされていないのでは?

その場合、バーチャルホストに何を指定すればいいのでしょうか?また --no-check-certificate というのも、そんなことはしたくないので?

どのように解決するのですか?

<ブロッククオート

SSL23_GET_SERVER_HELLO:unknown protocol

このエラーは、OpenSSLが以下のようなものを受け取ったときに発生します。 ServerHello を、サーバから理解できるプロトコルのバージョンに変換してください。 これは、サーバーがプレーンな(暗号化されていない)HTTPで応答した場合に起こります。 また、サーバーが例えば TLS 1.2 しかサポートしておらず、クライアントがそのプロトコルのバージョンを理解していない場合にも起こりえます。 通常、サーバーは少なくともSSL 3.0 / TLS 1.0に下位互換性がありますが、この特定のサーバーは(実装や設定によって)そうでない可能性があります。

を渡そうとしたのかどうか不明です。 --no-check-certificate とか、そうでないとか。 それでうまくいくのなら、むしろ驚きです。

簡単なテストは wget (またはブラウザ)にリクエストして http://example.com:443 (注 http:// ではなく https:// ); これが動作する場合、SSLはポート443で有効になっていません。 さらにデバッグするには openssl s_client と共に -debug このオプションは、エラーメッセージの直前に、OpenSSL が解析できなかったサーバーレスポンスの最初の数バイトをダンプします。 これは問題を特定するのに役立つかもしれません。特にサーバーが ServerHello メッセージを表示します。 OpenSSL が正確に何を期待しているかを知るには、ソースをチェックしてください。 SSL_R_UNKNOWN_PROTOCOLssl/s23_clnt.c .

いずれにせよ、apacheのエラーログを見ることでも、何らかのヒントが得られるかもしれません。