How to manually install/renew let’s encrypt ssl in zimbra – mellowhost blog
If you are having trouble installing Let’s Encrypt SSL with the certbot-zimbra.sh file, then probably you would need to follow this tutorial. To follow this tutorial, we first need to install certbot. certbot has a built in web server to allow you get the certificate without actually installing an extra web server or through Zimbra web server (nginx to be specific).
First, we install certbot with the following:
// install epel-release first yum install epel-release // install certbot from epel yum install certbot
Once done, you may now use the following command to ensure certbot is working:
# certbot --help - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - certbot [SUBCOMMAND] [options] [-d DOMAIN] [-d DOMAIN] ... Certbot can obtain and install HTTPS/TLS/SSL certificates. By default, it will attempt to use a webserver both for obtaining and installing the certificate. The most common SUBCOMMANDS and flags are: obtain, install, and renew certificates: (default) run Obtain & install a certificate in your current webserver certonly Obtain or renew a certificate, but do not install it renew Renew all previously obtained certificates that are near expiry enhance Add security enhancements to your existing configuration -d DOMAINS Comma-separated list of domains to obtain a certificate for (the certbot apache plugin is not installed) --standalone Run a standalone webserver for authentication --nginx Use the Nginx plugin for authentication & installation --webroot Place files in a server's webroot folder for authentication --manual Obtain certificates interactively, or using shell script hooks -n Run non-interactively --test-cert Obtain a test certificate from a staging server --dry-run Test "renew" or "certonly" without saving any certificates to disk manage certificates: certificates Display information about certificates you have from Certbot revoke Revoke a certificate (supply --cert-name or --cert-path) delete Delete a certificate (supply --cert-name) manage your account: register Create an ACME account unregister Deactivate an ACME account update_account Update an ACME account --agree-tos Agree to the ACME server's Subscriber Agreement -m EMAIL Email address for important account notifications More detailed help: -h, --help [TOPIC] print this message, or detailed help on a topic; the available TOPICS are: all, automation, commands, paths, security, testing, or any of the subcommands or plugins (certonly, renew, install, register, nginx, apache, standalone, webroot, etc.) -h all print a detailed help page including all topics --version print the version number - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Once you ensure certbot is installed, now you may use certbot to get the certificate, using the certbot –standalone tag. Remember to stop zimbra first, as Zimbra also runs a nginx web server, that would prevent certbot to use standalone or it’s own web server to verify certificate.
// from root, run [[email protected] ~]# service zimbra stop // wait until zimbra stops, once done, use the following to get certificate for your domain/hostname in place of mail.domain.com [[email protected] ~]# certbot certonly --standalone -d mail.domain.com
This would get your certificate and save it in:
/etc/letsencrypt/live/mail.domain.com
Now, that folder would contain 4 files. Something like the following:
]# ls -la /etc/letsencrypt/live/mail.domain.com/ total 16 drwxr-xr-x 2 root root 4096 Apr 16 11:30 . drwx------ 4 root root 4096 Feb 10 2020 .. lrwxrwxrwx 1 root root 40 Apr 16 11:30 cert.pem -> ../../archive/mail.domain.com/cert8.pem lrwxrwxrwx 1 root root 41 Apr 16 11:30 chain.pem -> ../../archive/mail.domain.com/chain8.pem lrwxrwxrwx 1 root root 45 Apr 16 11:30 fullchain.pem -> ../../archive/mail.domain.com/fullchain8.pem lrwxrwxrwx 1 root root 43 Apr 16 11:30 privkey.pem -> ../../archive/mail.domain.com/privkey8.pem
As you can see, these files are symbolically linked to another files, depends on how many time you are running certbot. Each time, it generates a number liker cert8.pem, the next one would be cert9.pem and so on. So the orignal files are here:
/etc/letsencrypt/archive/mail.domain.com/cert8.pem /etc/letsencrypt/archive/mail.domain.com/chain8.pem /etc/letsencrypt/archive/mail.domain.com/fullchain8.pem /etc/letsencrypt/archive/mail.domain.com/privkey8.pem
Now, we have our certificates. We need to follow a couple of steps to make sure everything is set correctly.
First, zimbra SSL files are stored here
/etc/zimbra/ssl/letsencrypt
We clean all old pem files
rm -f /etc/zimbra/ssl/letsencrypt/*
Now, copy the pem files we got to this folder with the following:
cp /etc/letsencrypt/archive/mail.domain.com/cert8.pem /opt/zimbra/ssl/letsencrypt/cert.pem cp /etc/letsencrypt/archive/mail.domain.com/chain8.pem /opt/zimbra/ssl/letsencrypt/chain.pem cp /etc/letsencrypt/archive/mail.domain.com/fullchain8.pem /opt/zimbra/ssl/letsencrypt/fullchain.pem cp /etc/letsencrypt/archive/mail.domain.com/privkey8.pem /opt/zimbra/ssl/letsencrypt/privkey.pem
Check, how we are renaming all the files with number to file name without number, like cert8.pem is moved as cert.pem here.
Now, change the ownership of these files to zimbra with the following:
chown -Rf zimbra:zimbra /opt/zimbra/ssl/letsencrypt/*
Now, we are done from root, change your ownership to zimbra
su - zimbra
First job, is to change your directory to the ‘/opt/zimbra/ssl/letsencrypt/’
cd /opt/zimbra/ssl/letsencrypt/
Let’s Encrypt files are very much ready to use, only with one problem. Let’s Encrypt do not add it’s root CA certificate with it’s chain.pem file. We need to do this. First open the certificate with nano editor as following:
nano chain.pem
Now, at the end of the file, add the following section:
-----BEGIN CERTIFICATE----- MIIDSjCCAjKgAwIBAgIQRK wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AN v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi DoM3ZJKuM/IUmTrE4O rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq OLl5CjH9UL2AZd 3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt /yUFw 7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD aeQQmxkqtilX4 U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62 FLkHX/xBVghYkQMA0GCSqG SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or Dxz9LwwmglSBd49lZRNI DT69 ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX 5v3gTt23ADq1cEmv8uXr AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK rlmM6pZW87ipxZz R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL T0yjWW06XyxV3bqxbYo Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ -----END CERTIFICATE-----
After adding the above, your chain.pem file should look like the following
-----BEGIN CERTIFICATE----- your chain pem encrypted certificate here -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIDSjCCAjKgAwIBAgIQRK wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AN v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi DoM3ZJKuM/IUmTrE4O rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq OLl5CjH9UL2AZd 3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt /yUFw 7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD aeQQmxkqtilX4 U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62 FLkHX/xBVghYkQMA0GCSqG SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or Dxz9LwwmglSBd49lZRNI DT69 ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX 5v3gTt23ADq1cEmv8uXr AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK rlmM6pZW87ipxZz R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL T0yjWW06XyxV3bqxbYo Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ -----END CERTIFICATE-----
Now, save the file (CTRL o) and exit (CTRL x)
We need to do one more thing before we are ready to verify and deploy the certificate. We need to set the letencrypt private key that we used to generate the certificate as commercial.key of zimbra. You may do this with the following two commands:
rm -f /opt/zimbra/ssl/zimbra/commercial/commercial.key cp /opt/zimbra/ssl/letsencrypt/privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key
Now, you are ready to complete the job. First verify if everything is alright with the following:
[[email protected] letsencrypt]$ /opt/zimbra/bin/zmcertmgr verifycrt comm privkey.pem cert.pem chain.pem
** Verifying 'cert.pem' against 'privkey.pem'
Certificate 'cert.pem' and private key 'privkey.pem' match.
** Verifying 'cert.pem' against 'chain.pem'
Valid certificate chain: cert.pem: OK
If everything is ok, you may now deploy certificate with the following command:
/opt/zimbra/bin/zmcertmgr deploycrt comm cert.pem chain.pem
Once the certificate is deployed successfully, get out from the zimbra user to root user with the following command
exit
Now, you may start/restart zimbra with the following command:
service zimbra restart
If everything went right, you should now be able to go to your zimbra domain, and under the lock sign on the left of the domain shown in browser, you may click on it to see the extended date of ssl expiry. Sweet!
Usage
USAGE: certbot_zimbra.sh < -d | -n | -p > [-aNuzjxcq] [-H my.host.name] [-e extra.domain.tld] [-w /var/www] [-s <service_names>] [-P port] [-L "--extra-le-parameters ..."]
Only one option at a time can be supplied. Options cannot be chained.
Mandatory options (only one can be specified):
-d | --deploy-only: Just deploys certificates. Can be run as --deploy-hook. If run standalone, assumes valid certificates are in /etc/letsencrypt/live. Incompatible with -n/--new, -p/--patch-only.
-n | --new: performs a request fora new certificate ("certonly"). Can be used to update the domainsin an existing certificate. Incompatible with -d/--deploy-only, -p/--patch-only.
-p | --patch-only: does only nginx patching. Useful to be called before renew, incase nginx templates have been overwritten by an upgrade. Incompatible with -d/--deploy-only, -n/--new, -x/--no-nginx.
Options only used with -n/--new:
-a | --agree-tos: agree with the Terms of Service of Let's Encrypt (avoids prompt) -L | --letsencrypt-params "--extra-le-parameters ...": Additional parameters to pass to certbot/letsencrypt -N | --noninteractive: Pass --noninteractive to certbot/letsencrypt. Domain options: -e | --extra-domain <extra.domain.tld>: additional domains being requested. Can be used multiple times. Implies -u/--no-public-hostname-detection. -H | --hostname <my.host.name>: hostname being requested. If not passed it's automatically detected using "zmhostname".
-u | --no-public-hostname-detection: do not detect additional hostnames from domains' zimbraServicePublicHostname. Deploy options: -s | --services <service_names>: the set of services to be used for a certificate. Valid services are 'all' or any of: ldap,mailboxd,mta,proxy. Default: 'all' -z | --no-zimbra-restart: do not restart zimbra after a certificate deployment Port check: -j | --no-port-check: disable port check. Incompatible with -P/--port. -P | --port <port>: HTTP port the web server to use for letsencrypt authentication is listening on. Is detected from zimbraMailProxyPort. Mandatory with -x/--no-nginx. Nginx options: -w | --webroot "/path/to/www": path to the webroot of alternate webserver. Valid only with -x/--no-nginx. -x | --no-nginx: Alternate webserver mode. Don't check and patch zimbra-proxy's nginx. Must also specify -P/--port and -w/--webroot. Incompatible with -p/--patch-only. Output options: -c | --prompt-confirm: ask for confirmation. Incompatible with -q/--quiet. -q | --quiet: Do not output on stdout. Useful for scripts. Implies -N/--noninteractive, incompatible with -c/--prompt-confirm.
If no -e is given, the script will figure out the additional domain(s) to add to the certificate as SANs via zmprov gd $domain zimbraPublicServiceHostname.
This can be skipped with -u/–no-public-hostname-detection, in which case only the CN from zmhostname or -H/–hostname will be used.
Only one certificate will be issued including all the found hostnames. The primary host will always be zmhostname.
Как установить бесплатный ssl-сертификат на виртуальную машину с bitrix gt
Чтобы установить бесплатный SSL-сертификат Let’s Encrypt на виртуальную машину с шаблоном Bitrix GT, необходимо выполнить следующие шаги:
1. Зайдите на виртуальный сервер через протокол удалённого доступа SSH:

Данные для авторизации на виртуальном сервере через SSH вы можете посмотреть в Инструкции
к услуге. В Личном кабинете откройте вкладку Товары
— Виртуальные серверы
— кнопка Инструкция
.
2. Выпуск SSL-сертификата от Let’s Encrypt выполняется с помощью специальной утилиты certbot. Для установки данной утилиты запустите предустановленный пакетный менеджер yum:
yum install -y certbot

3. Перед выпуском настоящего SSL-сертификата, необходимо обязательно попробовать выпустить его в режиме dry-run (пробный или тестовый прогон). Сделать это можно следующим образом:
certbot certonly --expand -d bitrix-gt.fvds.ru -d www.bitrix-gt.fvds.ru -w /var/www/html --webroot --email webmaster@bitrix-gt.fvds.ru --agree-tos --dry-run

В примере из статьи генерация пробного SSL-сертификата осуществляется на домен bitrix-gt.fvds.ru
(и его поддомен четвертого уровня — www.bitrix-gt.fvds.ru
). Корневая директория домена — /var/www/html
. Доменное имя, почтовый адрес и корневой каталог вам необходимо изменить на свой.
4. Если в процессе выпуска в режиме dry-run утилита certbot не сообщила о каких-либо проблемах, то можно выпускать реальный SSL-сертификат. Выполните следующую команду:
certbot certonly --expand -d bitrix-gt.fvds.ru -d www.bitrix-gt.fvds.ru -w /var/www/html --webroot --email webmaster@bitrix-gt.fvds.ru --agree-tos -n

5. Файлы созданного SSL-сертификата от Let’s Encrypt находятся в следующих файлах:
/etc/letsencrypt/live/bitrix-gt.fvds.ru/privkey.pem /etc/letsencrypt/live/bitrix-gt.fvds.ru/fullchain.pem
Откройте конфигурационный файл виртуального хоста и создайте контекст server
для обработки соединений по протоколу HTTPS, как это показано видео ниже:
vim /etc/nginx/bx/site_enabled/s1.conf

В данном примере мы скопировали готовый контекст server
домена bitrix-gt.fvds.ru
. Изменили порт с 80 на 443, включили поддержку SSL и добавили пути к файлам SSL-сертификата. Файл с именем privkey.pem
— это приватный ключ, а файл с именем fullchain.pem
— цепочка SSL-сертификатов.
Возможно, что конфигурационный файл виртуального хоста вашего домена расположен в другом файле (не в файле по умолчанию s1.conf
). Выполните команду ls
на каталог /etc/nginx/bx/site_enabled
и посмотрите, есть ли какие-нибудь файлы с именем вашего домена:
ls /etc/nginx/bx/site_enabled
Если вы обнаружите конфигурационный файл с именем домена, то вам необходимо работать именно с ним.
5.1. Выполнение следующего шага не обязательно и необходимо только в случае, если вы хотите повысить безопасность защищённых соединений. Добавьте в контекст server
(там, где только что настраивали SSL) следующие параметры:
ssl_protocols TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384;
6. Проверьте, что с корректностью синтаксиса Nginx нет никаких проблем:
nginx -t

Если в выводе команды Nginx сообщит вам, что есть синтаксические ошибки, то внимательно проверьте конфигурацию виртуального хоста. Возможно, что где-то не поставили точку с запятой, ошиблись с путями до файлов SSL-сертификата или не поставили закрывающую фигурную скобку контекста server
.
И если всё хорошо и нет синтаксических ошибок, то перезагружайте службу Nginx:
systemctl restart nginx

Теперь ваш сайт может принимать запросы клиентов по защищённому соединению. Проверить корректность установки можно, перейдя на сайт по HTTPS-соединению, или с помощью специализированных ресурсов. Например, sslshopper.com.
7. SSL-сертификат от Let’s Encrypt действителен в течение трёх месяцев. По истечению этого периода его требуется перевыпустить. Автоматизировать процесс перевыпуска можно с помощью планировщика задач Cron. Выполните команду crontab -e
и добавьте планировщику следующее задание:
0 0 1 */3 * certbot renew --force-renewal --quiet --post-hook "systemctl reload nginx.service"

