certificados SSL do subdomínio Nginx

4

Eu tenho um site que precisa responder em qualquer número de subdomínios arbitrários, por exemplo, client1.example.com , client2.example.com , etc. Tudo está por trás do SSL.

Eu realmente gostaria de usar o Let's Encrypt, o que, é claro, não significa certificado curinga. Existe alguma maneira de criar um único bloco server { ... } que carrega o diretório apropriado ou preciso de uma configuração separada para cada subdomínio do cliente?

Essencialmente, desejo que um bloco server responda a *.example.com , mas carregue o certificado apropriado com base no subdomínio. Os certificados são armazenados em /etc/letsencrypt/live/[subdomain].example.com/ .

    
por Rob Wilkerson 26.05.2016 / 00:57

2 respostas

0

Duas notas do meu lado:

  • AFAIK (mas, por favor, não tome isso como certo) você não pode usar variáveis em todos os lugares, incluindo ssl_certificate , porque nginx trata isso como uma string literal.

  • Mas (pensando fora da caixa): crie a Solicitação de assinatura de certificado (usando openssl ), e Coloque todos os seus domínios no campo SAN (Subject Alternative Name) . Caso você esteja usando o cliente oficial Let's Encrypt, aproveite a opção --csr para enviar seu Certificate Signing Request criado para eles. Eles analisarão o campo, validarão os domínios e, caso isso seja bem-sucedido, você receberá de volta um certificado assinado, que é válido para todos os domínios fornecidos.

    Ressalva 1: Atualmente, vamos criptografar limites para o número de domínios no campo Subject Alternative Name para 100, de acordo com esta postagem . (Não tenho certeza se isso ainda é verdade, não consegui encontrar algo "oficial".)

    Ressalva 2: O certificado é público, portanto, qualquer pessoa que inspecionar seu certificado poderá ver todos os domínios para os quais este certificado é válido. Se isso for aceitável, depende do seu caso de uso, ambiente, etc.

por 26.05.2016 / 02:22
0

Você pode usar ferramentas externas ao Nginx como sed e criar modelos para obter o que deseja:

link

Via: nginx use $ server_name no caminho ssl_certificate

    
por 27.05.2016 / 15:35

Tags