web-dev-qa-db-ja.com

ローカルホストのNginx SSL

Nginxを使用してローカルホストでSSLを構成しようとしています。自己署名証明書を作成しました。Nginxの構成は次のとおりです。

server {
  listen 443 ssl;
  server_name localhost;

  root /usr/share/nginx/html;
  index index.html index.htm;

  ssl on;
  ssl_certificate /etc/nginx/ssl/nginx.crt;
  ssl_certificate_key /etc/nginx/ssl/nginx.key;

  ssl_session_timeout 5m;

  ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
  ssl_prefer_server_ciphers on;

  location / {
        try_files $uri $uri/ =404;
  }
}

しかし、アクセスしようとすると、次のエラーが表示されます

$ curl -i https://localhost            
  curl: (7) Failed to connect to localhost port 443: Connection refused

このエラーの考えられる原因は何でしょうか?

これは、コマンド 'netstat-tuplen'の出力です。

tcp    0     0 0.0.0.0:443     0.0.0.0:*      LISTEN     0    71662       - 
2
Sunil Antony

listenディレクティブがありません:

listen [::]:443 ssl;

これは、nginxにIPv6接続をリッスンするように指示します。既存のlistenディレクティブはIPv4接続のみをリッスンし、これはnetstat出力で確認されます。

これが必要な理由(既存のlistenディレクティブに加えて)は、localhostがIPv6アドレスに解決されるためです::1過去のIPv4アドレスに加えて127.0.0.1。ただし、IPv6は接続を確立するための推奨プロトコルです。したがって、curlはIPv6経由でnginxに接続しようとして失敗します。

もちろん、(おそらく)最終的にサイトを配置するグローバルインターネットでは、現在または近い将来、IPv6も使用する必要があります。ですから、今日はこれに備える必要があります。

1
Michael Hampton