Бесплатная сертификация всего-всего от Letsencrypt.org

В последнее время новостные ленты наполнены пёстрыми заголовками об огромном количестве взломов и похищении личных данных пользователей. Я задумался о том, что бы немного обезопасить свои ресурсы и использовать сертификаты. Как раз давно хотел протестировать программное обеспечение от компании Letsencrypt.org
Как оказалось — совсем не сложно.
Перым делом нужно установить так называемый ACME клиент. Я выбрал certbot

yum install epel-release
yum install certbot

Проверял на поддомене.
Генерация сертификата не на много сложнее:

certbot certonly --webroot -w /srv/redmine/ -d projects.tradenark.com.ua

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/projects.tradenark.com.ua/fullchain.pem. Your
   cert will expire on 2017-01-25. To obtain a new or tweaked version
   of this certificate in the future, simply run certbot again. To
   non-interactively renew *all* of your certificates, run "certbot
   renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

тут /srv/redmine/ — каталог где располагаются файлы сайта
projects.tradenark.com.ua — собственно (под)домен

Эти сертификаты действительны 90 дней и по истечению этого срока нужно будет всего то выполнить команду снова. Об этом говорится в результате выполнения команды. Так же скрипт говорит куда он сложил файлики.
Для дополнительной безопасности сформируем ключ по алгоритму шифрования Диффи-Хеллмана:

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

Это может занять довольно длительное время. В конце
Но это только пол дела. Теперь нужно добавить сертификаты в веб-сервер.

# ls /etc/letsencrypt/live/projects.tradenark.com.ua/
cert.pem  chain.pem  fullchain.pem  privkey.pem

Нас будут интересовать 2 файла: fullchain.pem и privkey.pem
Займёмся настройкой NGinx
Сперва редирект с обычных ссылок на https:

server {
        server_name projects.tradenark.com.ua;
        listen 80;
        return 301 https://projects.tradenark.com.ua$request_uri;
        }

Далее включим поддержку SSL и укажем дополнительные параметры:

server {
        listen 443 ssl;
        server_name projects.tradenark.com.ua;

        ssl_certificate /etc/letsencrypt/live/projects.tradenark.com.ua/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/projects.tradenark.com.ua/privkey.pem;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;

        ssl_dhparam /etc/ssl/certs/dhparam.pem;
        ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
        ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:50m;

        ssl_stapling on;
        ssl_stapling_verify on;
        add_header Strict-Transport-Security max-age=15768000;

        location ~ /.well-known {
                allow all;
        }

        root /srv/redmine/;
        ...
        }

Проверка и применение изменений NGinx

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# nginx -s reload

Теперь можно проверить наш сертификат
Сперва редирект:

# curl -I http://projects.tradenark.com.ua/
HTTP/1.1 301 Moved Permanently
Server: nginx/1.10.2
Date: Fri, 28 Oct 2016 00:25:15 GMT
Content-Type: text/html
Content-Length: 185
Connection: keep-alive
Location: https://projects.tradenark.com.ua/ 

Видим что редирект работает
Теперь сертификат и уровень защиты на SSLLABS.com
У нас пять с плюсом 🙂
grade
Теперь таким же образом придётся «засертификатить» все остальные ресурсы.

Добавить комментарий