Новая версия стати. только самое необходимое
добавляем репозиторий:sudo add-apt-repository ppa:certbot/certbotустанавливаем certbot:
sudo apt install python-certbot-apacheдобавляем сертификат в конфиг апача.
sudo certbot --apache -d your_domain -d www.your_domainгде, your_domain название домена из конфига виртуального хоста:
ServerName your_domain;после установки certbot-а, он сам добавит необходимые инструкции в cron чтобы обновлять сертификаты. по умолчанию сертификат выдается на 80 дней. certbot будет каждые 20 дней его пытаться обновить. чтобы проверить процесс обновления сертификатов, наберите команду
sudo certbot renew --dry-run
Старая статья, для истории...
1. Установим Let's Encrypt клиент
Для начала установим Let's Encryps клиент из официального репозитория убунты.sudo apt-get update sudo apt-get install python-letsencrypt-apache
2. Создадим SSL сертификат
Для того, чтобы создать сертификат на один домен, выполним команду:sudo letsencrypt --apache -d example.comдля нескольких:
sudo letsencrypt --apache -d example.com -d www.example.comуказываем email адрес для восстановления, а также соглашаемся с условиями использования. Все. необходимые сертификаты созданы. Убедимся в этом при помощи команды:
sudo find /etc/letsencrypt/live/ -type l, которая покажет какие файлы сертификатов созданы и пути к ним.
Теоретически, letsencrypt будет пытаться сам прописать необходимые настройки в апач, но, у меня не все виртуальные хосты апача лежат в sites-available/enabled, поэтому ему это не удалось, и мы будем править настройки виртуальных хостов вручную.
3. Добавление SSL сертификатов в настройки виртуального хоста Apache
Открываем файл с настройками виртуального хоста, и меняем порт с 80 на 433:<VirtualHost *:433> ... </VirtualHost>также, чтобы пользователи попадали на наш сайт и через порт 80, создадим еще один виртульных хост и на 80 порту, с тем же хостеймом и алиасами, который просто будет делать редирект на порт 433.
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com ServerAdmin admin@example.com Redirect "/" "https://example.com/" </VirtualHost>теперь, переходя по старым ссылкам (с http) пользователи автоматически будут попадать на новую версию хоста с SSL.
в виртуальном хосте на порту 443 добавим наш сертификат:
... SSLEngine on SSLProtocol all -SSLv2 SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pemперезапустим апач:SSLOptions +StdEnvVars SSLOptions +StdEnvVars BrowserMatch "MSIE [2-6]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 # MSIE 7 and newer should be able to use keepalive BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown ...
sudo /etc/init.d/apache2 restartи теперь при попытке перейти на http://example.com/example.html нас будет перенаправлять на https://example.com/example.html
4. Проверим сертификат
Проверить наш новый SSL сертификат можно перейдя по ссылке: https://www.ssllabs.com/ssltest/analyze.html?d=example.com. Разумеется, в url ссылки вместо example.com вы должны указать свой домен5. Обновление сертификата.
Let's Encrypt сертификаты действительны в течении 90 дней, но рекомендуется обновлять их раз в 60 дней, во избежание возможных проблем. Клиент Let's Encrypt имеет встроенную команду для обновления сертификатов. Она проверяет установленные в системе сертификаты и если до срока окончания их действия остается менее 30 дней - то обновляет их. Чтобы запустить обновление для всех установленных сертификатов нужно выполнить команду:sudo letsencrypt renewПоскольку мы недавно установили сертификат, команда будет проверять только дату истечения срока действия и выведет сообщение о том, что сертификат еще не обновлен. Результат должен выглядеть примерно так:
Processing /etc/letsencrypt/renewal/example.com.conf The following certs are not due for renewal yet: /etc/letsencrypt/live/example.com/fullchain.pem (skipped) No renewals were attempted.Для того, чтобы быть уверенными что наши сертификаты не устареют, создадим правило для cron которое будет запускать команду обновления вместо нас. Поскольку обновляются сертификаты, которым до окончания срока действия осталось менее 30 дней, то мы можем создать правило, для запуска команды обновления, скажем, раз в неделю.
sudo crontab -eи добавим туда строку:
30 2 * * 1 /usr/bin/letsencrypt renew >> /var/log/le-renew.logв результате команда /usr/bin/letsencrypt renew будет выполняться каждый понедельник в 2.30 ночи. Логи выполнения обновлений можно будет смотреть в /var/log/le-renew.log.
Комментариев нет:
Отправить комментарий