Создаем и устанавливаем сертификаты Let’s Encrypt

Автор:nautical

Создаем и устанавливаем сертификаты Let’s Encrypt

Введение

Центром информации в мире все больше становится всемирная паутина. Многие газеты и журналы заменили свои бумажные версии на электронные. Каждая организация, коммерческая или общественная имеет свою страницу на просторах интернет. Именно в это время безопасное управление своими страницами становится необходимостью. Также на первый план выходит доверие к странице в интернет, на которой публикуется информация. В августе 2014 года Google сделали заявление, что в целях повышения информационной безопасности рекомендуется перейти с протокола HTTP, который передается по каналам связи в открытом текстовом виде, на защищенный протокол HTTPS. В первую очередь это нужно для тех, кто управляет сайтом, выкладывает на него новые материалы, делает дизайн и т.д. Именно для выполнения этих функций пользователи сначала должны представится системе и доказать с помощью учетной записи и пароля, что имеют такое право проводить изменения на сайте. Отсылая свои учетные данные в открытую через каналы интернет люди дают возможность перехватывать их, накапливать и применять не по назначению. Применяя зашифрованный канал обмена информацией между сервером и рабочим компьютером мы сильно затрудняем перехват и последующие неправомерное искажение информации. Также Google начинает давать преимущество в ранжировании поисковых ответов сайтам, которые используют HTTPS как основной протокол.

Для перевода своего сайта на HTTPS необходимо получить сертификаты для своего доменного имени, на котором отвечает Ваш сайт. Предлагается множество платных вариантов получения сертификатов, среди них такие известные поставщики, как Comodo, Thawte или GeoTrust. Преимуществом данных поставщиков является страхование устойчивости и потерь от взлома, удобство управления сертификатами и т.д. Но для начала своей деятельности молодым организациям не хватает финансовых средств для ведения основного бизнеса и поэтому бесплатный вариант генерации сертификатов может быть предпочтительнее. Некоммерческая организация Internet Security Research Group предлагает создавать сертификаты под брендом Let’s Encrypt. Также разработчики предлагают наборы инструментов, которые помогут автоматизировать процесс получения сертификатов, так как данные сертификаты действую в течении 3-х месяцев с даты выпуска.

Установка сертификата Let’s Encrypt
в Linux Centos 7

В стандартных дистрибутивах Linux есть репозитарии, в которых есть пакет certbot, автоматизирующий получение сертификатов. В Centos 7 пакет certbot находится в репозитарии Epel. Чтобы его добавить нужно выполнить команду:

$ sudo yum install epel-release

Также нужно установить сопроводительные пакеты:

$ sudo yum install httpd mod_ssl python-certbot-apache

После установки пакетов мы сразу можем приступать к генерации сертификатов. Для сервера apache certbot генерирует сразу все настройки сервера, которые позволяют использовать сертификаты сразу без дополнительных движений:

# certbot --apache -d domain.tld

Saving debug log to /var/log/letsencrypt/letsencrypt.log

Plugins selected: Authenticator apache, Installer apache

Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org

Obtaining a new certificate

Performing the following challenges:

tls-sni-01 challenge for domain.tld

Waiting for verification...

Cleaning up challenges

Created an SSL vhost at /etc/httpd/conf.d/virtual-le-ssl.conf

Deploying Certificate for itplus.intavacon.ru to VirtualHost /etc/httpd/conf.d/virtual-le-ssl.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.

-------------------------------------------------------------------------------

1: No redirect - Make no further changes to the webserver configuration.

2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for

new sites, or if you're confident your site works on HTTPS. You can undo this

change by editing your web server's configuration.

-------------------------------------------------------------------------------

Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Redirecting vhost in /etc/httpd/conf.d/virtual.conf to ssl vhost in /etc/httpd/conf.d/virtual-le-ssl.conf

-------------------------------------------------------------------------------

Congratulations! You have successfully enabled https://domain.tld

You should test your configuration at:

