OpenSSL Nenhum certificado de cliente apresentado (SMTP, Postfix)

1

Eu usei o OpenSSL para criar uma chave privada e um certificado público autoassinado. Em seguida, criei um arquivo de autoridade de certificação que contém a chave privada e o certificado público (mail.example.com.pem). Em um computador cliente na LAN, eu uso o OpenSSL para me conectar ao Postfix na porta 587 (SMTP), e digo ao OpenSSL para usar o arquivo da Autoridade de Certificação (mail.example.com.pem).

openssl s_client -connect mail.example.com:587 -starttls smtp -CAfile /etc/pki/tls/private/mail.example.com.pem

Isso produz um pouco de saída. Incluído na saída está o certificado público do arquivo da Autoridade de Certificação.

DepoisdetodooTLS,certificadoeoutrasinformaçõesdesegurança,eutenhoumcursorpiscando,entãoeutentodizerOláaoPostfix.

EHLOmail.example.com

Estecomandoproduz"nenhum certificado de cliente apresentado".

Isso é estranho, porque posso literalmente ver o certificado público na saída anterior. Tenho a sensação de que estou faltando algo conceitual aqui. Por exemplo, preciso informar ao cliente para enviar ou usar o certificado público? O certificado público no servidor Postfix é diferente de um certificado de cliente?

Meta: Meu objetivo geral é configurar o Postfix para criptografar e-mails em vez de enviar e-mails sem criptografia.

Aqui está a saída do comando postconf -n :

data_directory = /var/lib/postfix
home_mailbox = Maildir/
inet_interfaces = all
inet_protocols = all
mail_owner = postfix
mailbox_command =
mydestination = example.com, localhost.example.com, localhost
mynetworks_style = host
queue_directory = /var/spool/postfix
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_sasl_auth_enable = no
smtpd_sasl_path = private/auth
smtpd_tls_CAfile = /etc/pki/tls/mail.example.com.pem
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/pki/tls/mail.example.com.crt
smtpd_tls_key_file = /etc/pki/tls/mail.example.com.key
smtpd_tls_loglevel = 3
smtpd_tls_req_ccert = yes
smtpd_tls_security_level = encrypt
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_tls_cache
smtpd_tls_session_cache_timeout = 3600s
tls_random_exchange_name = /var/lib/postfix/prng_exch
tls_random_source = dev:/dev/urandom
    
por JeremyCanfield 15.07.2016 / 22:13

1 resposta

3

Você definiu smtpd_tls_req_ccert em sua configuração do Postfix.

Esta diretiva exige que todos os clientes tenham um certificado cliente emitido por você para esse cliente específico. As conexões SMTP de entrada para o servidor só serão permitidas a partir de hosts pré-aprovados.

Isto claramente não é o que você quer. Você está tentando receber mensagens de toda a Internet e não pode emitir certificados de clientes para todos os servidores SMTP no mundo.

Primeiro, remova essa diretiva e tente novamente. Você pode ter outros problemas, mas esse é o que causa o problema imediato.

    
por 16.07.2016 / 03:41