Срок действия одного из моих SSL-сертификатов (только для простой проверки домена) истекает на сервере Windows 2003 IIS 7.0.
Мне поступило более выгодное предложение от другого поставщика, и ребята, которые изначально выпустили мой сертификат, не хотят договариваться о более низких ценах.
В любом случае - через мастер сертификатов в IIS у меня есть возможность «обновить» или «удалить», а затем установить новый сертификат.
Итак - могу ли я использовать опцию «продлить», чтобы создать запрос на сертификат и передать его новому поставщику, или мне нужно начать с «нового» запроса? Будет ли иметь значение для нового поставщика, что предыдущий сертификат был выдан другим подписавшим?
Проблема в том, что я не хочу останавливать сервер (по крайней мере, защищенную часть) из-за удаления старого сертификата и создания нового CSR и ждать установки нового сертификата.
Или есть возможность подготовить новый CSR, не удаляя старый сертификат?
Обновление сертификата позволяет сохранить один и тот же открытый и закрытый ключ при обновлении даты истечения срока действия сертификата. Преимущество этого в том, что вам приходилось хранить отпечаток пальца на маршрутизаторе или в чем-то еще. Я считаю, что для обновления запроса требуется тот же выдающий ЦС, поэтому может быть проще сгенерировать новый запрос вручную.
Вы можете создать запрос на сертификат вручную и отправить его. После получения нового сертификата вы можете просто переключить сертификат, который ищет IIS7. Как создать SSL-сертификат веб-сервера вручную.
Суть процесса в том, что вы создадите inf-файл с необходимой информацией, запустите certreq -new file.inf file.req
. Получив файл запроса, вы можете отправить его в ЦС, который хотите выпустить свой сертификат, а затем принять открытый ключ, который они отправят вам, с помощью команды certreq -accept file-from-ca.req
[Version]
Signature="$Windows NT$"
[NewRequest]
Subject = "CN=fully.qualified.domain.name, OU=Organizational Unit, O=Company, L=City, S=State, C=Country"
KeySpec = 1
KeyLength = 2048
HashAlgorithm = SHA256
Exportable = FALSE
MachineKeySet = TRUE
SMIME = FALSE
PrivateKeyArchive = FALSE
UserProtected = FALSE
UseExistingKeySet = FALSE
RequestType = PKCS10
KeyUsage = 0xa0
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
FriendlyName = ""
[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1 ; Server Authentication
[RequestAttributes]
CertificateTemplate = WebServer
[Extensions]
2.5.29.17 = "{text}"
_continue_ = "DNS=&"
_continue_ = "DNS="
Приведенный выше пример inf - это тот, который я использую для внутреннего использования для моего собственного CA, но его можно адаптировать для работы в большинстве сред. Вы можете установить Exportable
значение TRUE, если вы хотите иметь возможность архивировать свой ключ. В FriendlyName
является совершенно необязательным, а Extensions
Раздел предназначен для использования альтернативных имен DNS (Subject Alternative Names).
Примером записи SAN может быть:
[Extensions]
2.5.29.17 = "{text}"
_continue_ = "DNS=example.com&"
_continue_ = "DNS=www.example.com&"
_continue_ = "DNS=secure.example.com"
Это позволит вам использовать один и тот же сертификат с тремя указанными выше сайтами, не жаловавшись на несоответствие имен (в современных браузерах - я не думаю, что IE6 это понимает). Важно, чтобы вы включили полное доменное имя (CN в строке темы) в SAN, если вы это настроили. Вы также можете полностью удалить область расширений, если вам не нужны несколько доменных имен (кроме того, некоторые центры сертификации могут не поддерживать это).
Как только вы сохраните вышеуказанную информацию (я знаю, что это много). Следуй этим шагам:
certreq -new above.inf request.req
certreq -accept file-from-ca.cer
чтобы завершить настройку ключа.Удачи!
Полный синтаксис для certreq и файла inf можно найти по адресу Приложение 3: Синтаксис Certreq.exe (Windows Server 2003 SP1). В FriendlyName
и HashAlgorithm
только Server 2008 (и R2). Вы можете просмотреть список поддерживаемых криптографических провайдеров, выполнив команду certutil -csplist
и глядя на результат. В текущем пакете пакета обновления 2 (SP2) для Windows 2003 есть «Microsoft RSA SChannel Cryptographic Provider», указанный как доступный поставщик, поэтому убедитесь, что в вашем файле правильно установлены кавычки и что эта запись находится только в одной строке (без переноса или многострочного).
Вы также можете изменить ProviderName на ProviderType и использовать число, предоставленное выходными данными certreq -csplist
.
В этом случае я получаю следующий результат:
Provider Name: Microsoft RSA SChannel Cryptographic Provider
Provider Type: 12
Так что я могу использовать
ProvderName = "Microsoft RSA SChannel Cryptographic Provider"
или
ProviderType = 12
Вам нужно только создать временный веб-сайт с IIS 6.0. IIS 7.0 позволяет создавать несколько ожидающих запросов одновременно.
В IIS 7.0 на самом деле есть ошибка, из-за которой функция обновления генерирует CSR с очень большим ключом (намного большим, чем вы хотите). Из-за этого рекомендуется создать новый ожидающий запрос вместо выбора опции продления. После установки вы просто переключаете привязку SSL на веб-сайте, и у вас не будет простоев. Это также позволяет вам генерировать новый ключ каждый раз при продлении, что повышает безопасность.
Поставщик сертификатов (CA) не заботится о том, используете ли вы новую опцию или опцию продления, и вы можете использовать любой вариант независимо от того, остаетесь ли вы с тем же центром сертификации или делаете заказ из нового.
Хорошо, чтобы частично ответить на мой собственный вопрос - часть создания / использования нового сертификата без удаления существующего (т.е. без остановки сервера), я нашел хорошее описание на сайте Comodo - в основном мне нужно создать «временный» веб-сайт на сервере и использовать его для создания нового CSR, отправки его на подпись, а также получения и импорта сертификата.
Затем на моем основном (реальном) сайте мне нужно заменить текущий сертификат, а затем удалить временный.