nginx SSL com domínio e curinga nus

2

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;
    }
}
    
por Joshua Boniface 20.02.2014 / 05:17

1 resposta

3

A funcionalidade X.509 que você está procurando é chamada de Subject Alternative Name (ou SAN).

Você pode ler mais sobre isso aqui: link

Você pode ler sobre como gerar um certificado com essa propriedade aqui: link

Aqui está um guia de configuração para os certificados nginx e SAN: link

    
por 20.02.2014 / 06:02