https://www.ssllabs.com/ssltest/analyze.html?d=domain.tld

-------------------------------------------------------------------------------

IMPORTANT NOTES:

 - Congratulations! Your certificate and chain have been saved at:

   /etc/letsencrypt/live/domain.tld/fullchain.pem

   Your key file has been saved at:

   /etc/letsencrypt/live/domain.tld/privkey.pem

   Your cert will expire on 2018-01-20. To obtain a new or tweaked

   version of this certificate in the future, simply run certbot again

   with the "certonly" option. 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

Во время создания сертификата, если Вы первый раз запускали скрипт, то у Вас спросят адрес электронной почты, чтобы присылать уведомления с технической информацией. Также во время установки сертификата в сервер apache скрипт запросил выбор: выбрать 1, если я сам позже настрою перенаправление на https версию сайта или выбрать 2 и дать возможность скрипту  сделать это автоматически. Я доверил скрипту создание перенаправления и теперь при открытии страницы сайта по протоколу http меня автоматически переключают на протокол https. Теперь при открытии сайта в заголовке я вижу следующее:

В Google Chrome:

Google Chrome командная строка с сертификатом Let's Encrypt

Вид командной строки в Google Chrome после установки сертификата Let’s Encrypt

В Internet Explorer:

Командная строка Internet Explorer с установленным сертификатом Let's Encrypt

Вид командной строки в Internet Explorer после установки сертификата Let’s Encrypt

Если мы откроем детальную информацию по сертификату, то увидим следующую информацию:

Сертификат выданный Let's Encrypt

Сертификат, который выдан центром сертификации Let’s Encrypt. Общая информация

Детальная информация сертификата Let's Encrypt

Сертификат, который выдан центром сертификации Let’s Encrypt. Детальная информация

Дерево пути сертификации Let's Encrypt

Сертификат, который выдан центром сертификации Let’s Encrypt. Дерево пути прохождения авторизации

 

Создание сертификата для Windows сервера IIS

Для того, чтобы сгенерировать сертификат для Windows сервера IIS воспользуемся ручной генерацией сертификатов:

$ letsencrypt certonly -d domain.tld --manual

Во время генерации сертификата появится запрос на подтверждение:

Create a file containing just this data:

yZM8Qz-yRuYSGWjMi4LDFsiIJNpyb4vhpKHeSzP0RvY.jFahV2zgtjhGQgAnE8CIeYEuSCVeBF423B2slhkycL0

And make it available on your web server at this URL:

http://domain.tld/.well-known/acme-challenge/yZM8Qz-yRuYSGWjMi4LDFsiIJNpyb4vhpKHeSzP0RvY

Так как iis по умолчанию не настроен обрабатывать файлы без расширения, то создадим каталог .well-known/acme-challenge в корневом каталоге сайта и в нем расположим файл web.config с содержимым:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <staticContent>
            <mimeMap fileExtension="." mimeType="application/unknown" />
        </staticContent>
    </system.webServer>
</configuration>

И добавим файл с именем, как нас попросил скрипт letsencrypt. В моем случае это yZM8Qz-yRuYSGWjMi4LDFsiIJNpyb4vhpKHeSzP0RvY и содержимое файла:

yZM8Qz-yRuYSGWjMi4LDFsiIJNpyb4vhpKHeSzP0RvY.jFahV2zgtjhGQgAnE8CIeYEuSCVeBF423B2slhkycL0

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

Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
 /etc/letsencrypt/live/domain.tld/fullchain.pem
 Your key file has been saved at:
 /etc/letsencrypt/live/domain.tld/privkey.pem
 Your cert will expire on 2018-02-09. 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

Для того, чтобы конвертировать сертификат для сервера IIS, перейдем в каталог /etc/letsencrypt/live/domain.tld с созданным сертификатом и выполним команду с установленной ранее утилитой openssl:

$ openssl pkcs12 -inkey privkey1.pem -in fullchain1.pem -export -out domain.tld.pfx

 

Об авторе

nautical administrator