aboutsummaryrefslogblamecommitdiff
path: root/content/posts/2024-02-21-tls/index.md
blob: 0fc4182290a7c8e078c0d603e9f272dcac77e15a (plain) (tree)
1
2
3
4
5
6





                                                                                          







                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                            
       
                                                                                                                                                                                                                                                       
       




                                                                                                                                                                                                                                                                                                                                                                                                                                                             

                                                                                                                                              


                                                                                        
                                                               
       

                                                                                                           
                                                                                             
       

                                                                                                                                                                                                                                                                                           



                                                       
       

                                                                                                                                                                                                                                                               
+++
categories = ['Без рубрики']
date = '2024-02-21T21:51:29Z'
tags = ['it', 'Россия', 'TLS']
title = 'Конфигурация HTTPS с сертификатом от Минцифры'
+++

Третьего дня потратил достаточно много времени на установку на данном сайте сертификата от Минцифры.А поскольку сертификат краткоживущий (90 дней) — заметка мне самому пригодится на будущее.

Началось всё с того, что я с удивлением обнаружил, что на госуслугах теперь можно выпустить сертификат для домена физлицу.Это меня обрадовало, хотя ранее я приунывал что нет никакой альтернативы простым смертным. Теперь есть. <del>Закрывайте буржуйнет.</del>

Поехали!

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.cerwget 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
        ...
    }
    ```

В общем-то, всё. Как настанет время продлевать — я дополню заметку деталями именно продления. Если будут вопросы — пишите, попробуем решить.