В моих попытках понять, как работают сертификаты TLS в Windows, я не нашел простого и подробного руководства, но выполнил некоторые необходимые шаги.

Во-первых, мне удалось загрузить команду OpenSSL как OpenSSL Light Stable с slproweb.com/products/Win32OpenSSL.html. Краткое описание подкоманд находится по адресу https://www.openssl.org/docs/man1.1.0/apps/ . Я добавил папку bin OpenSSL в "Система"> "Свойства"> "Дополнительно"> "Переменные среды"> "Системные переменные"> "Путь", чтобы команда "OpenSSL" работала в окне командной строки администратора.

Затем я узнал, как создать центр сертификации (ЦС) для локального использования, по адресу восхитительный адрес :brabrains.com/ssl-certificate-authority-for-local-https-development/. Это привело к хранению созданного.Файл CRT в хранилище компьютера "Доверенные корневые центры сертификации", который используется локальными браузерами при доступе к веб-страницам HTTPS. Этот новый сертификат CA можно увидеть в Консоли управления компьютером> Сертификаты (который может быть добавлен как новая оснастка MMC) или в разделе Просмотр сертификатов где-нибудь в Options в любом браузере или с помощью очень полезной команды certutil Windows.

Конкретные команды, используемые в командной строке администратора (% windir%\system32\cmd.exe) для создания локального ЦС, были следующими:

  1. Выберите секретную фразу-пароль и предоставьте ее всякий раз, когда вас попросят.
  2. Создать закрытый ключ: openssl genrsa -des3 -out CA_NAME.key 2048
  3. Создайте сертификат PEM из личного ключа: openssl req -x509 -new -nodes -key CA_NAME.key -sha256 -days 1825 -out CA_NAME.pem
  4. Создайте корневой сертификат CA: openssl x509 -outform -in CA_NAME.pem -out CA_NAME.crt
  5. Установите корневой сертификат CA на локальном компьютере: щелкните правой кнопкой мыши CA_NAME.crt, выберите «Установить мастер импорта сертификатов сертификатов»> «Локальный компьютер»> «Обзор»> «Доверенные корневые центры сертификации».

Примечание: мне не ясно, какие из этих парольных фраз и сгенерированных файлов когда-нибудь понадобятся снова и для каких целей. Понятно, что сохраненный сертификат CA будет использоваться в качестве корневого для любых более конкретных сертификатов на текущем компьютере.

Далее я задаю вопрос, как создать сертификат авторизации сервера для одного или нескольких веб-сайтов в домене localhost (примеры: localhost/MY_WEBSITE, localhost/FOLDER/FILE.html) на основе недавно установленного доверенного сертификата CA. Это позволит без ошибок использовать URL-адреса браузера, такие как https://localhost/MY_WEBSITE , при условии, что локальный сервер прослушивает такие безопасные веб-запросы.

Я нашел несколько алгоритмов, но все они кажутся либо устаревшими, либо неполными. Ясно, что частью этого алгоритма должно быть создание файла "SAN", который содержит список веб-сайтов, которые будут авторизованы, и что другой частью должен быть запрос на подпись сертификата (CSR).

Может ли кто-нибудь предоставить такой алгоритм, список шагов, подобный приведенному выше, для создания и установки сертификата сайта localhost на основе существующего сертификата локальной CA, созданного, как указано выше? Пожалуйста, не забудьте проверить, что вы предлагаете, прежде чем ответить.

1 ответ1

0

OpenSSL не требует административного терминала.

...Мне не ясно, какие из этих парольных фраз и сгенерированных файлов когда-нибудь понадобятся снова и для каких целей.

  • Пароль CA / ICA используется при подписании новых сертификатов, поскольку CA / ICA всегда должен иметь зашифрованный ключ
  • Сертификаты сервера никогда не должны иметь зашифрованный ключ, так как он требует ручного вмешательства для запуска
  • Клиентские сертификаты с зашифрованным ключом будут запрашивать пароль при каждом использовании сертификата.


...Далее я задаю вопрос, как создать сертификат авторизации сервера для одного или нескольких сайтов в домене localhost.

Это достигается с помощью профилей SAN.

  • Файл openssl.cnf по умолчанию из OpenSSL довольно сложно разобрать для любого, кто не знаком с ним, поэтому несколько лет назад на моем GitHub я создал специальный, легкий для понимания openssl.cnf.
    • Строка 164: начинаются профили SAN
    • Строка 260: начинаются профили V3
    • Строка 430: начинаются все необходимые команды и информация


...Может ли кто-нибудь предоставить такой алгоритм, список шагов, подобный приведенному выше, для создания и установки сертификата сайта localhost на основе существующего сертификата локальной CA, созданного, как указано выше?

Чтобы быть в здравом уме, я буду использовать профили V3, содержащиеся в моем связанном openssl.cnf выше

  1. Создать необходимые каталоги:

    mkdir ca\csr certs crl keys
    
  2. Создать необходимые файлы:

    echo 00 > crl\crlnumber && type NUL > index && type NUL > rand && echo 00 > serial
    
  3. Создать CA

    openssl req -x509 -new -sha512 -days 3650 -newkey rsa:4096 -keyout ca\ca.key.pem -out ca\ca.crt.pem -config .\openssl.cnf -extensions v3_ca
    
    • Ключевые фразы CA: минимум 20 символов, содержащие 2: прописные, строчные, цифры и символы

      1. Создайте сертификат сервера CSR:

        openssl req -out ca\csr\server.csr -new -days 3650 -sha512 -newkey rsa:2048 -keyout keys\server.key.pem -config .\openssl.cnf -extensions v3_sophos -nodes
        
      2. Создайте и подпишите сертификат с CA:

        openssl x509 -req -sha512 -days 3650 -in ca\csr\server.csr -CA ca\ca.crt.pem -CAkey ca\ca.key.pem -CAserial .\serial -out certs\server.crt.pem -extfile .\openssl.cnf -extensions v3_sophos
        
      3. Объединить CA с Cert:

        type ca/ca.crt.pem >> certs/server.crt.pem
        
      4. Экспорт в PKCS12:

        openssl pkcs12 -export -out certs\server.p12 -inkey certs\server.key.pem -in certs\server.crt.pem -certfile ca\ca.crt.pem
        


Дополнительная информация

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .