web-dev-qa-db-ja.com

ワイルドカード* .localhost SSL、NginxおよびChrome

*.localhostへのNginxプロキシリクエストで、HTTPおよびHTTPSのワイルドカードlocalhost:3000を設定しようとしました。 DNSmasqは、*.localhost127.0.0.1に解決するために使用されます。

HTTPではすべて正常に動作しますが、Google ChromeではHTTPS接続で次のエラーが発生します。

There are issues with the site's certificate chain (net::ERR_CERT_COMMON_NAME_INVALID).

証明書は、設定を介してChromeに追加した自己署名証明書であり、次のコマンドで生成されました。

openssl req -x509 -sha256 -newkey rsa:2048 -keyout localhost.key -out localhost.crt -days 3650 -nodes

Subjectは次のとおりです。

Subject: C=AU, ST=Western Australia, L=Perth, O=Zephon, CN=*.localhost

私のNginx構成は次のとおりです。

server {
    listen       80;
    listen       443 ssl; 

    server_name  localhost;

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

    location / {
        proxy_pass          http://localhost:3000;
        proxy_http_version  1.1;
        proxy_set_header    Host             $Host;
        proxy_set_header    Upgrade          $http_upgrade;
        proxy_set_header    Connection       "upgrade";
        proxy_set_header    X-Real-IP        $remote_addr;
        proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header    X-Client-Verify  SUCCESS;
        proxy_set_header    X-Client-DN      $ssl_client_s_dn;
        proxy_set_header    X-SSL-Subject    $ssl_client_s_dn;
        proxy_set_header    X-SSL-Issuer     $ssl_client_i_dn;
        proxy_read_timeout 1800;
        proxy_connect_timeout 1800;
    }
}
5
thomasfedb

つまり、結局のところ、Chromeが受け入れる*.localhostの証明書を作成することはできません。

私の解決策は、代わりに*.dev.localhostを使用するように変更することでした。

5
thomasfedb

それは実際に完全に可能です。それが何でないかは、特によく文書化されています。

https://letsencrypt.org/docs/certificates-for-localhost/#making-and-trusting-your-own-certificates は、独自のローカルホスト証明書を生成する方法を示しています

openssl req -x509 -out localhost.crt -keyout localhost.key \
  -newkey rsa:2048 -nodes -sha256 \
  -subj '/CN=localhost' -extensions EXT -config <( \
    printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")

次に、ワイルドカード証明書に署名する追加機能に必要なものを調べます。これは*.プレフィックス(globワイルドカード構文) source

自己署名証明書のインストールは linuxに関するstackoverlow の別の場所に記載されています

Windows IDK、Mac IDC

0
MrMesees