Isso está se tornando um problema chato que espero que alguém possa me ajudar.
Para começar, eu corro minha própria CA, então estou fazendo certificações auto-assinadas; Eu posso fazer qualquer coisa que eu precisar com eles usando o openssl.
Eu tenho um domínio, example.com e um servidor Web executando nginx, e estou tentando configurar uma situação de modo que eu redirecione:
http://example.com -> http://www.example.com
e
httpS://example.com -> httpS://www.example.com
Meu problema não é fazer com que o nginx faça o que eu preciso; ele faz, seja com reescritos ou redirecionamentos. Atualmente, eu tenho um único bloco de servidor com um se reescrever nele por simplicidade (sim, se é mal, eu sei!). Meu problema é o certificado SSL.
Se eu gerar um certificado normal de domínio único para "example.com", recebo um erro de certificado com "www.example.com". OK, então eu vou fazer um curinga para "* .example.com"! Exceto agora eu recebo um erro de certificado para o domínio nu. As razões para isso fazem sentido para mim, mas ainda quero combiná-las em um certificado e um bloco de servidor nginx, se possível. Então, tentei criar um CSR com subjectAltName de "DNS: example.com, DNS: *. Example.com". Mas isso também não parece funcionar: o domínio nu funciona e redireciona, mas assim que eu atualizo, recebo um erro estranho de um certificado dizendo que "o certificado é válido apenas para example.com", enquanto na inspeção CN é para "* .example.com".
Alguém pode oferecer alguns conselhos sobre como resolver isso e criar, da maneira mais simples possível, esse conjunto completo de redirecionamentos?
E sim, eu sei que eu poderia simplesmente ignorar o link , e só ouvir SSL em www.example.com, mas o perfeccionista em eu não permite isso; Eu quero que tudo sobre este site seja completamente agnóstico para o SSL e trabalhe exatamente da mesma maneira com ou sem ele, até mesmo este redirecionamento inicial!
Editar: nginx config:
server {
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
root /var/www/example.com;
index index.html index.htm;
server_name www.example.com example.com;
ssl_certificate /etc/ssl/sites/example.com.crt;
ssl_certificate_key /etc/ssl/sites/example.com.key;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
ssl_prefer_server_ciphers on;
if ($http_host != "www*") {
rewrite ^ $scheme://www.$http_host$request_uri permanent;
}
location / {
try_files $uri $uri/ /index.html;
}
}