SSL-cертификат для postfix

Коротенько )

/etc/postfix/main.cf:
smtpd_use_tls = yes
smtpd_tls_auth_only = no

smtpd_tls_key_file = /etc/postfix/tls/mymail.key
smtpd_tls_cert_file = /etc/postfix/tls/mymail.crt
smtpd_tls_CAfile = /etc/postfix/tls/CA_bundle.pem

Создаём новый приватный ключ:
openssl genrsa -des3 -out mymail.key 2048

Создаём запрос для получения сертификата:
openssl req -new -key mymail.key -out mymail.csr

Заказываем сертификат на сайте регистратора. Я пользуюсь услугами Dynadot.com.

Создаём ключ без пароля:
openssl rsa -in mymail.key -out mymail-nopwd.key

Копируем ключ и сертификат в нужную папку:
cp mymail-nopwd.key /etc/postfix/tls/
cp mymail.crt /etc/postfix/tls/

Создаём промежуточный сертификат: берём отсюда корневой сертификат и сертификат нужного цетра сертификации (в данном случае AlphaSSL) и копируем в один файл CA_bundle.pem:
-----BEGIN CERTIFICATE-----
Корневой сертификат
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Промежуточный сертификат AlphaSSL
-----END CERTIFICATE-----


Ну и перезапускаем postfix.

Конечно, после обновления сертификата (если приватный ключ остался прежний) не нужно всё это делать заново, достаточно просто скопировать новый сертификат в файл mymail.crt. Ну и на всякий случай убедиться, что корневой и промежуточный сертификаты не изменились.

Указание SSL-сертификата для nginx

Для получения подписанного сертификата я использую службу Dynadot, провайдер сертификата — AlphaSSL.

При использовании apache проблем не было. Я прописывал в конфиге три файла — файл с подписанным сертификатом сайта, файл с ключом, и файл с промежуточными сертификатами:
SSLCertificateFile "/etc/httpd/conf/my.crt"
SSLCertificateKeyFile "/etc/httpd/conf/my.key"
SSLCaCertificateFile "/etc/httpd/conf/AlphaSSLroot.crt"

В файле AlphaSSLroot.crt приведены друг за другом корневой сертификат и сертификат AlphaSSL как промежуточные:
-----BEGIN CERTIFICATE-----
сертификат Root CA
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
сертификат AlphaSSL Intermediate CA
-----END CERTIFICATE-----

В nginx только два аналогичных параметра — для файла с подписанным сертификатом и для файла с ключом:
ssl_certificate /usr/local/nginx/conf/my.crt;
ssl_certificate_key /usr/local/nginx/conf/my.key;

А вот куда указать промежуточные сертификаты, без них же не работает? Как оказалось их можно указать прямо в файле my.crt с подписанным сертификатом сайта, главное не перепутать последовательность:
-----BEGIN CERTIFICATE-----
подписанный сертификат вашего сайта
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
сертификат Root CA
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
сертификат AlphaSSL Intermediate CA
-----END CERTIFICATE-----

Промежуточные сертификаты взяты с сайта AlphaSSL.