Интеграция letsencrypt c vesta панелью

Материал из wiki.nntc.nnov.ru
Перейти к навигации Перейти к поиску

Устанавливаем letsencrypt и letsencrypt-vesta

Настройка делалась по статье https://github.com/interbrite/letsencrypt-vesta

cd /usr/local
git clone https://github.com/letsencrypt/letsencrypt.git
git clone https://github.com/interbrite/letsencrypt-vesta.git

mail.nntc.nnov.ru

Vesta

Предварительные настройки Vesta

Изменяем настройки шаблона, чтобы папка .well-known была доступна прямо на proxy

cat /usr/local/vesta/data/templates/web/nginx/zimbra-force-https.tpl


server {
    listen      %ip%:%proxy_port%;
    server_name %domain_idn% %alias_idn%;
    location /.well-known {
    	default_type text/plain;
    	root /etc/letsencrypt/webroot;
	}
    location /(?!\.well-known) {
        rewrite ^(.*) https://%domain_idn%$1 permanent;
    } 
}

Даем команду vesta панели на перегенирацию конфигурационного файла nginx для всех хостов пользователя http_proxy

/usr/local/vesta/bin/v-rebuild-web-domains http_proxy

После выполнения этой команды изменения попадут в файл /home/http_proxy/conf/web/nginx.conf

Запрашиваем ключи у LetsEncrypt

letsencrypt-vesta http_proxy mail.nntc.nnov.ru

Будьте внимательны, Vesta для каждого домена поднимает поддомен www. Если он не прописан в DNS удалите этот alias из web-интерфейса vesta-панели.

Автоматизируем

cat /opt/ssl-key-update-mail.nntc.nnov.ru.sh
 
#!/bin/bash

letsencrypt-vesta http_proxy mail.nntc.nnov.ru

rcp -o StrictHostKeyChecking=no -r /etc/letsencrypt/live/mail.nntc.nnov.ru sslmngr@mail.nntc.nnov.ru:~
touch /tmp/renewed.txt
rcp -o StrictHostKeyChecking=no /tmp/renewed.txt sslmngr@mail.nntc.nnov.ru:~
rm /tmp/renewed.txt

Добавляем строчку в cron

01 01	1 * *	root	/opt/ssl-key-update-mail.nntc.nnov.ru.sh

Zimbra

Автоматизацию настройки Zimbra мы делали по этой статье https://wiki.zimbra.com/wiki/Installing_a_LetsEncrypt_SSL_Certificate

cat /opt/install-keys-to-zimbra.sh 
#!/bin/bash

if [ -e /home/sslmngr/renewed.txt ]
then 
cat /home/sslmngr/mail.nntc.nnov.ru/chain.pem /home/sslmngr/X3-root-cert.pem > /home/sslmngr/mail.nntc.nnov.ru/chain-and-root.pem
/opt/zimbra/bin/zmcertmgr verifycrt comm /home/sslmngr/mail.nntc.nnov.ru/privkey.pem /home/sslmngr/mail.nntc.nnov.ru/cert.pem /home/sslmngr/mail.nntc.nnov.ru/chain-and-root.pem 

cp /home/sslmngr/mail.nntc.nnov.ru/privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key
/opt/zimbra/bin/zmcertmgr deploycrt comm /home/sslmngr/mail.nntc.nnov.ru/cert.pem /home/sslmngr/mail.nntc.nnov.ru/chain-and-root.pem

rm /home/sslmngr/renewed.txt
#sudo -u zimbra /opt/zimbra/bin/zmcontrol restart
su zimbra -c "/opt/zimbra/bin/zmcontrol restart" -
fi

В cron добавляем

01 05	* * *	root	/opt/install-keys-to-zimbra.sh

gitlab.nntc.nnov.ru

Vesta

Предарительные настройки Vesta

Изменяем настройки шаблона, чтобы папка .well-known была доступна прямо на proxy

cat /usr/local/vesta/data/templates/web/nginx/gitlab_forcehttps_proxy.tpl
server {
    listen      %ip%:%proxy_port%;
    server_name %domain_idn% %alias_idn%;
    location /.well-known {
    	default_type text/plain;
    	root /etc/letsencrypt/webroot;
	}
    location /(?!\.well-known) {
        rewrite ^(.*) https://%domain_idn%$1 permanent;
    } 
}

Даем команду vesta панели на перегенирацию конфигурационного файла nginx для всех хостов пользователя http_proxy

/usr/local/vesta/bin/v-rebuild-web-domains http_proxy

После выполнения этой команды изменения попадут в файл /home/http_proxy/conf/web/nginx.conf

Запрашиваем ключи у LetsEncrypt

letsencrypt-vesta http_proxy gitlab.nntc.nnov.ru

Будьте внимательны, Vesta для каждого домена поднимает поддомен www. Если он не прописан в DNS удалите этот alias из web-интерфейса vesta-панели.

Автоматизируем

cat /opt/ssl-key-update-gitlab.nntc.nnov.ru.sh 
#!/bin/bash

letsencrypt-vesta http_proxy gitlab.nntc.nnov.ru

rcp -o StrictHostKeyChecking=no -r /etc/letsencrypt/live/gitlab.nntc.nnov.ru sslmngr@gitlab.nntc.nnov.ru:~
touch /tmp/renewed.txt
rcp -o StrictHostKeyChecking=no /tmp/renewed.txt sslmngr@gitlab.nntc.nnov.ru:~/
rm /tmp/renewed.txt

Добавляем строчку в cron

01 05	1 * *	root	/opt/ssl-key-update-gitlab.nntc.nnov.ru.sh

gitlab

Настройки на gitlab для применения новых ключей от letsencrypt, которые мы получили от vesta-панели (по rcp)

nano /etc/gitlab/gitlab.rb
...
nginx['redirect_http_to_https'] = true
nginx['ssl_client_certificate'] = "/etc/gitlab/ssl/ca.cer"
nginx['ssl_certificate'] = "/home/sslmngr/gitlab.nntc.nnov.ru/fullchain.pem"
nginx['ssl_certificate_key'] = "/home/sslmngr/gitlab.nntc.nnov.ru/privkey.pem"
nginx['listen_https'] = true
...


В качесте /etc/gitlab/ssl/ca.cer испольуется корневой X3 ключ самого letsencrypt

wget -c https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem -O /etc/gitlab/ssl/ca.cer

Но вы можете в качестве корневого использовать и самый родительский ключ Digital Ocean, которым подписан X3 сертификат Letsencrypt'а. Взять корневой сертификат X3 от digital Ocean можно по этой ссылке: https://www.identrust.com/certificates/trustid/root-download-x3.html