Compartilhando dois certificados SSL com os domínios curinga e raiz no nginx (mesmo servidor)

2

Eu comprei um certificado curinga e um certificado único para minha estrutura de domínio, que é:

app.example.com => single
*.app.example.com => wildcard

Ambas as rotas devem apontar para o mesmo diretório de projeto no mesmo servidor

Observação: o RapidSSL Support disse que eu tive que comprar dois como no caso de domínios clássicos example.com, o meu é app.example.com, para que o curinga não se importe com minha raiz decimal de três

Agora, preciso configurar no nginx dois certificados diferentes. Meu padrão (que funciona para meu curinga), no entanto, não "app.example.com", pois seu certificado ssl não está incluído.

server {
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;

    ssl on;
    ssl_certificate /etc/ssl/ssl_certificate.cer;  // this is my wildcard cert
    ssl_certificate_key /etc/ssl/private.key;


    root /var/www/example/public;
    index index.php index.html index.htm;

    server_name .app.example.com;

    location / {
            try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
    }
 }

 // And for redirect:
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    server_name .app.example.com;
    return 301 https://$server_name$request_uri;
}

Como posso dividir isso em dois e incluir meu novo certificado para app.example.com e manter o curinga como esse?

    
por senty 07.12.2017 / 21:54

1 resposta

3

Use dois blocos server , um para o domínio único e outro para o domínio curinga. Especifique as diretivas server_name e ssl_certificate apropriadas.

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name *.app.example.com;    
    ssl_certificate /etc/ssl/ssl_certificate1.cer;
    ssl_certificate_key /etc/ssl/private1.key;

    ...
}
server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name app.example.com;    
    ssl_certificate /etc/ssl/ssl_certificate2.cer;
    ssl_certificate_key /etc/ssl/private2.key;

    ...
}

Veja este documento para detalhes.

Você pode usar uma diretiva include para extrair uma configuração comum em cada bloco de algum outro arquivo.

    
por 07.12.2017 / 23:27