Назад | Перейти на главную страницу

В чем разница между созданием файла CSR из OpenSSL и IIS?

Мне было показано, как создавать файлы .csr с помощью OpenSSL, и я успешно создал, преобразовал и установил подписанные сертификаты (файлы .pfx) на некоторые из наших веб-серверов с IIS 10.

Кто-то еще показал мне, как сгенерировать файлы .csr непосредственно с одного из наших других веб-серверов - с помощью функции «Создать запрос сертификата», доступной в IIS 10. Однако, используя этот метод, у меня не было чтобы создать файл .pfx, и я смог установить загруженный подписанный сертификат в IIS без необходимости ничего конвертировать. Таким образом, это было намного быстрее, но я не понимаю, почему в данном случае использовался именно этот метод, а не OpenSSL. Конечный результат отличается? Может кто-нибудь просветите меня, пожалуйста?

  1. OpenSSL - это внешняя зависимость. Он не поставляется вместе с Windows, вам необходимо загрузить и установить инструмент.
  2. OpenSSL - это инструмент CLI (интерфейс командной строки), для него нет графического интерфейса по умолчанию.
  3. OpenSSL не имеет интеграции с подсистемой криптографии Windows (CryptoAPI).
  4. Диспетчер IIS обеспечивает лучший пользовательский интерфейс (с использованием формы пользовательского интерфейса вместо интерфейса командной строки), хотя и с ограниченной функциональностью. Например, вы не можете указать расширение SAN или настроить расширения в запросе. Предполагается, что сервер CA отвечает за определение требуемых альтернативных имен, расширений и включение их в подписанные сертификаты. Некоторые коммерческие центры сертификации предоставляют форму, в которой вы можете указать альтернативные имена вместе с загруженным файлом запроса.
  5. Диспетчер IIS включает интеграцию со службами сертификации Microsoft Active Directory для выполнения прямой регистрации сертификатов из внутреннего центра сертификации.

Хотя OpenSSL предлагает большую гибкость с точки зрения того, что вы можете включить в запрос, для преобразования и правильной установки всего требуется дополнительная работа. Windows предоставляет certreq.exe Инструмент CLI, который предлагает те же функции, что и OpenSSL, с точки зрения генерации запросов. Certreq поставляется с каждой установкой Windows, вам не нужно ничего устанавливать, чтобы она работала.

OpenSSL (в Windows) необходим только в том случае, если целевое приложение не поддерживает Microsoft CryptoAPI и требует закрытых ключей в формате PKCS # 1 или PKCS # 8. CryptoAPI ужасно поддерживает эти форматы из-за разной конструкции криптографического стека. Во всех остальных случаях достаточно использовать встроенные инструменты Windows (MMC, certreq, certutil и т. Д.) Для выполнения операций, связанных с сертификатами.

Если вы используете консоль IIS Создать сертификат домена ... вариант, вы можете запросить сертификат только с помощью встроенного шаблона веб-сервера Microsoft ADCS. Этот шаблон имеет очень ограниченные возможности и не включает Subject Alternate Name расширение, обязательное для всех современных браузеров, а также включает S/MIME Capabilities расширения, которые не требуются для сертификатов веб-серверов. Поскольку это шаблон версии 1, вы не можете изменить ни один из них.

Если вместо этого вы решите использовать консоль IIS Создать запрос на сертификат ... вариант вы создадите запрос, который можно сохранить на диск. Теперь вы можете отправить запрос в любой центр сертификации. Если вы выберете Windows ADCS, вы можете использовать certreq.exe утилита с -attrib "CertificateTemplate:<template short name> возможность указать другой шаблон. Вы даже можете проявить некоторую изобретательность, чтобы добавить Subject Alternate Name расширение (или любое другое расширение) к запросу, но это требует некоторых усилий и понимания внутренней работы сертификатов X.509!

Если вы используете OpenSSL для создания запроса на сертификат, вы можете запросить любое поле или расширения, которые OpenSSL может создать - что почти охватывает все. Вы можете отправить это в ADCS CA с помощью certreq.exe или отправьте запрос в центр сертификации, отличный от Windows. После получения сертификата вам необходимо связать его с его закрытым ключом, чтобы создать файл PKCS # 12 (или PFX), который вы импортируете на сервер. Это довольно запутанно, но при необходимости запрос сертификата может быть довольно гибким.

Однако более простой вариант (который, кажется, вам не был показан) - запросить сертификат с помощью консоли управления сертификатами сервера (не IIS) (certlm.msc из диалогового окна «Выполнить»), где вы можете запросить сертификат, используя любой включенный шаблон (не только веб-сервер). Если этот шаблон правильно настроен администраторами ADCS, вы получите сертификат с соответствующим Subject Alternate Name расширение, нет S/MIME Capability расширение и правильное использование ключей для веб-сервера, которые затем можно просто привязать к веб-сайту с помощью консоли IIS. Это одновременно гибко и удобно.