Рейтинг:1

Проблемы Dovecot с сертификатом SSL: проверьте код возврата: 2 (не удалось получить сертификат эмитента)

флаг my

извините за это, но я новичок в ssl и что я не так? я пытаюсь изменить логин dovecot imap на imaps, но что-то идет не так с проверкой сертификата ssl. Сертификат ssl работает для сервера https apache, и это то же самое, что я пытаюсь использовать для dovecot. я пытался понять ответ от Дэйва Томсона https://stackoverflow.com/questions/47108886/openssl-s-client-error-verify-errornum-2unable-to-get-issuer-certificate но новичку тяжело. может у вас есть более простой способ. спасибо и бр

openssl s_client -connect <мой-домен>:993 -servername <мой-домен> -CAfile /etc/apache2/ssl/cert_2021.ca-bundle

вывод:

ПОДКЛЮЧЕН(00000003)
depth=2 C = США, ST = Нью-Джерси, L = Джерси-Сити, O = Сеть USERTRUST, CN = Центр сертификации USERTrust RSA
ошибка проверки: число = 2: невозможно получить сертификат эмитента
эмитент = C = GB, ST = Greater Manchester, L = Salford, O = Comodo CA Limited, CN = AAA Certificate Services
проверить возврат: 1
depth=1 C = ГБ, ST = Большой Манчестер, L = Солфорд, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA
эмитент = C = США, ST = Нью-Джерси, L = Джерси-Сити, O = сеть USERTRUST, CN = USERTrust RSA Certification Authority
проверить возврат: 1
depth=0 CN = <мой-домен>
эмитент = C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA
проверить возврат: 1
---
Цепочка сертификатов
0 s:CN = <мой-домен>
i:C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA
---
Сертификат сервера
-----НАЧАТЬ СЕРТИФИКАТ-----
...gJaprVUs
-----КОНЕЦ СЕРТИФИКАТА-----
subject=CN = <мой-домен>

issuer=C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA

