Postfix/Dovecot и новый защищенный паролем закрытый ключ
Я создал пару CST и секретный ключ, как сказал StartSSL, для моего сервера Ubuntu 14.04 postfix / dovecot, с:
openssl req -newkey rsa:2048 -keyout mydomain.key -out mydomain.csr
В приглашении с парольной фразой я ввел (почему нет, верно?) Пароль вместо того, чтобы оставить пароль пустым, чтобы иметь незащищенный ключ.
После вставки csr
файл в StartSSL, я получил соответствующий сертификат, связанный с файлом, защищенным паролем.
У меня есть и Dovecot, и Postfix, использующие этот сертификат:
// /etc/postfix/main.cf
smtpd_tls_cert_file = /etc/ssl/private/mychain.pem
smtpd_tls_key_file = /etc/ssl/private/mydomain.key
smtpd_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
// /etc/dovecot/conf.d/10-ssl.conf
ssl_cert = </etc/ssl/private/mychain.pem
ssl_key = </etc/ssl/private/mydomain.key
При выполнении теста с checktls.com
, Я получил:
// other steps omited
749.-->STARTTLS\r\n
750.<--454 4.7.0 TLS not available due to local problem\r\n
И в моем системном журнале ошибка SMTP вместе с dovecot
ошибка, которая, к счастью, случилась именно в этот момент (я полагаю, некоторые из моих клиентов пытались подключиться в тот момент):
Oct 25 18:49:12 ns dovecot: pop3-login: Error: SSL private key file is password protected, but password isn't given
Oct 25 18:49:12 ns dovecot: pop3-login: Fatal: Couldn't parse private ssl_key: error:0907B068:PEM routines:PEM_READ_BIO_PRIVATEKEY:bad password read
Oct 25 18:49:12 ns dovecot: master: Error: service(pop3-login): command startup failed, throttling for 60 secs
Oct 25 18:49:16 ns postfix/smtpd[30437]: connect from www4.checktls.com[216.68.85.112]
Oct 25 18:49:17 ns postfix/smtpd[30437]: lost connection after UNKNOWN from www4.checktls.com[216.68.85.112]
Oct 25 18:49:17 ns postfix/cleanup[30461]: 93088330D956: message-id=<20161025164917.93088330D956@mydomain.com>
Oct 25 18:49:17 ns postfix/smtpd[30437]: disconnect from www4.checktls.com[216.68.85.112]
Итак, как я могу заставить Postfix и Dovecot узнать пароль, удалить пароль или мне нужно обновить сертификат?
Я предпочитаю решение первого вопроса (чтобы они знали пароль), потому что это новая ситуация для меня, и поэтому я кое-что изучаю (возможно, мне нужно "зарегистрировать" пароль этого ключа в каком-то пуле паролей системы?)
2 ответа
Конфигурирование голубятни
Вы можете настроить Dovecot для разблокировки ключа парольной фразой при запуске. На вики-странице конфигурации SSL есть раздел:
Файлы ключей SSL могут быть защищены паролем. Есть два способа предоставить Dovecot пароль:
Начиная с Dovecot с
dovecot -p
спрашивает пароль. Он нигде не хранится, поэтому этот метод предотвращает автоматический запуск Dovecot при запуске.
ssl_key_password
установка. Обратите внимание, чтоdovecot.conf
по умолчанию доступен для чтения всем миром, так что вам, вероятно, не следует размещать его там напрямую. Вместо этого вы можете сохранить его в другом файле, например/etc/dovecot-private.conf
содержащий:
ssl_key_password = secret
а затем использовать
!include_try /etc/dovecot-private.conf
в основномdovecot.conf
,
Postfix Требуется незашифрованный ключ
Postfix не может работать с зашифрованными ключами, поэтому вы должны предоставить расшифрованную копию:
Для использования TLS SMTP-серверу Postfix обычно требуется сертификат и закрытый ключ. Оба должны быть в формате "PEM". Закрытый ключ не должен быть зашифрован, то есть ключ должен быть доступен без пароля. [...]
Удаление парольной фразы
Удаление ключевой фразы также легко достигается путем запуска
openssl rsa -in encrypted-key.pem -out decrypted-key.pem
без ввода новой ключевой фразы при повторном экспорте ключа.
Вы также можете сразу создать незашифрованный ключ с помощью openssl. Чтобы получить ключ, файлы csr & crt, команды должны быть
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out server.key
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt