Então, em última análise, a resposta parece ser que você simplesmente não pode criar um certificado para *.localhost
que o Chrome aceitará.
Minha solução foi mudar para usar *.dev.localhost
, o que funcionou como um tratamento.
Eu tentei configurar um curinga *.localhost
para HTTP e HTTPS com solicitações proxy de Nginx para localhost:3000
. O DNSmasq é usado para resolver *.localhost
para 127.0.0.1
.
Tudo funciona bem para HTTP, mas as conexões HTTPS recebem o seguinte erro no Google Chrome:
There are issues with the site's certificate chain (net::ERR_CERT_COMMON_NAME_INVALID).
O certificado é um certificado autoassinado que adicionei ao Chrome por meio de configurações e foi gerado com o seguinte comando:
openssl req -x509 -sha256 -newkey rsa:2048 -keyout localhost.key -out localhost.crt -days 3650 -nodes
O Subject
é o seguinte:
Subject: C=AU, ST=Western Australia, L=Perth, O=Zephon, CN=*.localhost
Minha configuração do Nginx é a seguinte:
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;
}
}
Então, em última análise, a resposta parece ser que você simplesmente não pode criar um certificado para *.localhost
que o Chrome aceitará.
Minha solução foi mudar para usar *.dev.localhost
, o que funcionou como um tratamento.