OpenSSL Нет сертификата клиента (SMTP, Postfix)

Я использовал OpenSSL для создания закрытого ключа и самозаверяющего открытого сертификата. Затем я создал файл центра сертификации, содержащий как закрытый ключ, так и открытый сертификат (mail.example.com.pem). На клиентском компьютере в локальной сети я использую OpenSSL для подключения к Postfix на порту 587 (SMTP), и я говорю OpenSSL использовать файл центра сертификации (mail.example.com.pem).

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

Это дает довольно много вывода. В выходные данные включен публичный сертификат из файла центра сертификации.

enter image description here

После всех TLS, сертификатов и другой информации безопасности у меня мигает курсор, поэтому я пытаюсь поздороваться с Postfix.

EHLO mail.example.com

Эта команда выдает «сертификат клиента не представлен».

enter image description here

Это странно, потому что я буквально вижу публичный сертификат в предыдущем выводе. У меня такое чувство, что здесь не хватает чего-то концептуального. Например, мне нужно сказать клиенту, чтобы он отправил или использовал публичный сертификат? Отличается ли публичный сертификат на сервере Postfix от сертификата клиента?

Цель: Моя общая цель - настроить Postfix на шифрование электронной почты вместо отправки электронной почты без шифрования.

Вот результат выполнения команды 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
1
задан 16 July 2016 в 04:15
1 ответ

вы установили smtpd_tls_req_ccert в вашей постфиксной конфигурации.

Эта директива требует, чтобы все клиенты имели сертификат клиента , выданный вами этому конкретному клиенту. Входящие SMTP соединения к вашему серверу в этом случае разрешены только с предварительно одобренных хостов.

Это явно не то, что вам нужно. Вы пытаетесь получать почту из всего Интернета, и вы не можете выдавать клиентские сертификаты на каждый SMTP сервер в мире.

Сначала удалите эту директиву и попробуйте еще раз. Возможно, у вас есть и другие проблемы, но именно эта проблема является непосредственной.

.
3
ответ дан 3 December 2019 в 18:33

Теги

Похожие вопросы