blog/content/posts/2024-02-21-Конфигурация_HTTPS_с_сертификатом_от_Минцифры.md
Alex NeonXP 87a40a0200
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Пост про https от Минцифры
2024-02-21 22:38:40 +03:00

50 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "Конфигурация HTTPS с сертификатом от Минцифры"
date: 2024-02-21T21:51:29+03:00
tags: ["it", "заметки"]
featuredImage: /img/posts/photo_2023-12-27_22-47-36.jpg
---
Третьего дня потратил достаточно много времени на установку на данном сайте сертификата от Минцифры.
А поскольку сертификат краткоживущий (90 дней) - заметка мне самому пригодится на будущее.
Началось всё с того, что я с удивлением обнаружил, что на госуслугах теперь можно выпустить сертификат для домена физлицу.
Это меня обрадовало, хотя ранее я приунывал что нет никакой альтернативы простым смертным. Теперь есть. ~~Закрывайте буржуйнет.~~
Поехали!
1. Идём сюда: https://www.gosuslugi.ru/627603/1/form
2. По приведенной инструкции генерируем файл запроса сертификата. Вкратце так (только вместо neonxp.ru указываем свой домен):
```
openssl req -out neonxp.ru.csr -new -subj "/C=RU/CN=neonxp.ru" -addext "keyUsage = digitalSignature, keyEncipherment" -addext "subjectAltName=DNS: neonxp.ru" -addext "extendedKeyUsage = serverAuth" -newkey rsa:2048 -nodes -keyout neonxp.ru.key
```
Важно! Нужно сохранить файл ключа neonxp.ru.key в надежном месте. Если он попадет в чужие руки - нужно будет отзывать сертификат и начинать всё заново!
SAN и Wildcard пока не поддерживается, но что имеем - то и имеем. Но по слухам таки будут, как минимум SAN.
3. Полученный файл csr загружаем там же на госуслуги
4. Ждём не долго (реально недолго, у меня прислали сертификат буквально через несколько минут!)
5. В ответ придёт файл с рандомным названием. Сохраняем его туда, где лежат другие файлы под названием "домен.crt"
6. Скачиваем корневой и промежуточные сертификаты:
```
wget https://gu-st.ru/content/Other/doc/russian_trusted_root_ca.cer
wget https://gu-st.ru/content/Other/doc/russian_trusted_sub_ca.cer
```
7. Преобразуем скачанный сертификат в формат PEM:
```
openssl x509 -in neonxp.ru.crt -out neonxp.cer -outform PEM
```
8. Соединяем свой сертификат и минцифровские в один бандл:
```
cat neonxp.cer russian_trusted_sub_ca_pem.cer russian_trusted_root_ca_pem.cer > chain.cer
```
9. Используем полученный бандл и сгенерированный в пункте 2 файл ключа в конфигурации вебсервера. У меня используется Caddy, поэтому мой конфиг выглядит так:
```
neonxp.ru:443 {
tls /data/ssl/chain.cer /data/ssl/neonxp.ru.key
...
}
```
В общем-то, всё. Как настанет время продлевать - я дополню заметку деталями именно продления. Если будут вопросы - пишите, попробуем решить.
Есть что накинуть? Внизу теперь есть комментарии: