SSL-сертифікат для поштового та веб-сервера, Блог сісадміну
SSL - secure sockets layer
Після нетривалого куріння man-ів народилося таке рішення:
O – назва організації, CN – назва сервера. Має збігатися з ім'ям хоста. Такий сертифікат буде дійсним 10 років із моменту створення (параметр -days). Файл my.domain.crt потрібно покласти в директорію /etc/pki/dovecot/certs, а файл my.domain.key – в директорію /etc/pki/dovecot/private, попередньо перейменувавши їх у dovecot.pem або змінивши параметри ssl_cert_file та ssl_key_file у конфігураційному файлі , щоб привести їх у відповідність до реальних імен файлів з ключем із сертифікатом.
Для того, щоб експортувати цей сертифікат у формат PKCS#12, який використовується багатьма програмами від Microsoft, використовується така команда:
У цьому випадку вона запускалася з директорії /etc/pki/dovecot/certs.
Потім отриманий сертифікат у файлі dovecot.pfx можна імпортувати до сховища довірених сертифікатів програми, яка працює з нашим поштовим сервером. Наприклад, в Outlook Express 6 це робиться так:
меню "Сервіс" → "Параметри." → вкладка "Безпека" → кнопка "Сертифікати." → вкладка "Довірені кореневі центри сертифікації" → кнопка "Імпорт.", вибрати найм dovecot.pfx, у вікні запиту пароля поля залишити порожніми, далі скрізь погодитися зі значеннями за замовчуванням.
Ця процедура позбавляє появи попереджувального повідомлення з текстом "Використовуваний сервер має сертифікат безпеки, який неможливо перевірити" при кожному новому сеансі зв'язку з поштовим сервером:
Зворотна операція (перетворення pfx на pem):
У другому випадку буде запрошено пароль для приватного ключа.
Для перевірки конфігурації можна змусити openssl виступити в ролі поштового клієнта так:
і потім використовувати команди протоколу POP3 для подальшого діалогу із сервером.
Якщо потрібно отримати справжній сертифікат від визнаного центру сертифікації (Certificate Authority або скорочено CA), то запит на підписання сертифіката (CSR) створюється так (потрібно буде ввести в діалоговому режимі деяку інформацію про організацію, яка ініціює такий запит):
Тут введені оператором дані виділені жирним (щоб було зрозуміліше).
Якщо хочеться створити CSR без зайвих питань (щоб буває потрібно в різних скриптах), то це можна зробити так:
У результаті файлі my.domain.key з'явиться приватний ключ, а файлі my.domain.req – власне сам certificate signing request (CSR), який потрібно потім буде відправити до CA.
А ось так можна перевірити відповідність пари сертифікат-ключ:
Якщо висновок обох команд збігається, то ключ відповідає сертифікату (сертифікат був згенерований на основі цього ключа, а не якогось іншого). Може стане в нагоді, якщо якийсь недбайливий клієнт сам купував сертифікат, а потім надіслав чорт знає що й сам заплутався в цьому.
UPDATE від 2014-06-26: За мотивами вищевикладеного та коментів нижче зв'яяв собі такий скриптець, щоб швидко дивитися інфу за сертифікатами:
Ну і насамкінець погана новина для тих, хто використовував алгоритм SHA-1 при генерації ключів. Він уже визнаний застарілим, недостатньо безпечним і незабаром сайти, які використовують SHA-1 сертифікати, будуть визнані ненадійними. Процес втрати довіри до SHA-1 сертифікатів відбуватиметься через такі етапи:
До речі, якщо комусь потрібен недорогий SSL-сертифікат (всього за 14 $ / рік), звертайтеся.
Більше інформаціїпро практичне використання OpenSSL можна знайти тут: xgu.ru
Відмінний сервіс для аналізу конфігурації TLS, пошуку та усунення проблем: https://www.ssllabs.com/ssltest/analyze.html.
5 Responses
За мотивами статті додав собі в .bashrc таке:
check_cert() openssl x509 -text -noout -in *.crt grep -A 1 -E "AlternativeBeforeAfter" openssl x509 -noout -modulus -in *.crt openssl md5 openssl rsa -noout -modulus - *.key openssl md5 >
"Ця процедура позбавляє появи попереджувального повідомлення з текстом "Використовуваний сервер має сертифікат безпеки, який неможливо перевірити" при кожному новому сеансі зв'язку з поштовим сервером:"
Зробив усе за статтею, повідомлення нікуди не поділося. Чому?