GitHub – vasyakrg/kerioconnect-ssl-letsencrypt: Install and auto-renew SSL certificate for Kerio-Connect 9.x by Let’s Encrypt

Github – vasyakrg/kerioconnect-ssl-letsencrypt: install and auto-renew ssl certificate for kerio-connect 9.x by let’s encrypt

этот скрипт скачивает последнюю версию Kerio Connect с сайта-производителя, нужно лишь правильно выставить переменную wget_kci_path в terraform/terraform.tfvars, но вы можете пропустить этот шаг, если уже установили керио сами.

Использование let’s encrypt с kerio connect

GitHub - vasyakrg/kerioconnect-ssl-letsencrypt: Install and auto-renew SSL certificate for Kerio-Connect 9.x by Let's Encrypt
Let’s Encrypt возможно лучшая вещь, произошедшая в Интернет за последние лет десять. Это сервис, предоставляющий абсолютно бесплатно криптографические сертификаты X.509 для TLS шифрования (HTTPS). Главный минус, что сертификат выдается на 90 дней, но мы попробуем автоматизировать процедуру замены сертификата.

Отключаем http
Остановите в Kerio Connect если он запущен и установите режим запуска вручную, чтобы он не активировал себя снова при перезапуске. Измените служебный порт HTTPS на 8843 в панели администратора. Установка не будет работать иначе, потому что Certbot нуждается в портах 80 и 443 для проверки домена и получения сертификата.

Установим Nginx
Так как мы не хотим что-либо делать вручную, а также иметь возможность использовать стандартные веб-порты, нам необходимо установить реверс-прокси перед Kerio Connect

mkdir -p /var/www/mail
chown www-data:www-data /var/www/mail
apt-get install nginx ssl-cert

Создадим файл /etc/nginx/sites-available/kerio-connect.conf со следующим содержанием

server {
listen 80;
server_name nash_site; # заменить на адрес своего сайта
server_name_in_redirect off;
rewrite ^ https://$server_name$request_uri? permanent;
}

server {
listen 443 ssl;
server_name nash_site; # заменить на адрес своего сайта

ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem; 
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;

location /.well-known {
alias /var/www/mail/.well-known;
}

location / {
proxy_pass https://localhost:8843;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Remote-Port $remote_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
chunked_transfer_encoding on;
proxy_connect_timeout 6000;
proxy_send_timeout 6000;
proxy_read_timeout 6000;
send_timeout 6000;
}
}

Слинкуем сайт с nginx:

ln -s /etc/nginx/sites-available/kerio-connect.conf /etc/nginx/sites-enabled/kerio-connect.conf

Проверим конфигурацию:

nginx -t

Если ошибок нет, перегружаем nginx:

systemctl restart nginx.service

Установка Certbot

Теперь установим программу, которая будет за нас обновлять сертификаты

wget https://dl.eff.org/certbot-auto
chmod a x certbot-auto

Запустим

./certbot-auto

Создадим сертификат.

./certbot-auto certonly --webroot -w /var/www/mail -d nash_site

Если вы запускаете в первый раз, вам нужно будет ввести свой адрес электронной почты для экстренной ситуации, например, для отзыва сертификата. Это нужно сделать только один раз и после этого SSL-сертификат будет создан.

Про сертификаты:  Купить таблетки Литовит-У в интернет-магазине АРГО

Начинаем использовать

Изменим в файле /etc/nginx/sites-available/kerio-connect.conf строки

ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;

на:

ssl_certificate /etc/letsencrypt/live/nash_site/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/nash_site/privkey.pem;

Перезагрузим Nginx

systemctl restart nginx.service

Чтобы упростить обновление Kerio Connect, просто свяжите созданный сертификат и ключ с соответствующей папкой внутри иерархии Kerio Connect

ln -s /etc/letsencrypt/live/nash_site/fullchain.pem /opt/kerio/mailserver/sslcert/mail.crt
ln -s /etc/letsencrypt/live/nash_site/privkey.pem /opt/kerio/mailserver/sslcert/mail.key

Теперь заходим в панель управления Kerio Connect, выбираем Configuration > SSL Certificates и смотрите что там за сертификаты. Выбирайте установленный от Let’s Encrypt и делайте его активным.
Все, теперь при заходе на Ваш сайт nginx будет автоматически перебрасывать соединение на https, а браузер не будет ругаться на неправильный сертификат.

Обновление.

Осталось автоматизировать процесс перевыпуска сертификатов.
Просто запустим:

./certbot-auto renew

Если сертификат близок к истечению срока действия, он будет автоматически обновлен, в противном случае он будет храниться до следующего запуска.

Сперва скопируем Certbot в удобное место. Например, в /usr/local/bin

cp certbot-auto /usr/local/bin/

Чтобы получить новый сертификат, необходимо перезапустить службы после успешного продления. Создайте скрипт /root/certbot-post-hook.sh со следующим содержимым:

#!/bin/sh
systemctl restart nginx.service
systemctl restart kerio-connect.service

Сделаем его исполняемым и проставим права:

chmod 500 /root/certbot-post-hook.sh
chown root:root /root/certbot-post-hook.sh

Мы будем проверять необходимость перевыпуска сертификата каждую ночь, в 3 часа утра.
Создадим файл /etc/cron.d/certbot:

shell=/bin/sh
path=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
0 3 * * * root perl -e 'sleep int(rand(3600))' && certbot-auto -q renew --post-hook "/root/certbot-post-hook.sh"

Оцените статью
Мой сертификат
Добавить комментарий