На тесте установлю Let’s Encrypt который позволяет установить бесплатные SSL сертификаты на 90 дней и автоматически перевыдавать их.
Допустим на Ubuntu Server установлен Apache2 и есть один сайт, для которого мы настроили один файл конфигурации /etc/apache2/sites-available/ixnfo.conf, и включили его:
sudo a2ensite test
sudo service apache2 restart
Смотрите пример конфигурации в моей статье — Установка и настройка веб-сервера Apache2
Сайт работает по HTTP на 80, теперь приступим к установке Let’s Encrypt:
sudo apt-get update
sudo apt-get install git
sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
Перейдем в директорию с Let’s Encrypt и запросим сертификат для сайта:
cd /opt/letsencrypt
sudo ./letsencrypt-auto --apache -d ixnfo.com
Можно также запросить и для www поддомена:
sudo ./letsencrypt-auto --apache -d ixnfo.com -d www.ixnfo.com
Чтобы получить сертификат, сайт должен быть доступен по доменному имени из интернета через порт 80.
Для ресурсов внутри сети, с серыми IP, получить сертификат не получится.
После получения сертификата у меня создался и активировался еще один файл конфигурации /etc/apache2/sites-available/ixnfo-le-ssl.conf со следующим содержимым:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName ixnfo.com
DocumentRoot /var/www/ixnfo/
<Directory /var/www/ixnfo>
Options -Indexes
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/ixnfo.error.log
CustomLog /var/log/ixnfo.access.log combined
SSLCertificateFile /etc/letsencrypt/live/ixnfo.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/ixnfo.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/ixnfo.com/chain.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
Так как во время получения сертификата я согласился на переадресацию HTTP запросов на HTTPS, то в конце моего файла конфигурации /etc/apache2/sites-available/test.conf добавилось следующее:
RewriteEngine on
RewriteCond %{SERVER_NAME} =ixnfo.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
По истечении срока действия сертификата, его можно обновить командой:
sudo /opt/letsencrypt/letsencrypt-auto renew
Команду также можно добавить в Cron для автоматического обновления, смотрите мою статью — Использование и настройка CRON
Пример добавления в Cron (каждый понедельник в 3:15):
sudo crontab -e
15 3 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/letsencrypt-renew.log
Если срок сертификата еще не истекает и выполнить команду обновления, то ничего не произойдет:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
——————————————————————————-
Processing /etc/letsencrypt/renewal/example.com.conf
——————————————————————————-
Cert not yet due for renewal
——————————————————————————-
The following certs are not due for renewal yet:
/etc/letsencrypt/live/example.com/fullchain.pem expires on 2018-08-01 (skipped)
No renewals were attempted.
——————————————————————————-
Смотрите также:
Установка Certbot в Ubuntu