В первый день каждого третьего месяца в 00:00 перевыпускать SSL-сертификат. После успешного обновления, утилита certbot будет выполнять post-hook
на перезагрузку конфигурации Nginx.
Особенности эксплуатации ca на роутерах mikrotik: резервное копирование, экспорт и импорт сертификатов
Mikrotik предоставляет пользователям достаточно широкие возможности, одна из них – создание на роутере собственного центра сертификации (CA), который позволяет управлять собственной инфраструктурой открытых ключей (PKI). Благодаря этому вы можете выпускать, подписывать и отзывать сертификаты, а также поддерживать доверительные отношения без использования дополнительных технических и программных средств. Это удобно, но эксплуатация CA на базе Mikrotik имеет свои особенности и подводные камни, которые нужно четко представлять и учитывать при выборе такого решения.
Освоить MikroTik вы можете с помощью онлайн-курса «Настройка оборудования MikroTik». В курсе изучаются все темы из официальной программы MTCNA. Автор – официальный тренер MikroTik. Материал подходит и тем, кто уже давно работает с оборудованием MikroTik, и тем, кто еще не держал его в руках. В состав входят 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.
Коротко напомним, что такое инфраструктура открытых ключей (PKI), это область доверия, где каждый участник может доверять другому участнику, не имея никаких предварительных данных о нем. В основе PKI лежит центр сертификации (CA), авторитет CA неоспорим, а доверие к нему не подвергается сомнению.
При создании CA генерируется ключевая пара из закрытого ключа и корневого сертификата, который содержит открытый ключ. Закрытый ключ является секретным и должен храниться как зеница ока, потому как его компрометация дает возможность злоумышленнику выпускать сертификаты от имени вашего CA, а следовательно, получить доступ к вашей области доверия. Корневой сертификат, наоборот, должен быть широко распространен на узлах вашей области доверия, так как именно он позволяет убедиться в подлинности выпущенных сертификатов.
При этом любой пользователь или узел, располагающий корневым сертификатом, может в любой момент времени убедиться в подлинности предъявленного ему сертификата другого пользователя или узла, а так как доверие к CA не подвергается сомнению, то автоматически возникают доверительные отношения с предъявителем действующего сертификата. Также корневой сертификат содержит адрес CRL – списка отозванных сертификатов, что позволяет дополнительно убедиться, что предъявленный сертификат не был отозван.
Следует понимать, что после того, как CA выпустил сертификат и передал его клиенту, он больше не может его контролировать и в случае компрометации его можно только отозвать. Между тем отозванный сертификат будет успешно проходить проверку подлинности при помощи корневого сертификата и проверить его на отзыв можно только при помощи списка CRL, который должен быть опубликован для общего доступа. Если CRL отсутствует или недоступен, то проверить сертификат на отзыв будет невозможно, а следовательно, такой сертификат будет принят как действительный.
В Mikrotik для работы с сертификатами следует перейти в отдельный раздел – System –Certificates. Прежде всего научимся правильно читать информацию о сертификатах, которая сосредоточена в первой колонке и представлена в виде буквенных флагов:
- А – authority – корневой сертификат при помощи которого мы можем подписывать другие сертификаты
- T – trusted – сертификат с которым установлены доверительные отношения
- L – crl – корневой сертификат содержит адрес списка отозванных сертификатов (CRL)
- I – issued – сертификат, выпущенный центром сертификации расположенном на данном устройстве
- K – private-key – сертификат имеет связанный с ним закрытый ключ
- E – expired – сертификат с истекшим сроком действия
- R – revoked – отозванный сертификат
Таким образом корневой сертификат CA должен иметь флаги KAT или KLAT в зависимости от того, использует ли центр сертификации списки отзыва CRL. Выпущенный данным CA сертификат будет иметь флаг KI, а будучи импортированным на другом узле в присутствии сертификата CA будет иметь флаги KT, а сам корневой сертификат чужого CA – просто T или LT.
Закладка System – Certificates – CRL содержит загруженные списки отзыва для всех сертификатов, имеющих флаг L, кроме корневого сертификата собственного CA. Для работы со списками отзыва следует выполнить некоторые настройки, они расположены в System – Certificates – Settings. Флаг Use CRL включает использование списков отзыва, флаг CRL Download разрешает загрузку списков для сертификатов, содержащих адрес CRL. Если установить первый, но не устанавливать второй, то списки CRL будут работать только для собственного CA.
Еще одна важная опция – место хранения CRL – CRL Store, по умолчанию там стоит вариант хранения в оперативной памяти – ram. Но здесь есть первые подводные камни, объем RAM занимаемый списком рассчитывается по формуле:
4MB 10 * <CRL_size>
Таким образом даже самый небольшой список будет занимать от 4 МБ оперативной памяти, что может быть критично для младших моделей с небольшим объемом оперативной памяти, в этом случае значение CRL Store следует изменить на system.
Следующий важный вопрос: а что будет, если роутер с ролью CA выйдет из строя? В таком случае вы полностью потеряете контроль над своей PKI и вам потребуется создать новый CA и перевыпустить все сертификаты. Избежать этого можно только одним образом – созданием резервной копии устройства в бинарном формате. Для этого перейдите в Files и нажмите кнопку Backup, укажите имя файла и обязательно задайте пароль (в противном случае закрытые ключи выгружены в резервную копию не будут).
Либо выполните в терминале:
/system backup save name=backup password=<MY_PASSWORD>
Но бинарная копия имеет ряд существенных ограничений, она предназначена для восстановления только на том устройстве, на котором была создана, либо на другом той же модели при окончательном выходе устройства из строя. Это связано с тем, что при восстановлении такой копии будут восстановлены и MAC-адреса, а появление в одной сети двух устройств с одинаковыми MAC-адресами способно привести к серьезным сбоям в ее функционировании. Ну и наконец, вы не сможете восстановить бинарную резервную копию на другой модели роутера.
Этих недостатков лишена копия настроек в текстовом формате, которую можно полностью или частично восстановить на любом устройстве с RouterOS. Для ее создания выполните команду:
/export file=export_cfg
После чего в разделе Files у вас появится файл с указанным именем и расширением .rsc. Но данный файл не содержит ключей и сертификатов и не годится для восстановления CA. Скажем сразу – никаким иным способом, кроме как бинарным бекапом, перенести CA на другой роутер нельзя. Фактически центр сертификации получается в своем роде “одноразовым”, его можно перенести только на точно такое же устройство, в случае апгрейда вам придется создать инфраструктуру PKI заново.
Но значит ли это, что вам не нужно делать резервную копию ключей и сертификатов? Нет. Никогда нельзя исключать внезапный выход роутера из строя, как и невозможность приобрести ему на замену точно такую же модель. А ситуация, когда все работает, хоть и с ограничениями, всегда лучше ситуации, когда не работает ничего.
Несмотря на то, что полноценно восстановить CA на другом узле мы не сможем, но работу служб, использующих сертификаты восстановить можно, хотя и с некоторыми оговорками. В некоторых случаях они могут оказаться существенными, почему так мы покажем ниже.
А пока экспортируем нужные нам ключи и сертификаты. Перейдем в System – Certificates, найдем там корневой сертификат CA и щелкнув на него правой кнопкой мыши выберем Export. Формат не имеет принципиального значения, при выборе PEM вы получите два файла – сертификат и закрытый ключ, при выборе PKCS12 – единственный файл .p12.
Обязательно укажите пароль в поле Export Passphrase, в противном случае закрытые ключи выгружены не будут.
Затем, аналогичным образом, выгружаем сертификаты и ключи для служб, работающих на данном роутере, клиентские и серверные сертификаты, используемые на других узлах, выгружать не имеет смысла. Обратите внимание, так как выгружаемые ключевые пары содержат закрытые ключи, то следует обеспечить их безопасное хранение, особенно закрытого ключа центра сертификации CA.
При переходе на другое устройство вам потребуется загрузить сертификаты и ключевые пары, либо файлы p12 в Files. После чего импортировать их в System – Certificates. Последовательность импорта такова: сначала сертификат, потом закрытый ключ, в случае файла p12 все импортируется за одно действие.
Глядя на статус импортированного корневого сертификата – KLAT – можно подумать, что все хорошо, но увы. Выпущенный этим же CA серверный сертификат импортируется не как KI, а как KT, это означает, что он будет работать, но отозвать мы его никогда не сможем, это же относится и к клиентским сертификатам, почему мы выше и сказали, что экспортировать их бессмысленно.
При этом вы можете продолжать выпускать сертификаты от имени CA и подписывать их корневым сертификатом. Если вы не используете в своей инфраструктуре PKI отзыв сертификатов, то можете продолжать работать. Никаких проблем при этом не возникнет.
А мы тем временем перейдем к спискам отзыва, так как это самое больное место в этой схеме. При создании корневой ключевой пары CA, в момент подписи запрашивается адрес опубликования CRL – СА CRL Host, именно по этому адресу Mikrotik поднимет веб-сервер и опубликует список отозванных сертификатов.
Здесь снова есть подводные камни. Файл списка CRL при каждом изменении меняет свое название на номер итерации, так при первом создании он будет http://192.168.111.1/crl/1.crl, а после следующего отзыва превратиться в http://192.168.111.1/crl/2.crl. Адрес списка CRL содержится в корневом сертификате CA, поэтому, если вы используете несколько узлов, разрешающих доступ по сертификатам выпущенным Mikrotik, то после каждого отзыва вы должны заново экспортировать корневой сертификат СА и распространить его на все узлы вашей области доверия PKI, как минимум на те, которые принимают сертификаты для аутентификации или авторизации.
При переносе ключевой пары CA на другой хост RouterOS прочитает из корневого сертификата адрес CRL и попытается его скачать. Но так как старый роутер заменен новым, с тем же адресом, скачивать ему будет нечего. К сожалению, Mikrotik не позволяет импортировать файл списка CRL, поэтому даже имея его на руках вы не сможете загрузить его в устройство.
Но ведь мы можем выдавать новые сертификаты и можем их отозвать? Можем. Но новый список CRL при этом не формируется, центр сертификации будет продолжать пытаться загрузить список CRL указанный в корневом сертификате, которого в новом роутере не существует.
Таким образом, при переносе ключевой пары CA на новый роутер мы имеем возможность выдавать новые сертификаты, но сразу перестают действовать списки отзыва, т.е. клиенты с отозванными сертификатами снова могут подключиться к серверу, а также теряется возможность отзыва вновь выпущенных сертификатов.
Фактически старый CA перестал существовать, но мы можем продолжать поддерживать работоспособность текущей инфраструктуры PKI, хотя и с ограничениями, и планомерно планировать переход на сертификаты нового CA. Такой сценарий гораздо предпочтительнее, чем полный отказ инфраструктуры.
Как видим, в RouterOS нет возможности полноценно перенести CA на другое устройство, это серьезное ограничение и его следует обязательно учитывать при планировании инфраструктуры, в тоже время, располагая экспортированной ключевой парой CA и собственных сертификатов роутера вы всегда сможете восстановить работоспособность инфраструктуры, хотя и существенными ограничениями.
Освоить MikroTik вы можете с помощью онлайн-курса «Настройка оборудования MikroTik». В курсе изучаются все темы из официальной программы MTCNA. Автор – официальный тренер MikroTik. Материал подходит и тем, кто уже давно работает с оборудованием MikroTik, и тем, кто еще не держал его в руках. В состав входят 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.