aboutsummaryrefslogtreecommitdiff
path: root/content/weblog/2018-08-12_ssl-with-lets-encrypt/index.ru.md
diff options
context:
space:
mode:
authorYaroslav <contact@yaroslavps.com>2020-03-17 16:48:19 +0300
committerYaroslav <contact@yaroslavps.com>2020-03-17 16:48:19 +0300
commitbad0f74397db8dc41b4ed7845b86184e15752253 (patch)
treecb2571a8cb736c448ce0f1058672b55c26ad2077 /content/weblog/2018-08-12_ssl-with-lets-encrypt/index.ru.md
parentd66d38aa50df44533ea8ba8347a9f4a8713eebf0 (diff)
downloadyaroslavps.com-bad0f74397db8dc41b4ed7845b86184e15752253.tar.gz
yaroslavps.com-bad0f74397db8dc41b4ed7845b86184e15752253.zip
migrate post from 2018-08-12
Diffstat (limited to 'content/weblog/2018-08-12_ssl-with-lets-encrypt/index.ru.md')
-rw-r--r--content/weblog/2018-08-12_ssl-with-lets-encrypt/index.ru.md139
1 files changed, 139 insertions, 0 deletions
diff --git a/content/weblog/2018-08-12_ssl-with-lets-encrypt/index.ru.md b/content/weblog/2018-08-12_ssl-with-lets-encrypt/index.ru.md
new file mode 100644
index 0000000..c041641
--- /dev/null
+++ b/content/weblog/2018-08-12_ssl-with-lets-encrypt/index.ru.md
@@ -0,0 +1,139 @@
++++
+title = "Легкий и халявный SSL с Let's Encrypt"
+date = 2018-08-12T22:28:00Z
++++
+
+Всем нам известно насколько важна безопасность в веб-разработке, и не только в
+вебе. И не надо забыть про тот самый SEO Google который повышает рейтинг сайтов
+которые работают с https вместо старого доброго http. (Хоть мне плевать на
+Google, но мои клиенты так не думают, также как основная часть аудитории этой
+статьи)
+
+<!-- more -->
+
+Возможно вы давно хотели добавить SSL сертификат для своего сайта или сервиса,
+но чувак, они же деньги стоят! А вот вы ошибаетесь (Если вы уже знали про Let's
+Encrypt, то прощу прошение за такое бесполезное введение).
+
+В этом туториале я коротко объясню как сгенерировать сертификат SSL с Let's
+Encrypt с помощью Certbot используя nginx. В моем случае я его устанавливал на
+Debian Stretch, комманда для установки Certbot может отличатся для вас в
+зависимости от вашей ОСи.
+
+Перед тем как начать, устанавливаем
+
+```
+# apt-get install certbot
+```
+
+До того как мы сможем установить сертификат, нам нужно настроить nginx для
+установки и последовательной продления сертификата. Для этого нам понадобится
+поменять дефолтный файл настройки сервера nginx. Нам это необходимо сделать для
+того чтобы, сервер Let's Encrypt смог прочитать файл "челленджа" сгенерирован
+Certbot'ом и убедится в том что домен(ы) действительно наш(и).
+
+```nginx
+server {
+ listen 80 default_server;
+ listen [::]:80 default_server;
+
+ server_name _;
+
+ # This is so that Let's Encrypt can look for the challenge
+ location /.well-known/acme-challenge/ {
+ root /var/www/html/;
+ default_type text/plain;
+ }
+
+ # The rest of your configuration...
+}
+```
+
+После того как мы редактировали настройки, нам потребуется перезапустить с
+
+```
+# sudo systemctl restart nginx
+```
+
+Теперь у нас все готово чтобы сгенерировать сертификат. Мне нужен был
+сертификат для несколько поддоменов, так что я их всех добавил в список
+аргументов используя флаг -d, например
+
+```
+# certbot certonly --webroot -w /var/www/html -d www.example.com -d example.com
+```
+
+Certbot попросит ваш адрес электронной почти, в который будут отправляться
+уведомления об истекании срока действия вашего сертификата. Однако Certbot
+красавчик умеет их продлевать автоматический.
+
+Вот и наш сертификат готов. А теперь вы можете настроить nginx чтобы он принимал
+https запросы и делал редирект http запросов на https. Не забудьте добавить
+правильный путь к вашему сертификату и ключу в `ssl_certificate` и
+`ssl_certificate_key` соответственно.
+
+```nginx
+server {
+ listen 80;
+ listen [::]:80;
+ server_name www.example.com;
+ return 301 https://$host$request_uri;
+}
+
+server {
+ listen 443 ssl;
+
+ server_name www.example.com;
+ ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
+ ssl_certificate_key /path/to/key/www.example.com/privkey.pem;
+ location /static/ {
+ alias /home/webuser/mysite/static/;
+ }
+ location /media/ {
+ alias /home/webuser/mysite/media/;
+ }
+ location / {
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header Host $http_host;
+ proxy_redirect off;
+ proxy_pass http://127.0.0.1:8001;
+ }
+}
+```
+
+Один минус автоматического редиректа, заключается в том что старые браузеры,
+(ох уж эти старые неубиваемые версси Internet Explorer) которые не поддерживают
+https, не смогут открыть ваш сайт. Но лично мне по барабану на браузера
+десятилетней давности.
+
+Вы можете найти больше информации по Certbot на этой странице (сайт на
+английском):
+[https://certbot.eff.org/docs/using.html](https://certbot.eff.org/docs/using.html)
+
+Редактировано (2018/11/02): Недавно в 2018 Let's Encrypt добавили возможность
+сгенерировать универсальный сертификат для всех поддоменов (например,
+*.example.com).
+
+Чтобы сгенерировать такой вид сертификата, нам понадобится скачать последнюю
+версию certbot из официального репозитория гита
+
+```sh
+$ git clone https://github.com/certbot/certbot.git
+```
+
+После этого можем перейти в каталог certbot, и выполнить следующую комманду
+
+```sh
+$ ./certbot-auto certonly --manual \
+> --preferred-challenges=dns \
+> --email email@example.com \
+> --server https://acme-v02.api.letsencrypt.org/directory \
+> --agree-tos \
+> -d *.example.com
+```
+
+Для этого нам понадобится добавить запись TXT в настройках DNS нашего домена,
+посколько для таких сертификатов только доступен "dns challenge". Перед тем как
+нажать на клавишу ввода, убедитесь что настройки вашего домена обновлены.
+
+Имейте ввиду что такие виды сертификатов нельзя обновлять в автоматическом режиме.