Установка SSL сертификата. Перенос сайта на HTTPS

Установка SSL сертификата Letsencrypt

Подробная информация по установке и тонкой настройке Вы сможете прочитать на официальном сайте letsencrypt.org. А я начну рассказывать все пошагам:

1. Устанавливаем клиента для работы с Letsencrypt

$ git clone https://github.com/letsencrypt/letsencrypt

$ cd letsencrypt

$ ./letsencrypt-auto --help

2. Создаем SSL сертификат для конкретного домена

./letsencrypt certonly --webroot -w /var/www/html/domain.ru -d domain.ru -d www.domain.ru

В процессе выполнения скрипт запросит у Вас почтовый адрес администратора и подтверждение пользовательского соглашения.

Если все прошло удачно, то в папке в системе создастся папка etc/letsencrypt/live/domain.ru в которой и будут лежать файлы нашего сертификата

Проверить установлен сертификат можно командой:

openssl x509 -noout -text -in /etc/letsencrypt/live/createseo.ru/cert.pem | grep DNS  (Проверка ДНС)

3. Генерация ключа криптозащиты длинной 4096

openssl dhparam -out /etc/letsencrypt/live/domain.ru/dhparam.pem 4096

Генерация занимает длительное время. У меня ушло примерно 10 минут.

4. Конфигурация Nginx

Приведу пример конфигурационного файла. domain.ru и ВАШ_IP замените на свои данные

server {

    listen ВАШ_IP:80;

    server_name domian.ru www.domian.ru;

    rewrite ^ https://domian.ru$request_uri? permanent;

}

 

server {

    listen ВАШ_IP:443  ssl spdy deferred;

    server_name domian.ru www.domian.ru;

    #rewrite ^ https://domian.ru$request_uri? permanent;

    access_log  /var/log/nginx/host.access.log main;

 

    server_name_in_redirect off;

 

    location / {

      proxy_pass      http://127.0.0.1:8880/;

      proxy_redirect    off;

      proxy_set_header  Host $host;

      proxy_set_header  X-Real-IP $remote_addr;

      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;

      client_max_body_size 10m;

      proxy_connect_timeout 90;

    }

 

    location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|js)$ {

      root /var/www/html/domian.ru;

    }

 

    ssl on;

     ssl_session_timeout 24h;

     ssl_certificate /etc/letsencrypt/live/domian.ru/fullchain.pem;

     ssl_certificate_key /etc/letsencrypt/live/domian.ru/privkey.pem;

     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

     ssl_prefer_server_ciphers on;

     ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:

     ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;

     ssl_session_cache shared:SSL:10m;

     add_header Strict-Transport-Security "max-age=31536000;";

     resolver 8.8.8.8 8.8.4.4 valid=300s;

     ssl_stapling on;

     ssl_stapling_verify on;

     resolver_timeout 10s;

     spdy_keepalive_timeout 300;

     spdy_headers_comp 9;

     ssl_dhparam /etc/letsencrypt/live/domian.ru/dhparam.pem;

}

5. Конфигурация Apache

1. В файле ssl.conf закомментировать строку Listen 443

2. В секцию VirtualHost добавить SetEnv HTTPS on. Для примера:

<VirtualHost 127.0.0.1:8880>

    SetEnv HTTPS on

    DocumentRoot /var/www/html/domain.ru

    ServerName  domain.ru

    ServerAlias *. domain.ru www.domain.ru

</VirtualHost>

6. Перезапустить Apache и nginx

service httpd restart

service nginx restart

7. Правка файла robots.txt

Sitemap: https://domain.ru/sitemap.xml

Host: https://domain.ru

8. Добавление сайта в поисковые системы

В Yandex и Google вебмастерах добавить сайт с HTTPS или указать главным зеркалом сайт с сертификатом

9.  Обновлять сертификат каждые 90 дней. 

cd letsencrypt/ # перейти в директорию

letsencrypt git pull # скачать обновления репозитория

./letsencrypt-auto --help # проверить, что все нормально

sudo service nginx stop # остановить сервер

./letsencrypt-auto renew # ← обновить сертификаты

sudo service nginx start # запустить сервер

10. А дальше=)) Следить за позициями сайта .