Eu tenho um servidor web apache, com certificados mod_ssl e SSL da letsencrypt. certbot
relatórios estão bem e não expiram. Alguns diferentes (dos meus muitos usuários) relatam que obtêm certificados SSL inválidos/expirados do servidor (e eu vi a saída wget
deles para provar isso).
Para depurar isso, quero registrar muitos detalhes de cada conexão SSL. Eu gostaria de registrar, para cada conexão SSL, o IP remoto e detalhes sobre a conexão SSL (por exemplo, protocolo), o valor SNI (identificação do nome do servidor) fornecido pelo cliente e, em seguida, qual certificado/cadeia/chave SSL no servidor foi usado . Eu quero
Com ErrorLog ssl:traceN
(para vários N
) posso obter alguns desses detalhes. Mas não consigo ver qual certificado SSL o servidor está usando para cada conexão. Como posso fazer isso?
O Apache HTTPD
mod_ssl
define várias variáveis de ambiente, algumas das quais podem ser usadas para identificar o certificado do servidor. Por exemplo, existemSSL_SERVER_CERT
(um certificado completo codificado em PEM),SSL_SERVER_S_DN
(um DN do assunto),SSL_SERVER_M_SERIAL
(um número de série do certificado).Você pode usá-los na configuração de log:
Leia o manual do mod_ssl para obter detalhes.
mod_ssl
exporta um monte de variáveis de ambiente ( veja a lista aqui ), que podem ser usadas para registrar informações sobre o certificado, por exemplo, em umaLogFormat
diretiva como esta:No entanto, antes de iniciar o log, verifique este artigo sobre como expirar o certificado DST Root CA X3. É aquele que assinou a CA raiz do Let's Encrypt, e expirou em setembro. No entanto, a CA raiz do Let's Encrypt é aceita como uma CA confiável em praticamente todos os sistemas. Para isso, a expiração não é um problema, e os certificados emitidos continuam funcionando, exceto para sistemas mais antigos usando
openssl
versão < 1.1.0, que não interrompe a validação quando uma CA confiável é encontrada, mas insiste em verificar toda a cadeia (e falha).Se o sistema em questão tiver um
openssl
, você não pode fazer nada sobre o problema no lado do servidor,openssl
devendo ser atualizado no cliente. Se isso não for uma opção, colocar na lista negra o certificado expirado ajuda.