Как создать локальный сертификат Windows на основе локального центра сертификации?

2674
David Spector

В моих попытках понять, как работают сертификаты 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, созданного, как указано выше? Пожалуйста, не забудьте проверить, что вы предлагаете, прежде чем ответить.

0
см. [Как оформить SSL-сертификат с расширением SAN?] (https://serverfault.com/questions/845806/how-to-issue-ssl-certificate-with-san-extension). Steffen Ullrich 7 лет назад 1
Штеффен, спасибо. Какой из этих трех частичных ответов с низким рейтингом вы рекомендуете? Ни один не кажется правильным или полным. Я ищу ответ, который работает, проверен и содержит столько же деталей, сколько содержится в моем вопросе. Ничто из этого не кажется надежным, David Spector 7 лет назад 0
* «Какой из этих трех частичных ответов с низким голосом вы рекомендуете?» * - Понятия не имею, о чем вы говорите. Вопрос, на который я ссылаюсь, включает только один ответ, который объясняет, как создать сертификат SAN, когда у вас уже есть сертификат CA (который вам уже удалось создать). Steffen Ullrich 7 лет назад 0

1 ответ на вопрос

0
JW0914

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 


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