Como criar um certificado ssl para vários domínios que requer a chave raiz da CA no Linux

1

Eu tenho servidor de email. Há maio domínios hospedados nele. Estou implantando o certificado SSL nele. Eu quero que quando o usuário acessar lá conta de email usando o navegador https deve mostrar que o certificado é confiável (no Chrome deve mostrar verde https não vermelho na barra de endereços).

O que eu encontrei é:
Eu tenho que criar o certificado da CA primeiro.

openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -days 1024 -out rootCA.pem

Copie-o na estação de trabalho do usuário.

Em seguida, crie um arquivo-chave usando o seguinte comando.

openssl genrsa -out device.key 2048

e arquivo csr usando esse arquivo de chave usando o comando:

openssl req -new -key device.key -out device.csr

Depois disso, assine o CSR, que exige a chave raiz da CA.

openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 500

Usando o método acima, posso criar um certificado apenas para um único domínio.
Como criá-lo para vários domínios.

    
por Yugendra 12.02.2014 / 12:24

1 resposta

3

VirtualHosts SSL baseados em nome

Esse problema ocorre se você usar vários Hosts Virtuais baseados em nome e SSL em um único endereço IP. O servidor da Web não sabe o nome do host solicitado até que o handshake SSL seja feito, porque os cabeçalhos de solicitação HTTP fazem parte do conteúdo criptografado.

Na realidade, um servidor Web como o Apache permitirá que você configure hosts virtuais SSL baseados em nome, mas sempre usará a configuração do host virtual da primeira lista (no endereço IP e na porta selecionados) para configurar o host virtual. camada de criptografia. Consulte o link para obter mais informações.

Você pode usar um certificado para vários hosts virtuais se eles estiverem no mesmo domínio usando um certificado curinga como *.example.com , que funcionará para one.example.com e two.example.com .

VirtualHosts SSL com base em nome com SNI

A solução é uma extensão do protocolo SSL chamado Server Name Indication (SNI), que permite ao cliente incluir o nome do host solicitado na primeira mensagem de seu handshake SSL. Consulte o link para obter mais informações.

O Apache precisa ser construído com o OpenSSL (com a opção TLS Extensions enable-tlsext enabled; o OpenSSL 0.9.8k e posterior tem isso habilitado por padrão)

Para verificar se sua instalação do Apache suporta o SNI, siga os seguintes passos:

Ativar NameVirtualHost para SSL em /etc/apache2/ports.conf :

<IfModule mod_ssl.c>
  NameVirtualHost *:443
  Listen 443
</IfModule>

Crie dois VirtualHosts SSL em /etc/apache2/sites-available/default-ssl

<VirtualHost *:443>
  ServerName www.example1.com
  DocumentRoot /var/www/example1
  SSLEngine on
  SSLCertificateFile    /etc/apache2/example1.com.cert
  SSLCertificateKeyFile /etc/apache2/example1.com.key
</VirtualHost>

<VirtualHost *:443>
  ServerName www.example2.com
  DocumentRoot /var/www/example2
  SSLEngine on
  SSLCertificateFile    /etc/apache2/example2.com.cert
  SSLCertificateKeyFile /etc/apache2/example2.com.key
</VirtualHost>

Ativar mod_ssl:

# a2enmod ssl

Ativar o site SSL:

# a2ensite default-ssl

Reinicie o Apache:

# /etc/init.d/apache2 restart

Agora, se você seguir o log de erros do Apache e vir a seguinte mensagem, isso significa que o SNI está integrado.

[warn] Init: Name-based SSL virtual hosts only work for clients with \
       TLS server name indication support (RFC 4366)

Caso contrário, você verá uma inicialização do Apache como You should not use name-based virtual hosts in conjunction with SSL!!

Agora, se você assinou seus dois certificados example1.com.cert e example2.com.cert com seu certificado CA, adicionou-o à lista confiável do seu navegador e seu navegador suporta SNI, você deve conseguir acessar https://www.example1.com e https://www.example2.com sem nenhum reclamações do seu navegador.

VirtualHosts SSL com base em nome com GnuTLS

O GnuTLS é uma implementação licenciada pela LGPL da Transport Layer Security, a sucessora do SSL. Com o GnuTLS, você pode criar um único certificado válido para vários domínios e domínios curinga, como este:

DNS Name: example1.com
DNS Name: *.example1.com
DNS Name: example2.com
DNS Name: *.example2.com
DNS Name: example3.com
DNS Name: *.example3.com

Veja link para um guia detalhado sobre como usar o GnuTLS.

    
por 13.02.2014 / 02:03