Делаем на сайте HTTPS или Let's Encrypt для всех

Answer

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five http://jquery2dotnet.com/ centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.

Вот буквально на днях, понадобилось по работе сделать чтобы сайт работал по защищенному соединению. Г - Безопасность как говориться. Ничего сложного в этом нет, и мы будем пользоваться бесплатным Let's Encrypt.

Использовать я его буду на корпоративном облаке Nextcloud. Внезапно понадобилось иметь к нему доступ из вне. Он конечно и так есть, но безопасности много не бывает. К тому же это всё таки рабочие файлы. И так. Что нам для этого понадобится: 
  • Собственно сам сервер куда мы будем ставить, у меня это Centos 8
  • Веб сервер на этом сервере. В моём случае это Apache
  • Домен
Домен обязательно. К нему будет обращение для верификации. Поэтому где то в тестовой среде не получится это сделать. И так, поехали:

Для Centos 8, cert-bot'a нет в репах. Поэтому качаем его: 

cd ~
wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto

После этого запускаем его. При первом запуске он установит зависимости которые ему нужны

certbot-auto

После установки зависимости сертбот попробует автоматом настроить apache, но у него не получится и он выдаст ошибку. Поэтому мы сами это сделаем 

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/localhost.key -out /etc/ssl/certs/localhost.crt

Перезапустим apache чтобы применить настройки

apachectl restart

Теперь выпустим сертификат для нашего домена. Повторяю: домен должен быть действительным

certbot-auto certonly

В качестве способа аутентификации выбирайте apache 

 Apache Web Server plugin (apache)

Теперь нужно отредактировать конфиг вебсервера. Добавим 443 порт. Должно получиться следующее

<VirtualHost *:80 *:443>


После этого добавим в этот же файл конфигурации веб сервера, после строчек с логами

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/vashdomen/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/vashdomen/privkey.pem

После этого перезапускаем apache

apachectl restart

и пробуем зайти на свой сайт через https. Должно всё получиться. 

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

nano /etc/crontab

Добавляем туда

# Cert Renewal
30 4 * * * root /usr/local/bin/certbot-auto renew --post-hook "/usr/sbin/apachectl restart" >> /var/log/le-renew.log

Чтобы по умолчанию использовался https, добавим переадресацию с 80 порта на 443. Приводим файл конфигурации к следующему виду:

<VirtualHost *:80>
    ServerName vashdomen
    ServerAlias www.vashdomen
    Redirect permanent / https://vashdomen
</VirtualHost>
<VirtualHost *:443>
    ServerName vashdomen
    ServerAlias www.vashdomen
    DocumentRoot /web/sites/vashdomen/www
    ErrorLog /web/sites/vashdomen/log/error.log
    CustomLog /web/sites/vashdomen/log/access.log common
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/vashdomen/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/vashdomen/privkey.pem
    <Directory /web/sites/vashdomen/www>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>



Поделись с друзьями

Имя:*
E-Mail: