質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

解決済

NginxのSSL化について

tomato513
tomato513

総合スコア12

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

2回答

0グッド

1クリップ

7989閲覧

投稿2018/08/24 08:53

編集2018/08/24 10:17

初めて質問させていただきます。
不慣れなためもしかしたら失礼あるかもしれませんがご容赦ください。

前提・実現したいこと

さくらVPSサーバーにてSSLを導入し、Webサイトの構築を行いたいのですが、
手順に従い、SSLを設定したところ、エラーが表示され接続できません。
サーバー証明書と中間証明書の不備が濃厚ですが、
vim でssl.crtを作成し、それぞれ貼り付けして保存したため、誤字脱字は考えられません。
一応さくらVPSのヘルプにもメールを送っていますが、もしかしたら設定に不備があるかもしれないと思い
こちらに投稿させていただきました。

発生している問題・エラーメッセージ

このサイトは安全に接続できません sample-web.com から無効な応答が送信されました。 ERR_SSL_PROTOCOL_ERROR

該当のソースコード

nginx

1#nginx.conf 2user nginx; 3worker_processes auto; 4worker_rlimit_nofile 100000; 5 6 7error_log /var/log/nginx/error.log warn; 8pid /var/run/nginx.pid; 9 10 11events { 12 worker_connections 2048; 13 multi_accept on; 14 use epoll; 15} 16 17 18http { 19 include /etc/nginx/mime.types; 20 default_type application/octet-stream; 21 22 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 23 '$status $body_bytes_sent "$http_referer" ' 24 '"$http_user_agent" "$http_x_forwarded_for"'; 25 26 access_log /var/log/nginx/access.log main; 27 server_tokens off; 28 sendfile on; 29 #tcp_nopush on; 30 31 keepalive_timeout 10; 32 client_header_timeout 10; 33 client_body_timeout 10; 34 reset_timedout_connection on; 35 send_timeout 10; 36 limit_conn_zone $binary_remote_addr zone=addr:5m; 37 limit_conn addr 100; 38 39 gzip on; 40 gzip_http_version 1.0; 41 gzip_disable "msie6"; 42 gzip_proxied any; 43 gzip_min_length 1024; 44 gzip_comp_level 6; 45 gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript application/json; 46 open_file_cache max=100000 inactive=20s; 47 open_file_cache_valid 30s; 48 open_file_cache_min_uses 2; 49 open_file_cache_errors on; 50 51 52 include /etc/nginx/conf.d/*.conf; 53}

nginx

