De vez em quando vejo logs do postfix como este:
Mar 18 13:19:19 ... smtpd[1217240]: SSL_accept error from mx0b-002b8002.pphosted.com[148.163.140.242]: -1
Mar 18 13:19:19 ... smtpd[1217240]: warning: TLS library problem: error:0A0000C1:SSL routines::no shared cipher:../ssl/statem/statem_srvr.c:2220:
Eu bloqueio cifras antigas:
smtpd_tls_mandatory_ciphers = high
smtpd_tls_mandatory_exclude_ciphers = ECDHE-RSA-RC4-SHA
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_protocols = >=TLSv1
Então agora eu gostaria de ver quais cifras o cliente está oferecendo quando ele tenta se conectar ao meu servidor, mas não consigo ver isso nos logs. Existe uma maneira de obter essas informações?
Depurando os conjuntos de cifras oferecidos
Você pode adicionar o endereço IP do cliente conforme
debug_peer_list
sugerido em Postfix Debugging Howto .Os logs padrão
debug_peer_level = 2
:Como você quer ver as cifras que o cliente está oferecendo, você precisa aumentar o nível de depuração em um.
Isso produziria algo como isto:
O que mais pode estar errado? Certificado incompatível!
Isso
error:0A0000C1:SSL routines::no shared cipher
também pode ser causado pelos diferentes tipos de certificados. Nesse caso, você verá que há conjuntos de cifras comuns nas listas, mas eles não são usados.Por exemplo, seu servidor poderia ter apenas certificado ECC disponível e o cliente suporta apenas certificados RSA. Isso daria exatamente o erro que você obteve, e sua tentativa de depuração seria muito confusa, mostrando algo como isto:
Isso aconteceu muito depois que a Let's Encrypt começou a emitir certificados ECC por padrão: