В данной статье я расскажу про получение бесплатного (90-дневного) SSL-сертификата от компании COMODO и последующую покупку платного сертификата на сайте GOGETSSL.
Примерно в середине февраля я перевел свои сервер и сайт на работу по HTTPS-протоколу с поддержкой SSL-шифрования трафика. Попутно я решил написать несколько статей посвященных переходу на HTTPS, описывающих получение SSL-сертификатов, а также настройку сервера Nginx и CMS WordPress под его использование.
В связи с недавними законами, в частности с пакетом законов Яровой и новой стратегией развития информационного общества, в российской федерации уже довольно скоро можно будет забыть про анонимность и приватность в интернете. Конечно все произойдет не сразу, тем более ничего еще толком не известно, но начинать заботиться о своей безопасности нужно уже сейчас.
SSL-шифрование трафика является одним из способов сохранения приватности и безопасности ваших данных в сети. Вот что по этому поводу было написано в газете "Ведомости".
"почти вся хранимая информация, которая передается по сетям операторов, может быть непригодна к анализу и использованию в работе госорганов, говорится в заключении экспертной рабочей группы федерального уровня под руководством министра открытого правительства Михаила Абызова по поводу закона Яровой. Авторы документа ссылаются на подсчеты рабочей группы экспертного совета при правительстве: те указывают, что сейчас объем шифрованного трафика в сетях операторов составляет 49%, но уже через три года его доля в сетях операторов может достичь 90%. В то же время технология, позволяющая расшифровывать трафик, отсутствует. Это может создать трудности при исполнении закона, говорится в заключении группы."
Оригинал статьи от 17.02.2017.
Подобное заявление от экспертной группы под руководством министра, не может не радовать пользователей сети и владельцев сайтов заботящихся о своей безопасности и приватности. Вот и я решил внести свой небольшой вклад в увеличение общего объема зашифрованного трафика и перевел свой сайт на HTTPS.
А если честно, то мой сайт - это моя собственность, так же как и генерируемый им трафик, именно поэтому я не хочу чтобы в моем трафике копалось какое-то безликое чмо. Мне скрывать нечего, но всему должен быть разумный предел, а принятие подобных законов я не могу назвать разумным поступком, скорее это граничит с идиотизмом. А с идиотизмом нужно бороться, к чему мы и приступим.
Оформление бесплатного (90-дневного) сертификата
Как я уже говорил, в качестве SSL-сертификата я выбрал пробную версию от компании COMODO с дальнейшей покупкой годового сертификата. Конечно можно было использовать бесплатные сертификаты от Let’s Encrypt или StartSSL, но я не особо доверяю бесплатным продуктам, особенно когда разговор идет о безопасности. Сертификат от COMODO можно приобрести от 4,9$ в год, что не так уж много, если сравнивать с бесплатными аналогами.
Получить бесплатный сертификат можно на сайте GOGETSSL, для регистрации перейдите по ссылке Try 90-day Trial SSL Certificate и открывшемся окне нажмите Create New Order.
Выберите пункты Private customer, SSL Certificates, Comodo Trial SSL и подтвердите ваш заказ нажатием на Complete Order.
Вы будете перенаправлены на страницу создания аккаунта, здесь нажимаем зеленую кнопку Create New Account, на следующей странице заполняем все поля отмеченные красными звездочками, после ввода данных нажимаем кнопку Next Step.
Правдивость введенных данных не проверяется, поэтому если не хотите указывать свои реальные данные, можете указать вымышленные, это уже вам решать. В любом случае эти данные не используются для SSL и не попадают в общий доступ, о чем вас предупреждают при заполнении форм.
После регистрации аккаунта заходим в личный кабинет и кликаем по надписи Incomplete Orders для завершения оформления заказа.
В открывшемся разделе My SSL Sertificates нажимаем оранжевую кнопку Generate рядом с заказанным сертификатом и переходим к разделу CSR-конфигурации. Здесь ничего не трогаем: Order Type - New Order, Web Server Software - Other, Signature algorithm - SHA2.
В окно с надписью Paste your CSR нужно вставить CSR-запрос, который будем генерировать на своем сервере.
Переходим в консоль сервера и генерируем RSA-файл ключа. Конечный файл может быть назван как угодно, например myname.key, главное не забудьте указать длину ключа в 2048-bit.
openssl genrsa -out blogtechlist.key 2048
Создаем CSR-запрос используя созданный ранее файл ключа. Указание имен файлов идет через пробел, после -key указываем имя файла-ключа, после -out имя конечного CSR-файла.
openssl req -new -sha256 -key blogtechlist.key -out blogtechlist.csr
Во время создания CSR-запроса будет предложено ввести свои данные. Некоторые поля можно пропускать, просто нажимая Enter. Если вдруг что-то написали не так как надо, то создание запроса можно прервать нажав сочетание клавиш CTRL+C, потом выполнение команды можно запустить повторно. Для примера выложу свой копипаст, там видно что нужно заполнять, а что можно пропустить.
Country Name (2 letter code) [AU]:RU State or Province Name (full name) [Some-State]:Moscow Locality Name (eg, city) []:Moscow Organization Name (eg, company) [Internet Widgits Pty Ltd]:Techlist Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []:techlist.top Email Address []:mail@techlist.top Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
Теперь нужно скопировать содержимое полученного CSR-файла и вставить в окошко валидатора на сайте. Просмотреть содержимое файла можно командой cat.
cat blogtechlist.csr
Вывод cat будет примерно такого вида.
-----BEGIN CERTIFICATE REQUEST----- MIICxDCCAawCAQAwfzELMAkGA1UEBhMCUlUxDzANBgNVBAgMBk1vc2NvdzEPMA0G A1UEBwwGTW9zY293MRQ(&TGOIUGHDAtEZW5pcyBOZWdpbjEVMBMGA1UEAwwMdGVj aGxpc3QudG9wMSEwHwYJKoZIhvcNAQkBFhJ0ZWNobGlzdEB5YW5kZXgucnUwggEi MA0GCSqGSIb3DQEBAQUAA4IIUGKLggEKAoIBAQC6Y7aY43rdr7f4S25a15547LCz mQ2EgwJ58IWarW9HbAnS+OtfqBjlq9aYSKMacySMI1pJgMUZalZvkfEGCiKCH7lx 85LK0Ryvis44I&UGILHVLnJ5sJrRODRwip/r6Q6upWOa/P4O/4j28K1veB4oBKHv o5TF8UUncqiU2T3Xw/GlYsXumDHa18sYUgMVwaFWNyFU4OXPJdZIabg36lpYwbR+ wIO9qlbHq3PiXap5VXsq1YCKiVNWY3elQPnoFPhzLkUkwKpRO9w5bYexL8zfDc1e DkZ8C62kp45kIznosGGOzfL/UWSQ2QXSbITxWQEBp5k31tc8LK920FYrar0JAgMB AAGgADANBgkqhkiG9w0BAQsFAAOCAQEArr*&TGIUOTTYDFu5q8UeNnecYN0bCB/V OMocDk3B7LBez/StppwLWA2Y+y5it7F2IcqcxhhfXB/3zpmNGO8/eGAzJI8AhpOy 0iocn1IVBGHHJJIKKiih0RekzAJSvg6b5cd7i+dQLSrqH6aEoOi2f/FnEhZdVV5h mHN2hHZu5Q6yvB6/Q+ZP8AIqxhFHxPZ8QQ0P3+4eHHp+AavWs+I+CVZ7SazFIKkR Hri0CoF1Izeft5qvrE+JMMyyMmjSVkFSzeJoJPgWZ36t9gjLsCeRWtLG5uCOrOn+ /cpp7hktk+GKPQgA+D1e3/vcpUTSm19xzSwFnx0KThlO/63V2glsjw== -----END CERTIFICATE REQUEST-----
Полностью копируем содержимое файла, вместе со строками BEGIN CERTIFICATE REQUEST и END CERTIFICATE REQUEST. Код вставляем в окошко валидатора и нажимаем кнопку Validate CSR.
Теперь нужно подтвердить свое владение указанным доменным именем. На выбор будет предложено несколько способов проверки: EMAIL, DNS, HTTP/HTTPS. Проще всего доказать что вы являетесь владельцем домена, это выбрать HTTP-способ проверки.
HTTP-способ подразумевает под собой загрузку определенного текстового файла в корневую директорию сайта, после чего к нему будет сделан запрос и если доступ к файлу будет получен, то вы прошли проверку и доказали что являетесь владельцем доменного имени.
Если у вас есть доступ к DNS-записям домена, то можно проверить домен DNS-способом. Если у вас есть электронный ящик вида "admin@mydomain.com", то можно выбрать проверку через EMAIL. Но самым простым способом проверки всегда был и остается HTTP-способ.
Выбираем HTTP-способ проверки, скачиваем предложенный текстовый файл, загружаем его в корневую директорию сайта и нажимаем Next Step.
В открывшемся разделе нужно заполнить данные администратора домена и технического администратора, эти данные могут отличаться от данных самого аккаунта (тоже не проверяют).
В графе Administrative Contact заполняем все поля помеченные звездочками. В графе Technical Contact Details должна стоять галочка на - Same as administrative contact (использовать администраторские данные), если галочку убрать, то придется заполнять еще и данные технического администратора. В конце соглашаемся с правилами и требованиями и нажимаем кнопку Complete Generation.
Осталось подождать результат проверки домена, обычно это не занимает много времени и зависит от загруженности сервиса, по крайней мере я никогда не ждал больше пяти минут.
В личном кабинете перейдите в раздел Manage SSL certificates, подтвержденный сертификат должен быть со статусом Active.
Оформление и покупка платного сертификата
Получение платного сертификата, точнее шаги для его получения, практически ничем не отличаются от уже описанных выше действий. В личном кабинете переходим в раздел Manage SSL certificates и нажимаем кнопку New Order вверху экрана.
Оказавшись в разделе My Prices можно увидеть список доступных для продажи сертификатов и цены на них. Самые дешевые сертификаты находятся внизу списка, в пункте GOGETSSL. На своем сервере я использую GGSSL Domain SSL сертификат за 4,90$ в год.
Выберите подходящий сертификат и нажмите Order. В разделе Product Configuration выберите желаемый срок действия сертификата и нажмите кнопку Next Step.
Вам будет предложено проверить свой заказ и выбрать способ оплаты. После нажатия на Complete Order вы будете перенаправлены на форму оплаты, в зависимости от выбранного способа. Лично я платил через PayPal.
После оплаты сертификата его можно найти в разделе Incomplete Orders или в разделе My SSL Certificates личного кабинета. Все последующие действия не отличаются от уже описанных в предыдущем пункте. Нажимаем Generate, переходим к CSR-валидатору, создаем ключ, генерируем CSR-запрос, вставляем CSR-запрос в валидатор, проверяем CSR-запрос, потом подтверждаем владение доменом (т.е. придется выполнить почти весь первый раздел).
Ждем завершения проверки, готовый сертификат будет в разделе My SSL Certificates.
Склейка сертификата для использования на сервере
Когда ваши сертификаты будут проверены и подтверждены, это касается как платной так и бесплатной версий, вам нужно будет скачать файлы CRT и CA-BUNDLE и соединить в их в один файл. Именно этот файл и будет тем сертификатом, который мы будем использовать на сервере.
Нажимаем кнопку View рядом с выданным сертификатом и переходим в раздел SSL Certificate Details. В верхней части раздела размещены ссылки на скачивание нужных файлов.
Скачиваем два файла с иконками замочков (Download CRT и Download CA), скачанные файлы нужно перенести на сервер. Директория роли не играет, пусть это будет каталог /root.
Итак, у нас на сервере есть два файла - blog_techlist_top.crt и blog_techlist_top.ca-bundle и их нужно соединить в один файл.
Перейдите в каталог с файлами и командой cat соедините их в последовательности - сначала crt, потом ca-bundle. Имя файла может быть любым, например mydomain.com.crt.
cat blog_techlist_top.crt blog_techlist_top.ca-bundle > blog.techlist.top.crt
Просмотрите содержимое полученного файла.
cat blog.techlist.top.crt
Иногда cat склеивает содержимое файлов не так как нужно, в результате добавления такого сертификата в конфигурацию сервера может появится подобная ошибка.
techlist.top nginx[8054]: nginx: [emerg] PEM_read_bio_X509_AUX("/etc/nginx/ssl/techlist.top.crt") failed (SSL: error:0906D066:PEM routines:PEM_read_bio:bad end line)
Ошибка вызвана содержанием файла, а именно слитными строками BEGIN и END CERTIFICATE.
# Так быть не должно Apf43B2Vq1TYNzLFYCq7jvRUPOA9GVg4DwsswnSiOj6cgNK98z8TBBcE/iNZgPEr JiaEgk14xBaAoOxoNPoimJ1J/yh238rg -----END CERTIFICATE----------BEGIN CERTIFICATE----- MIIGCDCCA/CgAwIBAgIQKy5u6tl1NmwUim7bo3yMBzANBgkqhkiG9w0BAQwFADCB hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
Разделите строки ровно посередине и сохраните изменения, тогда ошибки не будет.
# Нужно сделать так Apf43B2Vq1TYNzLFYCq7jvRUPOA9GVg4DwsswnSiOj6cgNK98z8TBBcE/iNZgPEr JiaEgk14xBaAoOxoNPoimJ1J/yh238rg -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIGCDCCA/CgAwIBAgIQKy5u6tl1NmwUim7bo3yMBzANBgkqhkiG9w0BAQwFADCB hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
В результате мы имеем готовый сертификат, который можно указать в конфигурации сервера. Помимо этого нам понадобится файл ключа (у меня это blogtechlist.key), который мы создавали для генерации CSR-запроса.
Про настройку сервера Nginx и переводе WordPress-сайта на HTTPS читайте в следующих статьях.