O cliente SMTP do Postfix não está verificando em relação a certificados de CA do sistema com tls_append_default_CA

6

No meu servidor SMTP Postfix voltado para a Internet, executando o Debian Wheezy, gostaria de configurar uma conexão segura com alguns servidores conhecidos. Alguns são meus, executando minha própria PKI / CA, alguns são servidores SMTP públicos, como os servidores do Gmail do Google. Para verificar os certificados nos servidores que estou executando, especifiquei

smtp_tls_CAfile = /usr/local/share/ca-certificates/Gert_van_Dijk_Root_CA_2014.crt

e para garantir que os servidores públicos também possam ser verificados no armazenamento de certificados do sistema interno, eu especifiquei explicitamente

tls_append_default_CA = yes

Para garantir que o Postfix verifique o certificado corretamente, configurei o nível de segurança TLS global como 'seguro'. Eu vou mudar isso de volta para 'may' com alguns domínios para secure in smtp_tls_policy_maps assim que terminar de depurar este problema descrito aqui.

smtp_tls_security_level = secure

Ele verifica meus próprios servidores muito bem! Todos eles estão rodando com certificados assinados pelo Gert_van_Dijk_Root_CA_2014.crt . No entanto, parece que o cliente SMTP realmente não anexa os certificados pela configuração tls_append_default_CA quando tenta entregar e-mails aos servidores SMTP do Google. Eu esperaria que ele acrescentasse aqueles de /etc/ssl/certs no Debian.

postfix/smtp[32271]: effective TLS level: secure
[...]
postfix/smtp[32271]: < alt1.gmail-smtp-in.l.google.com[64.233.164.26]:25: 220 2.0.0 Ready to start TLS
[...]
postfix/smtp[32271]: DE6D0403EB: Server certificate not verified

Veja o que tentei:

  • Desabilitando o chroot em master.cf para o cliente smtp assim:

    smtp      unix  -       -       n      -       -       smtp
    

    Não ajudou.

  • Adicione registro detalhado. Eu adicionei -v à linha acima. Tive que desabilitar a limitação da taxa de rsyslog, mas isso não melhorou em nada. A única linha mencionada sobre a verificação de TLS é a linha DE6D0403EB: Server certificate not verified .

  • Tentando rastrear o processo para ver se ele entra em algum problema ao acessar os certificados de autoridade de certificação. Parece que o cliente SMTP é gerado como um novo processo para cada tentativa de entrega. Isso torna o geral strace -p <PID> impossível.

  • Procure problemas semelhantes. Eu só pareço encontrar este muito semelhante problema , mas isso é sobre não especificando a configuração smtp_tls_CAfile , o que eu faço. Com um smtp_tls_CAfile conjunto, ele deve realmente anexar os certificados de CA do sistema.

  • Revertendo tudo de volta para os padrões do Debian, com exceção de smtp_tls_security_level = secure . Ele também falha em fornecer ao Google o mesmo erro. Bug no Postfix do Debian então?

  • O mesmo que acima, desabilitando o chroot para o cliente SMTP e, em seguida, defina smtp_tls_CApath = /etc/ssl/certs explicitamente. Ainda falha na verificação de certificados.

  • Adicionando o nível de depuração TLS. Shows:

    postfix/tlsmgr[17486]: write smtp TLS cache entry smtp:64.233.164.26:25:mx.google.com&p=1&c=aNULL:-aNULL:ALL:!EXPORT:!LOW:+RC4:@STRENGTH:!aNULL&l=268439647: time=1421622891 [data 1975 bytes]
    postfix/smtp[17485]: alt1.gmail-smtp-in.l.google.com[64.233.164.26]:25: subject_CN=mx.google.com, issuer_CN=Google Internet Authority G2, fingerprint 88:C0:85:C8:CB:96:29:8F:4E:15:11:80:C5:9A:89:0D, pkey_fingerprint=E0:32:29:21:69:38:EA:F9:B6:0C:F6:BD:86:12:16:B9
    postfix/smtp[17485]: Untrusted TLS connection established to alt1.gmail-smtp-in.l.google.com[64.233.164.26]:25: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
    postfix/smtp[17485]: DE6D0403EB: Server certificate not trusted
    
  • A verificação manual do OpenSSL no mesmo sistema mostra que tudo deve estar bem.

    $ openssl s_client -connect 64.233.164.26:25 -starttls smtp
    CONNECTED(00000003)
    depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
    verify error:num=20:unable to get local issuer certificate
    verify return:0
    
  • Com a desativação do chroot para o tlsmgr, FINALMENTE recebi um Trusted TLS connection established , mas o postfix ainda acha que a conexão é insegura ( Server certificate not verified ):

    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: certificate verification depth=3 verify=1 subject=/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: certificate verification depth=2 verify=1 subject=/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: certificate verification depth=1 verify=1 subject=/C=US/O=Google Inc/CN=Google Internet Authority G2
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: certificate verification depth=0 verify=1 subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=mx.google.com
    postfix/smtp[27198]: SSL_connect:SSLv3 read server certificate A
    postfix/smtp[27198]: SSL_connect:SSLv3 read server key exchange A
    postfix/smtp[27198]: SSL_connect:SSLv3 read server done A
    postfix/smtp[27198]: SSL_connect:SSLv3 write client key exchange A
    postfix/smtp[27198]: SSL_connect:SSLv3 write change cipher spec A
    postfix/smtp[27198]: SSL_connect:SSLv3 write finished A
    postfix/smtp[27198]: SSL_connect:SSLv3 flush data
    postfix/smtp[27198]: SSL_connect:SSLv3 read server session ticket A
    postfix/smtp[27198]: SSL_connect:SSLv3 read finished A
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: aspmx.l.google.com
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: alt1.aspmx.l.google.com
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: alt2.aspmx.l.google.com
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: alt3.aspmx.l.google.com
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: alt4.aspmx.l.google.com
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: gmail-smtp-in.l.google.com
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: alt1.gmail-smtp-in.l.google.com
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: alt2.gmail-smtp-in.l.google.com
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: alt3.gmail-smtp-in.l.google.com
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: alt4.gmail-smtp-in.l.google.com
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: gmr-smtp-in.l.google.com
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: alt1.gmr-smtp-in.l.google.com
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: alt2.gmr-smtp-in.l.google.com
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: alt3.gmr-smtp-in.l.google.com
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: alt4.gmr-smtp-in.l.google.com
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: mx.google.com
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: aspmx2.googlemail.com
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: aspmx3.googlemail.com
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: aspmx4.googlemail.com
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: aspmx5.googlemail.com
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25 CommonName mx.google.com
    postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subject_CN=aspmx.l.google.com, issuer_CN=Google Internet Authority G2, fingerprint 88:C0:85:C8:CB:96:29:8F:4E:15:11:80:C5:9A:89:0D, pkey_fingerprint=E0:32:29:21:69:38:EA:F9:B6:0C:F6:BD:86:12:16:B9
    postfix/smtp[27198]: Trusted TLS connection established to gmail-smtp-in.l.google.com[173.194.67.26]:25: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
    postfix/smtp[27198]: DE6D0403EB: Server certificate not verified
    

