web-dev-qa-db-ja.com

Nginx SSL設定の失敗

次の手順に従って、自己署名証明書を使用してLEMPにSSLを構成しました: https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl -certificate-for-nginx-in-ubuntu-16-04

唯一の例外はdefault_serverで、これはマルチホストサーバーになるため使用できません(最終的に)

HTTPS経由でサイトを閲覧しようとするまで、プロセス全体で何も失敗しません。Secure Connection Failedで失敗し、バイパスする他のオプションはありません。 (自己署名証明書に基づくエラーが予想されますが、Firefoxには通常、「Advanced」ボタンがあります。これはバイパスできます。)

netstat -ntlpを介してサーバーに対して適切なポートが開いていることも確認しました

netstat output

エラーメッセージを表示する場合は、ここでサイトを参照できます。 https://www.azem.us/ (非実稼働であるため、実際には心配していません... )

curl -I https://www.azem.us/を実行すると、次のエラーが返されます:curl: (35) gnutls_handshake() failed: The TLS connection was non-properly terminated.

実際に私が得たのは、構成されたエラーログに何も含まれていないことです。

これを修正し、SSLでこれらのサイトにサービスを提供するにはどうすればよいですか?

注:これは、実際のCAからの適切なSSL証明書でも発生します

進行中の診断openssl s_client -connect www.azem.us:443を実行すると、興味深い情報が返されます。

CONNECTED(00000003)
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 305 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : 0000
    Session-ID:
    Session-ID-ctx:
    Master-Key:
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1474399712
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---

私はおそらく考えがずれていますが、これは証明書がサーバー上に存在しないことを意味しませんか?それらが実際に存在し、nginx.confで適切に構成されていることを確認できます。

そして:openssl s_client -verify www.azem.us:443戻り値:

verify depth is 0
connect: Connection refused
connect:errno=111

別のマシンからのnmap

Host is up (0.0043s latency).
Not shown: 998 filtered ports
PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  https

telnetは接続できますが、ポート443を試行するとすぐに接続を閉じます

構成するGIT REPO: https://github.com/kpirnie/LEMP-Command

最後にどこかに行きます...メインのnginx.confのerror_logレベルを変更し、現在ログにエラーが表示されています:2016/09/21 08:22:58 [error] 29557#29557: *4 no "ssl_certificate" is defined in server listening on SSL port while SSL handshaking, client: this.is.my.ip, server: 0.0.0.0:443

1
Kevin

多くの議論とここでの審議の後、私は問題が何であるかを見つけました。

メインのnginx.confでは、listenディレクティブをポート80443の両方に設定していました

それらを削除し、VHost構成に追加すると、機能し始めました。

2
Kevin