---
Имена ЦС сертификата клиента не отправлены
Дайджест одноранговой подписи: SHA256
Тип одноранговой подписи: RSA-PSS
Временный ключ сервера: X25519, 253 бита
---
SSL-рукопожатие прочитало 2192 байта и записало 397 байт.
Ошибка проверки: не удалось получить сертификат эмитента
---
Новый, TLSv1.3, шифр TLS_AES_256_GCM_SHA384.
Открытый ключ сервера 2048 бит.
Безопасное повторное согласование НЕ поддерживается
Сжатие: НЕТ
Расширение: НЕТ
ALPN не согласован
Предварительные данные не были отправлены
Подтвердите код возврата: 2 (не удалось получить сертификат эмитента)
---
---
Билет на новую сессию после рукопожатия прибыл:
SSL-сессия:
Протокол: TLSv1.3
Шифр: TLS_AES_256_GCM_SHA384.
Идентификатор сеанса: 3B8DCD9A603FF577C1E77F40C5D3BCE2B9BAE026EF430566359B0D82353CE1E5.
Идентификатор сеанса-ctx:
Возобновление PSK: 69E09...34D1
Идентификация PSK: нет
Подсказка идентификации PSK: нет
Имя пользователя SRP: нет
Подсказка о сроке действия билета сеанса TLS: 7200 (секунд)
Билет сеанса TLS:
0000 - 97 86 ca 30 d9 1e 13 95-51 b3 06 87 9d 9f fe ec ...0....Q.......
...
00d0 - 26 69 ba 7b 58 58 2c da-18 90 c9 8b 9f e2 3f be &i.{XX, ......?.

Время начала: 1651046361
Время ожидания: 7200 (сек)
Подтвердите код возврата: 2 (не удалось получить сертификат эмитента)
Расширенный главный секрет: нет
Макс. ранние данные: 0
---
читать Р БЛОК
---
Билет на новую сессию после рукопожатия прибыл:
SSL-сессия:
Протокол: TLSv1.3
Шифр: TLS_AES_256_GCM_SHA384.
Идентификатор сеанса: F834...EE6E
Идентификатор сеанса-ctx:
Возобновление PSK: A6FBE...23BF
Идентификация PSK: нет
Подсказка идентификации PSK: нет
Имя пользователя SRP: нет
Подсказка о сроке действия билета сеанса TLS: 7200 (секунд)
Билет сеанса TLS:
0000 - 97 86 ca 30 d9 1e 13 95-51 b3 06 87 9d 9f fe ec ...0....Q.......
...
00d0 - a9 74 d9 44 c8 40 43 11-48 32 1e e2 2a 8f b9 bb [email protected]..*...

Время начала: 1651046361
Время ожидания: 7200 (сек)
Подтвердите код возврата: 2 (не удалось получить сертификат эмитента)
Расширенный главный секрет: нет
Макс. ранние данные: 0
---
читать Р БЛОК
* OK [ВОЗМОЖНОСТЬ IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ AUTH=PLAIN AUTH=LOGIN] Dovecot (Raspbian) готов.
* BYE Отключен за неактивность.
закрыто

для других попыток

openssl s_client -connect <мой-домен>:993 -servername <мой-домен> -CApath /etc/ssl/certs/ | grep 'код возврата'

я получаю тот же результат:

depth=0 CN = <мой-домен>
ошибка подтверждения: число = 20: невозможно получить сертификат локального эмитента
...
..
.
Время начала: 1651049986
Время ожидания: 7200 (сек)
Код возврата проверки: 21 (невозможно проверить первый сертификат)
Расширенный главный секрет: нет
Макс. ранние данные: 0

мой

/etc/dovecot/conf.d/10-ssl.conf

имеет минимальный cfg

SSL = требуется
ssl_cert = </etc/apache2/ssl/cert_2021.crt
ssl_key = </etc/apache2/ssl/cert_2021.key
ssl_client_ca_file = /etc/apache2/ssl/cert_2021.ca-bundle
ssl_dh = </usr/share/dovecot/dh.pem

ОБНОВИТЬ:

После вашего ввода тревога Я скидываю все в один файл. означает, что информация crt, key и ca-bundle красиво и гладко с копией + вставкой. сохранено под /etc/голубятня/частный без всяких симлинков. под /etc/dovecot/conf.d/10-ssl.conf я установил

ssl_cert = </etc/dovecot/private/all_certs_in_one.txt
#ssl_client_ca_file = /etc/apache2/ssl/es_2021.ca-bundle

и я попробовал команду

openssl s_client -showcerts 6-connect <мой-домен>:993 -servername <мой-домен>

я получаю этот вывод, который определенно больше, чем последний...

ПОДКЛЮЧЕН(00000003)
написать: errno=104
---
нет доступного однорангового сертификата
---
Имена ЦС сертификата клиента не отправлены
---
Рукопожатие SSL прочитало 0 байт и записало 
322 байта
Проверка: ОК
---
Новый, (НЕТ), Шифр ​​(НЕТ)
Безопасное повторное согласование НЕ поддерживается
Сжатие: НЕТ
Расширение: НЕТ
ALPN не согласован
Предварительные данные не были отправлены
Подтвердите код возврата: 0 (хорошо)
---

ОБНОВЛЕНИЕ - с половинным РЕШЕНИЕМ

нано mkcert.sh

#!/бин/ш
# Генерирует самоподписанный сертификат.
# Отредактируйте dovecot-openssl.cnf перед запуском.
умаск 077
OPENSSL=${OPENSSL-openssl}
SSLDIR=${SSLDIR-/etc/ssl}
OPENSSLCONFIG=${OPENSSLCONFIG-dovecot-openssl.cnf}

CERTDIR=$SSLDIR/сертификаты
KEYDIR=$SSLDIR/частный

CERTFILE=$CERTDIR/dovecot.pem
KEYFILE=$KEYDIR/dovecot.pem

если [ ! -d $CERTDIR]; тогда
  echo "Каталог $SSLDIR/certs не существует"
  выход 1
фи

если [ ! -d $KEYDIR]; тогда
  echo "Каталог $SSLDIR/private не существует"
  выход 1
фи

если [-f $CERTFILE]; тогда
  echo "$CERTFILE уже существует, не перезаписывается"
  выход 1
фи

если [-f $KEYFILE]; тогда
  echo "$KEYFILE уже существует, перезаписывать не будет"
  выход 1
фи

$OPENSSL req -new -x509 -nodes -config $OPENSSLCONFIG -out $CERTFILE -keyout $KEYFILE -days 3650 || выход 2
chmod 0600 $KEYFILE
эхо
$OPENSSL x509 -subject -fingerprint -noout -in $CERTFILE || выход 2

нано dovecot-openssl.cnf

[требуется]
биты по умолчанию = 2048
шифр_ключ = да
отличительное_имя = req_dn
x509_extensions = тип_сертификата
подсказка = нет

[ req_dn ]
# страна (двухбуквенный код)
#К=ФИ

# Название штата или провинции (полное название)
#СТ=

# Название местности (например, город)
#L=Хельсинки

# Организация (например, компания)
O=<ИМЯ МОЕЙ ФИРМЫ>

# Название организационного подразделения (например, раздел)
OU=IMAP-сервер

# Обычное имя (также возможно *.example.com)
CN=mail.<ВАШЕ ДОМЕННОЕ ИМЯ>

# Контакт по электронной почте [email protected] 
emailAddress=support@<ВАШЕ ДОМЕННОЕ ИМЯ>

[ тип_сертификата ]
нсцерттипе = сервер

создать символические ссылки:

ln -s /etc/ssl/certs/dovecot.pem /etc/dovecot/private/dovecot_pem_sym.pem
ln -s /etc/ssl/private/dovecot.pem /etc/dovecot/private/dovecot_pem_sym.key

нано /etc/dovecot/conf.d/10-ssl.conf

SSL = требуется
ssl_cert = </etc/dovecot/private/dovecot_pem_sym.pem
ssl_key = </etc/dovecot/private/dovecot_pem_sym.key
#ssl_client_ca_dir = /etc/ssl/сертификаты
#ssl_client_ca_file =
#ssl_dh = </usr/share/dovecot/dh.pem 

рестарт

systemctl перезапустить голубятню

тестовое задание

openssl s_client -showcerts -connect <ВАШ почтовый.ДОМЕН>:993 -servername <ВАШ почтовый.ДОМЕН>

код ошибки

Подтвердите код возврата: 18 (самоподписанный сертификат)

но это лучше, чем ничего =/ мой сертификат apache работает, но да. швы, что у нас не может все работать =(

кстати. не забудьте установить в Outlook, например, @cfg метод к SSL/TLS не автоматический

флаг in
Скорее всего, в вашем файле сертификата отсутствуют другие сертификаты из цепочки.
Рейтинг:0
флаг fr
anx

Вероятно, вы использовали ssl_client_ca_file установка по ошибке. Он используется, когда Dovecot осуществляет исходящие соединения в клиент роль (в случае, если, скажем, он проксирует к месту назначения MTA/IMAP, где центр сертификации системы по умолчанию не подходит). Это полностью отделено от конфигурации Dovecot, обрабатывающей входящие соединения в сервер роль, например предоставление службы IMAP через TLS.

Оставьте это неустановленным, и вместо этого объединить ваш сервер и промежуточные сертификаты в один объединенный файл, который будет использоваться в ssl_cert=</путь/к/файлу.

Следите за порядком, в вашем случае я полагаю, что это будет сертификат вашего сервера, тогда Сектиго, тогда Доверие пользователей. Поскольку в настоящее время вы указываете на файлы, используемые apache2, позаботьтесь о том, чтобы не изменять файлы, которые вы настроили в другом месте (ожидая, что они содержат только сертификат сервера или цепочку).

trash2 avatar
флаг my
Привет. сначала спасибо за ваш вклад, я кое-что попробовал (см. ОБНОВЛЕНИЕ выше), но теперь я получил другую ошибку.я не вижу, что я делаю неправильно. за любой вклад я буду thx много. вход в систему Outlook через порт 993 идет рука об руку с этим рабочим сертификатом, верно? кстати. если я использую стандартные сертификаты змеиного масла Ubuntu, я получаю хороший результат, но вход в Outlook по-прежнему работает. ошибка авторизации не существует для попытки входа в систему

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.