Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
Последняя версия Следующая версия справа и слева
security:free-ssl [2019/07/29 08:41]
admin
security:free-ssl [2021/04/20 12:07]
admin
Строка 3: Строка 3:
 {{ https://letsencrypt.org/images/letsencrypt-logo-horizontal.svg }} {{ https://letsencrypt.org/images/letsencrypt-logo-horizontal.svg }}
  
-<note> +Старый способ получения сертификатов через ''letsencrypt-auto'' больше не поддерживается. При запуске выдается такая ошибка:
-[[security:free-wildcard-ssl-certificate|Бесплатный Wildcard SSL сертификат]] +
-</note>+
  
-[[https://letsencrypt.org/|Let's Encrypt]] позволяет получить бесплатный SSL сертификат автоматическибез регистрации и СМС! Дело нескольких минут. И этот сертификат [[https://letsencrypt.org/2015/10/19/lets-encrypt-is-trusted.html|воспринимают все популярные браузеры]]! +<code> 
- +./letsencrypt-auto has insecure permissions! 
- +To learn how to fix themvisit https://community.letsencrypt.org/t/certbot-auto-deployment-best-practices/91979/ 
-  * Сертификат без установки программ: https://www.sslforfree.com/ +Upgrading certbot-auto 1.9.0 to 1.11.0... 
-  * [[https://habrahabr.ru/post/346798/|Гид по SSL]] +Replacing certbot-auto..
-  * [[google-likes-https|Гугл предпочитает https]] +Your system is not supported by certbot-auto anymore. 
-  * [[https://scotthelme.co.uk/how-to-revoke-a-lets-encrypt-certificate/|Как отозвать сертификат Lets encrypt]] +Certbot will no longer receive updates. 
- +Please visit https://certbot.eff.org/ to check for other alternatives.
- +
-===== Установка необходимо ПО ===== +
- +
-<code bash> +
-cd ~ +
-git clone https://github.com/letsencrypt/letsencrypt+
 </code> </code>
  
-===== Получение бесплатного SSL сертификата =====+Теперь можно воспользоваться мастером, который подскажет, что нужно [[https://certbot.eff.org/instructions|сделать по шагам]].
  
-<code bash> +По сути, нужно установить snap-пакет: ''sudo snap install --classic certbot''.
-cd letsencrypt +
-./letsencrypt-auto --agree-dev-preview --server https://acme-v01.api.letsencrypt.org/directory -a manual auth +
-</code>+
  
-При этом попросят ввести пароль, чтобы скрипт запустился с правами root. +===== Продление =====
- +
-Далее необходимо ввести все домены, на которые необходимо получить сертификаты, через пробел и/или запятую. Далее предложат записать в публичный лог о получении сертификата, соглашаемся. +
- +
-После чего получим следующее сообщение+
- +
-<code> +
-Make sure your web server displays the following content at +
-http://site.ru/.well-known/acme-challenge/abcdef-abcdef-abcdef before continuing: +
- +
-abcdef-abcdef-abcdef +
- +
-If you don't have HTTP server configured, you can run the following +
-command on the target server (as root): +
- +
-mkdir -p /tmp/letsencrypt/public_html/.well-known/acme-challenge +
-cd /tmp/letsencrypt/public_html +
-printf "%s" abcdef-abcdef-abcdef > .well-known/acme-challenge/abcdef-abcdef-abcdef +
-# run only once per server: +
-$(command -v python2 || command -v python2.7 || command -v python2.6) -c +
-"import BaseHTTPServer, SimpleHTTPServer; +
-BaseHTTPServer.HTTPServer(('', 80), SimpleHTTPServer.SimpleHTTPRequestHandler); +
-s.serve_forever()" +
-</code> +
- +
-Таким образом, для проверки необходимо создать файл ''.well-known/acme-challenge/abcdef-abcdef-abcdef'' с содержимым ''abcdef-abcdef-abcdef'', который бы открывался по ссылке http://site.ru/.well-known/acme-challenge/abcdef-abcdef-abcdef +
- +
-Проверяем, чтобы отдавались правильные заголовки и ответ:+
  
 <code bash> <code bash>
-curl --head http://site.ru/.well-known/acme-challenge/abcdef-abcdef-abcdef +sudo certbot certonly --webroot
-HTTP/1.1 200 OK +
-curl http://site.ru/.well-known/acme-challenge/abcdef-abcdef-abcdef +
-abcdef-abcdef-abcdef+
 </code> </code>
- 
-После этого нажимаем Enter в программе получения сертификатов. Если ввести несколько сайтов, программа интерактивно предложит проделать те же самые шаги для остальных доменов. 
- 
-<note tip> 
-Если после создания файла вместо него отдается страница CMS, необходимо настроить веб-сервер. А также на будущее, для следующих установок сертификатов, когда поставим редирект http => https. 
-</note> 
- 
-На примере Apache, сразу после ''RewriteEngine on'' вставляем: 
- 
-<file .htaccess> 
-# отдаем файлы для проверки Let's Encrypt сразу 
-RewriteRule ^(\.well-known/.*) - [L] 
-</file> 
- 
-<note tip> 
-Если в .htaccess корня сайта стоит AuthType Basic, отключить в каталоге ее можно размещением следующего файла: 
-</note> 
- 
-<file ini .htaccess> 
-Allow from all 
-Satisfy Any 
-</file> 
- 
-<note tip> 
-Если отдаются неправильные заголовки, их можно отключить: 
-</note> 
- 
-<file ini .htaccess> 
-Header unset Content-Type 
-</file> 
- 
-В случае успеха, получим сообщение об этом: 
  
 <code> <code>
-IMPORTANT NOTES: +/home/{user}/www
- - Congratulations! Your certificate and chain have been saved at +
-   /etc/letsencrypt/live/site.ru/fullchain.pem. Your cert will +
-   expire on 2016-03-18. To obtain a new version of the certificate in +
-   the future, simply run Let's Encrypt again. +
- - If you like Let's Encrypt, please consider supporting our work by: +
- +
-   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate +
-   Donating to EFF:                    https://eff.org/donate-le+
 </code> </code>
- 
-===== Установка полученных сертификатов ===== 
- 
-Теперь необходимо прописать в настройки веб-сервера пути к сертификатам и сделать редирект на https. 
- 
-<note tip> 
-Так как [[https://letsencrypt.org/2015/11/09/why-90-days.html|сертификаты выдаются на 3 месяца]] (такая политика - чем чаще меняем сертификат, тем меньше вероятность, что сертификат будет скомпрометирован, а также таким способом навязывается автоматизация получения сертификатов), вместо копирования файлов лучше поставить на них симлинки, это будет удобнее. 
-</note> 
- 
-^ Файл          ^ Назначение                          ^ Apache                    ^ nginx ^ 
-| privkey.pem   | приватный ключ для сертификата      | SSLCertificateKeyFile     | ssl_certificate_key | 
-| cert.pem      | сертификат сервера                  | SSLCertificateFile        | :-: | 
-| chain.pem     | сертификат цепочки (не обязательно) | SSLCertificateChainFile   | :-: | 
-| fullchain.pem | соединение chain.pem и cert.pem                               | ssl_certificate | 
- 
-==== Apache ==== 
- 
-Для активации SSL сертификатов ''10.0.0.1'' заменить на свой IP, и прописать в конфиге индейца: 
- 
-<file ini site.conf> 
- 
-<VirtualHost 10.0.0.1:80 10.0.0.1:443> 
-SSLEngine on 
-SSLCertificateFile /var/www/httpd-cert/vds/site.ru.crt 
-SSLCertificateChainFile /var/www/httpd-cert/vds/site.ru.chain.crt 
-SSLCertificateKeyFile /var/www/httpd-cert/vds/site.ru.key 
-</VirtualHost> 
- 
-</file> 
- 
-Для редиректов с www и http на https: 
- 
-<file ini .htaccess> 
-# 301 редирект с адресов с www на адреса без www 
-RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC] 
-RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L] 
- 
-# Редирект на HTTPS 
-RewriteCond %{HTTPS} !=on 
-RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] 
-</file> 
- 
-==== Nginx ==== 
- 
-<file ini site.conf> 
-server { 
-  listen 443; 
-  ssl on; 
-  ssl_certificate /etc/ssl/site.crt; 
-  ssl_certificate_key /etc/ssl/site.key; 
-} 
-</file> 
- 
-===== Продление сертификата ===== 
- 
-До просрочки будут приходить письма напоминания о необходимости продления сертификата такого рода: 
- 
-<code> 
-Hello, 
- 
-Your certificate (or certificates) for the names listed below will expire in 
-0 days (on 25 Feb 17 17:21 +0000). Please make sure to renew 
-your certificate before then, or visitors to your website will encounter errors. 
- 
-pushorigin.ru 
- 
-For any questions or support, please visit https://community.letsencrypt.org/. 
-Unfortunately, we can't provide support by email. 
- 
-For details about when we send these emails, please visit 
-https://letsencrypt.org/docs/expiration-emails/. In particular, note 
-that this reminder email is still sent if you've obtained a slightly 
-different certificate by adding or removing names. If you've replaced 
-this certificate with a newer one that covers more or fewer names than 
-the list above, you may be able to ignore this message. 
- 
-If you want to stop receiving all email from this address, click 
-http://mandrillapp.com/track/unsub.php?u=... 
-(Warning: this is a one-click action that cannot be undone) 
- 
-Regards, 
-The Let's Encrypt Team 
-</code> 
- 
-Само продление: 
- 
-<code bash> 
-./letsencrypt-auto --server https://acme-v01.api.letsencrypt.org/directory -a manual auth 
-service nginx reload 
-</code> 
- 
-Надо не забыть перегрузить веб-сервер! 
- 
-По материалам [[http://habrahabr.ru/post/270273/|статьи]]. 
- 
Печать/экспорт