A maneira correta de implementar o SSL no localhost

10

Alguém poderia sugerir uma maneira moderna de gerar certificados autoassinados a serem implementados no host local, que seria aceito pelo Chrome e Mozilla?

Eu tentei a geração openssl, no entanto, a Mozilla reclama que o emissor não é confiável.

Centos 7, nginx

Tarlan Mammadzada
fonte
Use Vamos criptografar .
Thomas
2
É de domínio local, Vamos criptografar só funciona em registrada
Tarlan Mammadzada
2
Navegue até o site, clique em avançado e clique em adicionar exceção.
Richard Smith
1
Você quer que ele pareça seguro, precisará de uma autoridade de certificação autoassinada e a utilizará para assinar o certificado do servidor e, em seguida, poderá adicioná-la ao repositório de confiança do navegador.
Richard Smith
1
Parece que o Firefox parou de aceitar certificados autoassinados. Como o @RichardSmith diz, você precisará usar uma Autoridade de Certificação para gerar seus certificados. Antes de mergulhar nesse campo minado, talvez você precise estudar as implicações de segurança de operar sua própria Autoridade.
garethTheRed

Respostas:

9

Aviso: Antes de mergulhar no campo minado de administrar sua própria Autoridade de Certificação, pode ser necessário estudar as implicações de segurança!

Mas, se necessário, continue lendo para obter uma autoridade de certificação rápida e suja que fornecerá https://localhost/uma mensagem de aviso ...

Crie o seguinte arquivo de texto:

# OpenSSL configuration for Root CA

[ req ]

prompt             = no
string_mask        = default

# The size of the keys in bits:
default_bits       = 2048
distinguished_name = req_distinguished_name
x509_extensions    = x509_ext

[ req_distinguished_name ]

# Note that the following are in 'reverse order' to what you'd expect to see.

countryName = gb
organizationName = Test
commonName = Test Root CA

[ x509_ext ]

basicConstraints=critical,CA:true,pathlen:0
keyUsage=critical,keyCertSign,cRLSign

Salve como root.cnfe gere a solicitação com:

$ openssl req -x509 -new -keyout root.key -out root.cer -config root.cnf

Isso criará seu certificado de CA raiz ( root.cer) e sua chave privada de CA raiz ( root.key), que você deve manter privada. Ele solicitará uma senha para a chave privada - verifique se você escolhe uma senha forte.

Agora crie um arquivo de configuração para o certificado do servidor:

# OpenSSL configuration for end-entity cert

[ req ]

prompt             = no
string_mask        = default

# The size of the keys in bits:
default_bits       = 2048
distinguished_name = req_distinguished_name

x509_extensions    = x509_ext

[ req_distinguished_name ]

# Note that the following are in 'reverse order' to what you'd expect to see.

countryName = gb
organizationName = Test
commonName = localhost

[ x509_ext ]

keyUsage=critical,digitalSignature,keyAgreement

subjectAltName = @alt_names

# Multiple Alternate Names are possible
[alt_names]
DNS.1 = localhost
# DNS.2 = altName.example.com

Salve-o como server.cnfe gere a solicitação com:

openssl req -nodes -new -keyout server.key -out server.csr -config server.cnf

O acima irá gerar outra chave privada ( server.key) que você deve proteger. Nesse caso, a chave não é protegida por senha, mas você pode adicionar uma senha removendo a -nodesopção.

Por fim, assine a solicitação com sua nova CA raiz e extensões do server.cnfarquivo (por conveniência):

$ openssl x509 -req -in server.csr -CA root.cer -CAkey root.key -set_serial 123 -out server.cer -extfile server.cnf -extensions x509_ext

Nota: escolha qualquer número aleatório para a -set_serialopção.

Ele solicitará a senha digitada quando você gerou a CA raiz.

Um certificado de servidor ( server.cer) será gerado.

Agora, adicione o certificado da CA raiz ( root.cer) ao armazenamento de âncora confiável do Firefox e execute um teste com:

$ sudo openssl s_server -key server.key -cert server.cer -accept 443 -www

Nota: Você pode obter erros se já tiver um servidor em execução na porta 443. Nesse caso, pare o servidor em execução ou altere o número da porta acima para outra porta não utilizada.

Ao navegar para https://localhost(ou https://localhost:<port>se você alterou o número da porta acima) com o Firefox, agora você não vê nenhum aviso e recebe uma lista de códigos que sua instalação do OpenSSL pode oferecer.

Quando estiver satisfeito com os resultados, adicione server.keye server.cerao seu servidor da Web e configure-o de acordo.

garethTheRed
fonte
1
Há um erro de digitação; stinguished_namedeve serdistinguished_name
user281357