Verificando a configuração HTTPS no Apache / Nginx antes de usar

3

Você acabou de receber um novo certificado HTTPS (SSL / TLS) e o que você espera que sejam os Certificados Intermediários corretos.

Isso é configurado no Apache com:

SSLCertificateKeyFile /etc/ssl/www.example.com.key
SSLCertificateChainFile /etc/ssl/www.example.com.chn
SSLCertificateFile /etc/ssl/www.example.com.crt

Ou no Nginx com:

ssl_certificate_key /etc/apache2/ssl/www.example.com.key;
ssl_certificate /etc/apache2/ssl/www.example.com.pem;

Lembrar apachectl configtest apenas verifica se esses arquivos existem; e nginx -t "falhará se o certificado do site não for o primeiro no arquivo crt e também se a chave estiver errada" (obrigado Drifter104 ).

Então, como você pode verificar tudo antes de reiniciar?

Possíveis problemas

  1. Você tem os Intermediários incorretos (por exemplo, GeoTrust lista todos os seus Intermediários em uma página ).

  2. Você acidentalmente misturou o arquivo do Certificado Intermediário com o arquivo de certificado do seu site.

  3. Você incluiu o Certificado Raiz (afetando o desempenho, pois isso envia dados desnecessários).

  4. Está faltando um ou mais certificados intermediários.

  5. O certificado é para a chave errada.

  6. Você deixou esses arquivos legíveis por qualquer pessoa no servidor (por exemplo, chmod 644 ).

  7. Você está usando o certificado errado (o domínio não está em CN ou SAN )

Alguns pontos de partida

Extraindo informações sobre os arquivos de chave, CSR ou certificado:

openssl rsa -check -in "www.example.com.key";
openssl req -text -noout -verify -in "www.example.com.csr";
openssl x509 -text -noout -in "www.example.com.crt";

Obtendo o hash da chave pública com o sha256 (por exemplo, para configurar o HPKP ):

openssl rsa  -in "www.example.com.key"                             -pubout -outform der | openssl dgst -sha256 -binary | openssl enc -base64
openssl x509 -in "www.example.com.chn" -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64
openssl req  -in "www.example.com.csr" -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64

openssl s_client -connect www.example.com:443 | openssl x509 -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64

É possível validar via SSL Labs , mas somente quando você começar a usar essa configuração.

    
por Craig Francis 01.04.2016 / 18:25

1 resposta

0

Existe um bom script de linha de comando do Linux testssl.sh que você pode usar para essa finalidade. Eu usei isso para outros protocolos também (por exemplo, FTPS).

Como verificação final, ainda vou usar o Teste do servidor SSL . Ele gera um resultado de teste bonito que você pode encaminhar para os clientes ;-).

    
por 17.08.2017 / 10:42