Existe uma maneira de depurar o cliente SMTP no Postfix em execução no primeiro plano? Todo o material de depuração parece estar relacionado ao processo do smtpd. : - (

Outra configuração relevante:

# postconf -n | grep -E "^(smtp_|tls_)"
smtp_tls_CAfile = /usr/local/share/ca-certificates/Gert_van_Dijk_Root_CA_2014.crt
smtp_tls_security_level = secure
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
tls_append_default_CA = yes

# /etc/postfix/master.cf:
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
smtp      unix  -       -       n       -       -       smtp -v
    
por gertvdijk 18.01.2015 / 23:57

1 resposta

5

Com smtp_tls_security_level = secure e o valor padrão de smtp_tls_secure_cert_match (smtp_tls_secure_cert_match = nexthop, ponto-nexthop), o postfix não confia no resultado do registro MX. Em outras palavras, o postfix usará o próximo salto obtido da tabela interna, como a tabela de transporte.

É por isso que o postfix ainda afirma certificado do servidor não verificado . A documentação do Postfix afirma claramente que

Verified (peer certificate signed by trusted CA and verified peer name; or: peer certificate with expected public-key or certificate fingerprint)

Postfix SMTP client: The remote SMTP server's certificate was signed by a CA that the Postfix SMTP client trusts, and the certificate name matches the destination or server name(s). The Postfix SMTP client was configured to require a verified name, otherwise the verification status would have been just "Trusted".

Você pode reduzir o smtp_tls_security_level para verified , para que o postfix confie no resultado do registro MX e use-o para o processo de verificação. Outra forma foi descrita na documentação do postfix .

  • TLS de canal seguro sem substituição de tabela de transporte (5)

    O postfix usará smtp_tls_policy_maps para fazer o processo de verificação.

  • TLS de canal seguro com substituições de tabela de transporte (5):

    Nesse caso, o tráfego para example.com e seus domínios relacionados é enviado para um único gateway lógico (para evitar um único ponto de falha, seu nome pode ser resolvido para um ou mais endereços do balanceador de carga ou para os endereços combinados de vários hosts físicos). Todos os hosts físicos acessíveis pelos endereços IP do gateway têm o nome do gateway lógico listado em seus certificados.

por 19.01.2015 / 11:17

Tags