Mikrotik: Импортирование подписанного сертификата

Мы получили настоящий, подписанный SSL-сертификат для управления нашим Микротиком через HTTPS.
Нам нужны три файла:
— сертификат, подписанным неким провайдером сертификатов — файл «my.crt»;
— приватный ключ — файл «my.key»;
— промежуточные сертификаты (корневой и этого провайдера) вместе в одном файле — файл «im.crt»;

Загружаем эти файлы на Микротик через меню Files.

По моему опыту лучше начать с импорта промежуточного сертификата, иначе может случиться, что система выдаст в логи сообщение о неправильной подписи сертификата. Впрочем, возможно, это не помешает и уладится после загрузки промежуточных сертификатов.
В разделе System — Certificates нажимаем кнопку Import и в выпадающем меню «Only File», выбираем файла «im.crt» и нажимаем кнопку «Import». В моём случае появилось два сертификата, т.к. у нас в файле их два. Вероятно, можно импортировать их и по-отдельности, но я не пробовал, просто взял тот файл, который я использовал для Апача.

Затем так же загружаем файл с подписанным сертификатом «my.crt». Он должен появиться в списке сертификатов и перед ним буквы L (crl) и T (trusted).

Теперь надо добавить наш приватный ключ — делаем это так же через Import, после чего возле уже появившегося после предыдущего шага сертификата появится буква K (private-key).

Теперь осталось указать веб-серверу Микротика использовать наш сертификат — в разделе IP — Services — www-ssl меню Certificate. Без этого HTTPS может не работать и выдавать ошибку «ERR_SSL_VERSION_OR_CIPHER_MISMATCH».

Убедитесь, что у вас есть другой вход, например, ssh или простой HTTP, т.к. ошибка с сертификатами может привести к тому, что вы не сможете зайти через HTTPS. Также можно подстраховаться и нажать кнопку «Safe Mode», главное потом, если всё нормально, не забыть отжать эту кнопку, иначе роутер перезагрузится и ваши изменения пропадут.
Включите, если она ещё не включена, службу www-ssl в разделе IP — Services и проверьте подключение через HTTPS. Если всё нормально, то можно отключить простой HTTP.

Дополнение про обновление сертификата

Обновить только подписанный сертификат у меня не получилось — импортировал новый и пропала связь по HTTPS. Далее пришлось всё делать через SSH, а файлы сертификатов загружать на Микротик через SFTP.

Проще удалить все сертификаты и добавить заново:
certificate remove 0
certificate remove 1
certificate remove 2
certificate import file-name=im.crt
certificate import file-name=my.crt
certificate import file-name=my.key


В результате в выводе команды «certificate pr detail» у меня получилось два промежуточных сертификата и один приватный, причём приватный должен иметь отметки «KL T» (K — private-key, L — crl, T — trusted). В этом же выводе смотрим имя сертификата 'name=«my.crt_0»'

Затем надо проверить привязан ли сертификат к службе www-ssl:
ip service print detail where name=www-ssl
 "номер_службы"   name="www-ssl" port=443 address="" certificate=*A


У меня не привязан, т.к. имя сертификата изменилось
Указываем новое имя:
ip service set "номер_службы" certificate=my.crt_0

Проверяем:
ip service pr detail where name=www-ssl
 0   name="www-ssl" port=443 address="" certificate=my.crt_0


Проверяем HTTPS — работает.

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.