1server { 2 listen 443 ssl; 3 ssl_certificate /etc/nginx/ssl/ssl.crt; # crt file 4 ssl_certificate_key /etc/pki/tls/certs/server.key; # secret key 5 server_name sample-web.com; 6 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 7 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA; 8  ssl_prefer_server_ciphers on; 9 location / { 10 root /usr/share/nginx/html; 11 index index.html; 12 } 13 14 15}

試したこと

Nginxの設定に不備があるかどうか

linux

1nginx -t 23nginx: the configuration file /etc/nginx/nginx.conf syntax is ok 4nginx: configuration file /etc/nginx/nginx.conf test is successful

httpでは接続できるか

nginx

1server { 2 listen 80; 3 server_name sample-web.com; 4 5 charset koi8-r; 6 access_log /var/log/nginx/host.access.log main; 7 8 9 10 location / { 11 root /usr/share/nginx/html; 12 index index.html index.htm; 13 } 14} 1516index.htmlが表示されました

firewallの設定の確認

linux

1firewall-cmd --list-all 2public (active) 3 target: default 4 icmp-block-inversion: no 5 interfaces: eth0 6 sources: 7 services: dhcpv6-client ssh-51110 http https 8 ports: 9 protocols: 10 masquerade: no 11 forward-ports: 12 source-ports: 13 icmp-blocks: 14 rich rules:

以下頂いた回答から行った事です。

####opensslでの確認

linux

1CONNECTED(00000003) 2139875657488272:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:794: 3--- 4no peer certificate available 5--- 6No client certificate CA names sent 7--- 8SSL handshake has read 7 bytes and written 289 bytes 9--- 10New, (NONE), Cipher is (NONE) 11Secure Renegotiation IS NOT supported 12Compression: NONE 13Expansion: NONE 14No ALPN negotiated 15SSL-Session: 16 Protocol : TLSv1.2 17 Cipher : 0000 18 Session-ID: 19 Session-ID-ctx: 20 Master-Key: 21 Key-Arg : None 22 Krb5 Principal: None 23 PSK identity: None 24 PSK identity hint: None 25 Start Time: 1535102954 26 Timeout : 300 (sec) 27 Verify return code: 0 (ok) 28--- 29

こちら(http://d.hatena.ne.jp/rougeref/20170519)を元に
hostsに172.16.0.1(WebサイトのIPアドレス) sample-web.comを追記
再度opensslを実行->同じエラーが発生しております。

####秘密鍵、CSR、証明書に不備がないかどうか

linux

1CSRのModulusを確認 2openssl req -in server.csr -modulus -noout 3SSLサーバ証明書のModulusを確認 4openssl x509 -in ssl.crt -modulus -noout 5秘密鍵のModulusを確認 6openssl rsa -in server.key -modulus -noout 7整合性確認いたしました。 8 9秘密鍵が破損していないことの確認 10openssl rsa -in server.key -check -noout 11問題なし 12 13SSL証明書内容確認 14openssl x509 -in ssl.crt -text -noout 15 16Subject: CN=sample-web.com 17CPS: https://www.digicert.com/CPS 18証明書の設定に不備見られませんでした

補足情報(FW/ツールのバージョンなど)

CentOS Linux release 7.5.1804 (Core)
nginx version: nginx/1.15.2
ssl ラピッドSSL digicert 8月18日新規発行

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答2

1

自己解決

ご覧いただきありがとうございます。
一応解決したため、手順などをこちらに記載させていただきます。
あまり参考になるかわかりませんが、もし同じ症状の方がいらっしゃいましたら試して見てください。

まず/etc/nginx/conf.d/***.confを再度編集して見ました。

nginx

1server { 2 listen 443 ssl; 3 ssl_certificate /etc/nginx/ssl/ssl.crt; 4 ssl_certificate_key /etc/pki/tls/certs/server.key; 5 server_name sample-web.com; 6 ssl_session_cache shared:SSL:1m; *追加 7 ssl_session_timeout 5m; *追加 8 ssl_ciphers HIGH:!aNULL:!MD5; *追加 9 ssl_prefer_server_ciphers on; *追加 10 ssl_protocols TLSv1.1 TLSv1.2; *追加 11 ssl_stapling on; *追加 12 resolver 000.000.000.000 valid=300s; *追加(サーバーのIPアドレスを入力してください。) 13 14 location / { 15 root /usr/share/nginx/html; 16 index index.html index.htm; 17 } 18 19 20}

そしてnginx -s reload ではなく、nginx -s stop で一度nginxを停止させ、
再度 nginx で起動させると無事httpsでhtml.indexが表示されました。

なかなかふわふわした自己解決になってしまいましたが、無事にhttps化できたのでよかったです。
daisuke 7様、本当にありがとうございました。

投稿2018/08/24 12:03

tomato513

総合スコア12

daisuke7👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

0

openssl s_clientコマンドで証明書を確認してみてはどうでしょう?

例: opensslコマンドで証明書情報を確認したい。

投稿2018/08/24 09:00

daisuke7

総合スコア1563

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

tomato513

2018/08/24 09:09

御回答ありがとうございます。 確認してみましたところ、 CONNECTED(00000003) 140242547742608:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:794: --- no peer certificate available --- No client certificate CA names sent --- SSL handshake has read 7 bytes and written 289 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 Krb5 Principal: None PSK identity: None PSK identity hint: None Start Time: 1535101564 Timeout : 300 (sec) Verify return code: 0 (ok) --- Verify return code: 0となっていますが、 前半の140242547742608:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:794: が気になるところです。 一度調べてみます
daisuke7

2018/08/24 09:33

「Cipher : 0000」なので、接続できていないですね。 ふと気づいたのですが、 ssl on; してないだけ、とか。
tomato513

2018/08/24 09:39

ありがとうございます。 Cipher : 0000は接続できていないという意味なのですね。 知りませんでした。無知で申し訳ないです。 ssl on ; は非推奨?になったとリファレンスかどこかでみた覚えがあり、ポート部分に 443 ssl.としています。 ssl on ; 記述してreloadしましたがnginx: [warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead in /etc/nginx/conf.d/default.conf:21とやはり、私の使用しているNginxのverでは非推奨みたいです。
daisuke7

2018/08/24 09:44

SSL/TLS接続の場合、まずクライアントとサーバ間でお互いに使える暗号スイートを噛み合わせるネゴシエーションを行いますが、どの組み合わせもだめとなると Cipher : 0000 となります。 成功した場合は、 Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES256-GCM-SHA384 みたいな感じで、選択した暗号スイートが表示されます。
tomato513

2018/08/24 10:07

openssl x509 -in ssl.crt -text -nooutで確認したところ、 digicert署名になっておりました。 質問の情報に追記しておきます。ありがとうございます。 ついでに、秘密鍵、CSR、証明書の3点をopenssl ... nooutで確認、ファイルの破損なども確認しましたが、 秘密鍵、CSR、証明書に整合性が確認できました。(この時点で私側に不備があることが確定?しました笑)

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。