Упрочняем позиции в Гугле: бесплатный сертификатSSL на сайт Letsencrypt

(Ответов: 18, Просмотров: 2037)
Страница 1 из 2 12 Последняя
  1. Новичок
    • Регистрация: 28.04.2014
    • Сообщений: 11
    • Репутация: 4
    Итак, гугл анонсировал более высокое ранжирование для сайтов, защищенных SSL - https://habrahabr.ru/post/232629/. В декабре Letsencrypt вышли в открытую бету, предоставляя возможно получить бесплатный сертификат почти без ограничений для каждого домена.

    Для начала небольшой FAQ

    Это полностью бесплатно?
    Да, сам сертификат не стоит ничего.

    Его можно установить на обычный хостинг?
    Есть хостинги, поддерживающие его. Список: https://github.com/letsencrypt/letse...-Supporting-LE На счет русских хостингов не уверен. Здесь я опишу установку на VPS/VDS.

    Елки, он всего на 3 месяца!
    Повторный выпуск для сертификата можно сделать автоматически и добавить в cron (задачи, по расписанию).

    Говорят, нужно иметь на каждый HTTPS-сайт отдельный IP
    Уже нет. Есть технология SNI (Server Name Indication).Описывать ее не буду, почитайте в вики. Суть в том, что можно на 1 ip разместить несколько сайтов, зашифрованных SSL. поддержка этой технологии давно есть в nginx, apache. Но ее не поддержвает древний IE в Windows XP. Так что выбирать вам.

    Можно ли использовать на коммерческом сайте?
    Да. Это главное отличии от StartCom SSL.

    Настраиваем на VPS

    На VPS у вас должен стоять Linux, не древний, чтобы был свежий openssl и nginx. Настройку на Apache я не рассматриваю,но она делается так же, только конструкции с другим синтаксисом.

    Устанавливаем Letsencrypt на сервер.

    Если не стоит git, ставим:
    Код HTML:
    apt-get install git
    Устанавливаем сам letsencrypt:
    Код HTML:
    cd /opt/
    git clone https://github.com/letsencrypt/letsencrypt
    Создаем ключ для более стойкого шифрования

    Надо выполнить 1 раз. Использовать будем шифрование 2048.Этого достаточно.

    Код HTML:
    openssl dhparam -5 -out /etc/ssl/private/dhparams_2048.pem 2048
    Создаем новый сертификат.

    Код HTML:
    sudo service nginx stop
    ./letsencrypt-auto --server https://acme-v01.api.letsencrypt.org/directory auth --rsa-key-size 2048
    Эта команда спросит у вас домен, вводим свой домен. Если у вас домен с www и без, нужно будет выполнить для каждого домена отдельно.
    Если все ок, ваш сертификат будет в /etc/letsencrypt/live/www.yourdomain.com/

    Настраиваем Nginx.

    Тут я приведу типовую конфигурацию. "www.yourdomain.com" везде меняем на домен вашего сайта.

    Код HTML:
    server {
        listen 443 ssl;
        server_name www.yourdomain.com;
    
        ssl_certificate /etc/letsencrypt/live/www.yourdomain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/www.yourdomain.com/privkey.pem;                  
        ssl_trusted_certificate /etc/letsencrypt/live/www.yourdomain.com/fullchain.pem;
    
        add_header Strict-Transport-Security "max-age=31536000; preload";
    
        keepalive_timeout 65;
    
        ssl_session_cache shared:SSL:50m;
        ssl_session_timeout 10m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;           
        ssl_dhparam /etc/ssl/private/dhparams_2048.pem;
    
        ssl_stapling on;
        ssl_stapling_verify on;
        resolver 77.88.8.8 77.88.8.1 valid=300s;
        resolver_timeout 2s;
    
        # Тут инструкции вашего сайта.
    
    }
    Итак, немного объясню по конфигурации.

    add_header Strict-Transport-Security - Нужно для того, чтобы браузер знал что ваш сайт работает только по HTTPS.
    ssl_session_cache shared - Объем памяти для кеширования SSL-сессий
    ssl_stapling - для того чтобы постоянно не запрашивались данные о сертификате от центра сертификации. Я использую DNS яндекса так как они у нас в России быстрее гугловских, если хотите для зарубежного сайт, используйте 8.8.8.8 8.8.4.4

    Так же вы можете настроить ssl_ciphers для указания тех алгоритмов шифрования, что нужно. Nginx часто подсовывает по умолчанию устаревшие.

    Не забудьте рестартануть nginx
    Код HTML:
    sudo service nginx start
    Что дальше

    Обновлять по cron ваши сертификаты можно следующим скриптом

    Код HTML:
    #!/bin/bash
    service nginx stop
    cd /opt/letsencrypt
    ./letsencrypt-auto certonly -d www.yourdomain.com --renew-by-default --rsa-key-size 2048
    ./letsencrypt-auto certonly -d otherdomain.com --renew-by-default --rsa-key-size 2048
    service nginx start
    Нужно запускать от рута.

    Полезные ссылки
    1. Создаем свою конфигурацию для других веб-серверов, например Apache: https://mozilla.github.io/server-sid...fig-generator/
    2. Тестируем ваш сайт: https://dev.ssllabs.com/ssltest/analyze.html - стремимся чтобы был класс А+



    PS. В этой теме задавайте вопросы, если будут по настройке. Помогу чем смогу.
    Для неосиляторов, за символическую плату настрою вам ваш VPS со всеми сайтами, сделаю так чтобы защита была A+.
    • 2

    Спасибо сказали:

    buninsan(18.03.2016), vefaro(20.03.2016),
  2. Гуру Аватар для buninsan
    • Регистрация: 12.02.2012
    • Сообщений: 1,021
    • Репутация: 189
    спасибо за статью! немного прошу уточнить, команды которые вы приводите, предназначены для установки на Ubuntu верно?
    сделаю в ближайшем будущем себе на сайт, только сервер будет на centos отпишусь о результатах, к стати будет интересно увидеть просадка по трафику будет после переезда с http на https, или нет и насколько значительная. Трафик в оновном с гугла и бинг.
    • 1

    Спасибо сказали:

    rown(18.03.2016),
  3. Новичок
    • Регистрация: 28.04.2014
    • Сообщений: 11
    • Репутация: 4
    Цитата Сообщение от buninsan Посмотреть сообщение
    спасибо за статью! немного прошу уточнить, команды которые вы приводите, предназначены для установки на Ubuntu верно?
    сделаю в ближайшем будущем себе на сайт, только сервер будет на centos отпишусь о результатах, к стати будет интересно увидеть просадка по трафику будет, или нет и насколько значительная. Трафик в оновном с гугла и бинг.
    Единственная команда для Убунту тут apt-get install git. Остальное все сгодится для любого дистрибьютива. Сам letsencrypt на питоне большей частью, поэтому дистронезависим.

    Просадки по трафику у меня лично нет. С гугла даже подрос за месяц. Но у меня изначально сайты не были предназначены для старых версий IE.

    Просадилось у меня только время отклика. Примерно на 15-20 мс что не критично, ab выдает что-то вроде

    Connection Times (ms)
    min mean[+/-sd] median max
    Connect: 16 17 1.5 16 24
    Processing: 2 3 0.1 3 3
    Waiting: 2 3 0.1 2 3
    Total: 18 19 1.5 19 26

    Это VPS от рег ру.

    PS. Обязательно проверьте сайт с помощью https://dev.ssllabs.com/ssltest/analyze.html там вы увидите, если будут ошибки в криптографии и на каких браузерах не заработает.
    Последний раз редактировалось rown; 18.03.2016 в 17:29.
    • 1

    Спасибо сказали:

    buninsan(18.03.2016),
  4. Гуру Аватар для buninsan
    • Регистрация: 12.02.2012
    • Сообщений: 1,021
    • Репутация: 189
    не могу победить
    ./letsencrypt-auto --server https://acme-v01.api.letsencrypt.org/directory auth --rsa-key-size 2048
    -bash: ./letsencrypt-auto: No such file or directory
    сервер на centos 7... обновлены все пакеты.
    удалось
    cd letsencrypt
    ./letsencrypt-auto
    тут установка для centos 6,7 digitz.org/blog/lets-encrypt-ssl-centos-7-setup/
    Последний раз редактировалось buninsan; 31.03.2016 в 18:04.
    • 0
  5. Новичок
    • Регистрация: 28.04.2014
    • Сообщений: 11
    • Репутация: 4
    buninsan,

    ./letsencrypt-auto: No such file or directory

    Зайдите в директорию, в которую установили letsencrypt. Туда куда сделали git clone. У меня это /opt/
    • 1

    Спасибо сказали:

    buninsan(31.03.2016),
  6. Разработка любых сайтов Аватар для ArhStrAngeR
    • Регистрация: 08.06.2011
    • Сообщений: 3,376
    • Записей в дневнике: 1
    • Репутация: 2505
    Так же было бы хорошо добавить вот это
    Код HTML:
    add_header Content-Security-Policy-Report-Only "default-src https:; script-src https: 'unsafe-eval' 'unsafe-inline'; style-src https: 'unsafe-inline'; img-src https: data:; font-src https: data:; report-uri /csp-report";
    Плюс важно не забыть сменить http на https в роботс.тхт, сайтмапе, и в панелях вебмастеров. Потому что http и httpsсчитаются как зеркала - важно все быстро и правильно сделать
    • 1

    Спасибо сказали:

    buninsan(31.03.2016),
  7. Гуру Аватар для Ems
    • Регистрация: 24.05.2011
    • Сообщений: 2,030
    • Репутация: 661
    Цитата Сообщение от rown Посмотреть сообщение
    Создаем новый сертификат.
    Цитата Сообщение от rown Посмотреть сообщение
    service nginx stop
    Цитата Сообщение от rown Посмотреть сообщение
    Обновлять по cron ваши сертификаты можно следующим скриптом
    Цитата Сообщение от rown Посмотреть сообщение
    service nginx stop
    Самый отстойный способ использования LE. В итоге, сайты будут лежать всё это время, пока получается или обновляется сертификат.

    Лучше всего делать через webroot. Пример:
    Код:
    ./letsencrypt-auto certonly --webroot -w /var/www/letsencrypt/ --email name@gmail.com -d site.ru --rsa-key-size 4096
    Таким образом LE не будет поднимать свой сервер и не нужно будет вырубать свой. И никакого простоя сайтам.
    Облачный хостинг из TOP-3 - от 1 Gb ОЗУ, от 25 GB SSD.
    • 2

    Спасибо сказали:

    buninsan(31.03.2016), dotWizard(01.04.2016),
  8. Гуру Аватар для buninsan
    • Регистрация: 12.02.2012
    • Сообщений: 1,021
    • Репутация: 189
    спасибо всем все получилось!
    • 0
  9. Гуру Аватар для buninsan
    • Регистрация: 12.02.2012
    • Сообщений: 1,021
    • Репутация: 189
    Прошу помощи у знатоков:
    конфиг nginx вот с этими диррективами не стартует
    ssl_session_cache shared:SSL:50m; с этим не пойму почему не заводится
    ssl_dhparam /etc/ssl/private/dhparams_2048.pem; на centos нет этого файла по пути
    еще как мне добавить в конфиг путь к сертификатам с www, сертификаты сгенерировал, тупо разместить под сертификатами без www не получается
    ssl_certificate /etc/letsencrypt/live/www.site.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.site.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/www.site.com/fullchain.pem;


    PHP код:
    server {
        
    listen 443 ssl;
        
    server_name site.com www.site.com;
        
    ssl_certificate /etc/letsencrypt/live/site.com/fullchain.pem;
        
    ssl_certificate_key /etc/letsencrypt/live/site.com/privkey.pem;                  
        
    ssl_trusted_certificate /etc/letsencrypt/live/site.com/fullchain.pem;
        
    add_header Strict-Transport-Security "max-age=31536000; preload";
        
    keepalive_timeout 65;
        
    >   
    ssl_session_cache shared:SSL:50m;
        
    ssl_session_timeout 10m;
        
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;           
    >   
    ssl_dhparam /etc/ssl/private/dhparams_2048.pem;

        
    ssl_stapling on;
        
    ssl_stapling_verify on;
        
    resolver 77.88.8.8 77.88.8.1 valid=300s;
        
    resolver_timeout 2s;
        
    error_log  /var/log/httpd/domains/site.com.error.log error;

        
    location / {
            
    proxy_pass      http://104.200.000.213:8080;
            
    location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|htm|html|ttf|otf|webp|woff|txt|csv|rtf|doc|docx|xls|xlsx|ppt|pptx|odf|odp|ods|odt|pdf|psd|ai|eot|eps|ps|zip|tar|tgz|gz|rar|bz2|7z|aac|m4a|mp3|mp4|ogg|wav|wma|3gp|avi|flv|m4v|mkv|mov|mpeg|mpg|wmv|exe|iso|dmg|swf)$ {
                
    root           /home/admin/web/site.com/public_html;
                
    access_log     /var/log/httpd/domains/site.com.log combined;
                
    access_log     /var/log/httpd/domains/site.com.bytes bytes;
                
    expires        max;
                
    try_files      $uri @fallback;
            }
        }

        
    location /error/ {
            
    alias   /home/admin/web/site.com/document_errors/;
        }

        
    location @fallback {
            
    proxy_pass      http://104.200.000.213:8080;
        
    }

        
    location ~ /\.ht    {return 404;}
        
    location ~ /\.svn/  {return 404;}
        
    location ~ /\.git/  {return 404;}
        
    location ~ /\.hg/   {return 404;}
        
    location ~ /\.bzr/  {return 404;}

        include /
    home/admin/conf/web/nginx.site.com.conf*;



    ---------- Сообщение добавлено 23:04 ---------- Предыдущее 22:19 ----------

    еще в догонку, если я буду клеить домены с www и без, то может быть сертификат на домен с www не нужен? как правильно поступить? первый раз вожусь с сертификатами, не имею опыта...
    • 0
  10. Гуру Аватар для Ems
    • Регистрация: 24.05.2011
    • Сообщений: 2,030
    • Репутация: 661
    Цитата Сообщение от buninsan Посмотреть сообщение
    ssl_session_cache shared:SSL:50m; с этим не пойму почему не заводится
    Какая версия nginx?

    Цитата Сообщение от buninsan Посмотреть сообщение
    ssl_dhparam /etc/ssl/private/dhparams_2048.pem; на centos нет этого файла по пути
    Там у него в инструкции был этот момент, но это совсем не обязательно делать. Можно забить.

    Цитата Сообщение от buninsan Посмотреть сообщение
    еще в догонку, если я буду клеить домены с www и без, то может быть сертификат на домен с www не нужен? как правильно поступить? первый раз вожусь с сертификатами, не имею опыта...
    Я отказался совсем от доменов с www, т.к. www нафиг не нужен, по сути это лишний элемент только. Стоят редиректы на версии без www. Соответственно для www не делал запросы на сертификаты.
    Облачный хостинг из TOP-3 - от 1 Gb ОЗУ, от 25 GB SSD.
    • 1

    Спасибо сказали:

    buninsan(01.04.2016),
Страница 1 из 2 12 Последняя

Похожие темы

Темы Раздел Ответов Последний пост
Сильно просели позиции в Яндексе и в Гугле.
Вопросы от новичков 5 13.11.2014 17:44
Как вернуть сайт на прежние позиции в Яндексе и гугле?
Вопросы от новичков 13 06.10.2014 19:20
В гугле плохие позиции
Вопросы от новичков 19 29.08.2014 13:01
Позиции в Гугле
Вопросы от новичков 9 28.08.2014 12:56
LI не показывает позиции в гугле
Общие вопросы поисковой оптимизации 6 12.08.2012 18:19

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры