Подключение Let’s Encrypt к сайту и настраиваем apache или nginx

Thank you for reading this post, don't forget to subscribe!

Гене­ра­ция сер­ти­фи­ка­тов и настрой­ка авто обновлений
Созда­ем ката­лог для certbot и ска­чи­ва­ем его:

cd / && mkdir downloads && cd /downloads
wget https://dl.eff.org/certbot-auto && chmod a+x certbot-auto

Далее, гене­ри­ру­ем и настра­и­ва­ем сертификат:

./certbot-auto certonly --webroot --webroot-path /var/www/domain.com --renew-by-default --email email@domain.com --text --agree-tos -d domain.com -d www.domain.com

Опи­са­ние параметров:

  • webroot — метод гене­ра­ции и под­клю­че­ния сер­ти­фи­ка­та. Этот метод необ­хо­ди­мо ука­зать толь­ко в том слу­чае, если Ваш DNS-про­вай­дер кон­тро­ли­ру­ет доступ к ресур­су по опре­де­лён­ным про­то­ко­лам (как, напри­мер, CloudFlare мони­то­рит актив­ность SSL);
  • webroot-path — дирек­то­рия, в кото­рой рас­по­ло­же­ны фай­лы сайта/домена;
  • renew-by-default — опция для авто­ма­ти­че­ско­го обнов­ле­ния сертификата;
  • email — Ваш e-mail, нужен для полу­че­ния дан­ных о состо­я­нии сертификата;
  • text — вывод инфор­ма­ции о про­цес­се гене­ра­ции в тек­сто­вом виде;
  • agree-tos — опция согла­сия с Terms of Service;
  • d — (domain) домен, к кото­ро­му мож­но при­ме­нить сер­ти­фи­кат. Мож­но ука­зать несколько.

После гене­ра­ции, в слу­чае успе­ха, полу­ча­ем сле­ду­ю­щее сообщение

IMPORTANT NOTES: — Congratulations!
Your certificate and chain have been saved at /etc/letsencrypt/live/myhost.tld/fullchain.pem.
Your cert will expire on 2020-01-01.
To obtain a new version of the certificate in the future, simply run Let’s Encrypt again.

Это зна­чит, что ключ и сер­ти­фи­кат сге­не­ри­ро­ва­лись успеш­но, и теперь лежат по адресу

ls -la /etc/letsencrypt/live/domain.com/

Конфигурация VirtualHost и 301 редирект для домена с http на https в apache (debian)

Теперь при­сту­пим к настрой­ке Apache. Обя­за­тель­но дела­ем бекап рабо­че­го кон­фи­га и при­сту­па­ем к редактирования:

Здесь, в самом вер­ху фай­ла, добав­ля­ем новую дирек­ти­ву VirtualHost со сле­ду­ю­щим содержимым:

Дан­ная настрой­ка будет авто­ма­ти­че­ски пере­на­прав­лять всех вхо­дя­щих на вер­сию сай­та с SSL.

В основ­ном VirtualHost меня­ем порт на 443:

Ниже впи­сы­ва­ем кон­фи­гу­ра­цию SSL:

Опи­са­ние переменных:

  • SSLEngine On — вклю­че­ние меха­низ­ма шифрования;
  • SSLProtocol all -SSLv2 — раз­ре­ше­ние исполь­зо­вать толь­ко SSLv2, т.к. v1 уже не явля­ет­ся стойким;
  • SSLCertificateFile — путь к фай­лу сер­ти­фи­ка­та (*.crt);
  • SSLCertificateKeyFile — путь к фай­лу клю­ча (*.rsa).

После всех изме­не­ний — пере­за­гру­жа­ем Apache, пред­ва­ри­тель­но вклю­чив mod_ssl и про­ве­рив кон­фиг на кор­рект­ность синтаксиса:

Про­ве­ря­ем. Если всё сде­ла­но пра­виль­но — в адрес­ной стро­ке, рядом с име­нем сай­та, дол­жен быть зелё­ный замок.

Настрой­ка TLS/SSL на web сер­ве­ре — nginx
Сге­не­ри­ру­ем Diffie-Hellman ключ

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Доба­вим сер­ти­фи­ка­ты в конфиг

sudo nano /etc/nginx/snippets/ssl-domain.com.conf

ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;

Созда­дим вто­рой файл с пара­мет­ра­ми для настро­ек SSL

sudo nano /etc/nginx/snippets/ssl-params.conf

 

 

Сде­лай­те резерв­ную копи­ю­кон­фи­га ваше­го вир­ту­аль­но­го хоста в кото­рый будем добавв­лять ssl

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak

Редак­ти­ру­ем его

sudo nano /etc/nginx/sites-available/default

Я пред­ла­гаю кон­фи­гу­ра­цию nginx с реврай­та­ми http на https и www на без www (nginx redirects. http to https and www to non-www)

 

 

Убеж­да­ем­ся, что все ок и пере­за­гру­жа­ем nginx

Обнов­ле­ние сертификата

Так­же воз­мож­но доба­вить в cron

Мож­но запу­стить обнов­ле­ние ипро­ве­рить тре­бу­ет­ся или нет в теку­щий момент обнов­ле­ние сертификата

Вывод

Доба­вим в cron обнов­ле­ние letsencrypt сертификатов

Допол­ни­тель­но.

Сопо­став­ле­ние дефолт­но­го кон­фи­га апа­ча с назва­ни­ем фай­лов сер­ти­фи­ка­тов, гене­ри­ру­е­мых летсэнкриптом: