StartSSL или как избавиться от самоподписанных сертификатов (с хабра)
Мне по долгу работы пришлось предостаточно навозиться с самоподписанными SSL-сертификатами: это и разные панели управления, и почта, и серверы приложений. Вообще всего и не вспомнить, в большинстве случаев можно легко обойтись самоподписанными сертификатами, но даже в этих случаях напрягает постоянно импортировать их в браузер(иногда это нетривиально, как например в гугл хром) или почтовый клиент(как Mail App), а если говорить о почте например так там вообще полная засада, если у Вас много пользователей то некоторый процент обязательно позвонит к вам что бы сообщить что у них ошибка «что-то про сертификат». Конечно можно научить юзеров импортировать их, но на много приятней когда вообще ничего выше описанного не происходит. С другой стороны покупать сертификат не дешевое удовольствие, как минимум 15 баксов если поискать, это всегда меня останавливало, так как критичной необходимости в подписанном сертификате вроде бы и нет, и отдавать свои кровные не хочется. Так я вот жил на самоподписанных сертификатах с незапамятных времен.
Совсем вот недавно я наткнулся на сервис https://startssl.com. Вкратце, сервис позволяет получить валидный SSL-сертификат абсолютно бесплатно, такой сертификат распознается браузерами, почтовыми клиентами и даже мобильными устройствами(лично не проверял).
Как я уже сказал, выпускать сертификаты можно абсолютно бесплатно, но действуют некоторые ограничения, к примеру такие сертификаты нельзя использовать для финансовых операций и e-commerce. Также отзыв сертификата будет стоить вам денег. Нельзя создавать wildcard сертификаты а также сертификаты валидные для нескольких доменов/субдоменов.
В тоже время доступны и платные услуги, после уплаты некоторой суммы($49) и прохождения проверки личности, эти ограничения будут сняты(кроме оплаты отзыва сертификата), и Вы все еще сможете получать сертификаты бесплатно, и в них уже будут указанные ваши данные.
Как пользоваться их вебсайтом рассказывать я не буду, так как, там все достаточно просто.
Добавлю только что установка сертификатов иногда не тривиальна, но она того стоит.
Если кому надо помощь с установкой в postfix,dovecot буду рад помочь, пишите в личку.
Описание установки сертификатов в Apache и IIS есть у них на сайте.
Установка StartSSL сертификатов — Postfix/Dovecot/Nginx
В предыдущем топике я рассказал о сервисе где можно бесплатно получить ssl-сертификаты. И как бы в продолжение решил описать как установить их на то или иное ПО.Я рассмотрю следующее ПО:
- Postfix
- Dovecot
- Nginx
Postfix
С постфиксом я намучился больше всего. Казалось бы, есть документация, куча примеров и тд, должно быть все просто, но нет, перепробовав кучу вариантов попутно перечитывая документацию я убил не мало времени пока все стало работать.Погдотовка
Подразумевается что у вас уже есть приватный ключ и сертификат для домена.mail.example.com.key
mail.example.com.crt
Также вам необходимо скачать файл с сертификатом промежуточного CA необходимого класса.
Их можно найти здесь
Для бесплатных сертификатов это sub.class1.server.ca.pem
В этом примере я использую приватный ключ без пассфразы.
И так у нас есть 3 файла.
mail.example.com.key
mail.example.com.crt
sub.class1.server.ca.pem
Создадим файл который скушает постфикс
cat mail.example.com.key mail.example.com.crt sub.class1.server.ca.pem > mail.example.com.pem
копируем полученный файл куда надо, я свой положил в /etc/pki/postfix/
Конечно же не забиваем выставить владельца и права, так как в файле наш ключ.
в /etc/postfix/main.cf добавляем:
smtpd_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
smtpd_tls_cert_file = /etc/pki/postfix/mail.example.com.pem # путь к нашему файлу
smtpd_tls_key_file = /etc/pki/postfix/mail.example.com.pem # путь к нашему файлу
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_tls_session_cache
smtpd_use_tls = yes
smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
smtp_tls_cert_file = /etc/pki/postfix/mail.example.com.pem # путь к нашему файлу
smtp_tls_key_file = /etc/pki/postfix/mail.example.com.pem # путь к нашему файлу
smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_tls_session_cache
smtp_use_tls = yes
smtpd_tls_security_level = may
smtpd_tls_received_header = yes
smtpd_tls_loglevel = 1
smtpd_tls_auth_only = no
tls_random_source = dev:/dev/urandom
Что значит каждый параметр и за что он отвечает можно узнать в документации для Postifx
для проверки того что все окей можно использовать следующую комманду:
openssl s_client -starttls smtp -showcerts -connect localhost:25
В результате должно вернуться что то вроде:
SSL handshake has read 4760 bytes and written 354 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 4096 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : DHE-RSA-AES256-SHA
Session-ID: 418AA0ED7BA85B2B9301FA127D05DCAFABCEDC192101A6E75DD872FA3E528366
Session-ID-ctx:
Master-Key: 498FB41D5810A9768710936351DC92169B6D7DEFAHTEDBDUO60DE9349DA7EB5536F975A8BC4AF190466B637CC129A93E
Key-Arg : None
Krb5 Principal: None
Start Time: 1287331961
Timeout : 300 (sec)
Verify return code: 0 (ok)
---
250 DSN
в /etc/postfix/master.cf раскомментируем следующие строки:
smtps inet n - n - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
На этом с постфиксом все.
Dovecot
С довекотом все оказалось намного проще и у меня все заработало с первого разаПогдотовка
У вас уже есть 3 файлаmail.example.com.key
mail.example.com.crt
sub.class1.server.ca.pem
Копируем ключ, создаем сертификат который скушает dovecot
cp mail.example.com.key /etc/pki/dovecot/private/
cat mail.example.com.crt sub.class1.server.ca.pem > /etc/pki/dovecot/certs/mail.example.com.pem
В dovecot.conf надо прописать:
ssl_cert_file = /etc/pki/dovecot/certs/mail.example.com.pem
ssl_key_file = /etc/pki/dovecot/private/mail.example.com.key
и конечно же включить SSL
ssl_listen = *
ssl = yes
И добавить в список протоколов необходимые лично вам.
protocols = pop3 pop3s imap imaps
Nginx
С ним тоже все очень просто и в целом процедура не отличается от dovecot'овскойПогдотовка
У вас уже есть 3 файлаmail.example.com.key
mail.example.com.crt
sub.class1.server.ca.pem
Копируем ключ, создаем сертификат который скушает nginx
cp mail.example.com.key /etc/pki/nginx/private/
cat mail.example.com.crt sub.class1.server.ca.pem > /etc/pki/nignx/certs/mail.example.com.pem
в конфигурации для хоста nginx должно быть что типа такого:
server {
listen 443;
server_name mail.example.com;
ssl on;
ssl_certificate /etc/pki/nignx/certs/mail.example.com.pem;
ssl_certificate_key /etc/pki/nginx/private/mail.example.com.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
root /srv/www/htdocs/;
index index.html index.htm;
}
}
автор: syncer