Використовуйте для генерації безкоштовного робочого сертифікату Let's Encrypt. Сервіс, який дозволяє генерувати SSL сертифікати за допомогою автоматичного API.
Усі приклади і команди відображатимуться на базі Ubuntu 16.04. Домен, для якого потрібно згенерувати сертифікат, повинен бути закріпленим (pointed) за поточним Linux сервером.
Виконайте наступні кроки, щоб згенерувати та підключити сертифікат:
1. Встановіть Certbot:
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot
2. Certbot повинен відповісти на криптографічний запит, який відправляє «Let's Encrypt API», щоб довести, що ви контролюєте домен. Відкрийте потр 80 (HTTP) або 443 (HTTPS) у вашому брандмауері. Виконайте команду:
sudo ufw allow 80
Якщо команда ufw недоступна, встановіть її:
sudo apt-get install ufw
3. Запустіть Certbot:
sudo certbot certonly --standalone --preferred-challenges http -d example.com
де example.com - назва вашого домену.
В результаті виконання команди certbot будуть згенеровані файли сертифікату, які можна знайти у папці:
/etc/letsencrypt/live/example.com
Для перегляду її вмісту, виконайте команду ls:
sudo ls /etc/letsencrypt/live/example.com
вивід:
cert.pem chain.pem fullchain.pem privkey.pem README
Причиною того, що файли не згенерувалися може бути зайнятість порту 80 чи 433 іншою програмою, наприклад веб-сервером. Тимчасово зупиніть веб-сервер. Виконайте команду:
#якщо ви використовуєте apache2:
service apache2 stop
#якщо ви використовуєте nginx:
service nginx stop
і повторіть цей пункт знову. Не забудьте запустити веб-сервер по закінченню.
#якщо ви використовуєте apache2:
service apache2 start
#якщо ви використовуєте nginx:
service nginx start
4. Підключіть сертифікат у налаштуваннях віртуального хоста.
Для Apache2 використовуйте код:
<VirtualHost *:443>
ServerName example.com
.....
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
.....
</VirtualHost>
Для Nginx:
server {
listen *:443 ssl;
.....
ssl on;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
server_name example.com;
....
}
5. Перезавантажте веб-сервер:
#якщо ви використовуєте apache2
service apache2 restart
#якщо ви використовуєте nginx
service nginx restart
6. Включити авто-оновлення:
Для того щоб включити автооновлення, достатньо у кронтаб системи додати запис
0 2 15 * * /usr/bin/certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"