Обновление сертификата позволяет сохранить один и тот же открытый и закрытый ключ при обновлении даты истечения срока действия сертификата. Преимущество заключается в том, что вам нужно было хранить отпечаток на маршрутизаторе или чем-то еще. Я полагаю, что для возобновления запроса требуется тот же CA, который выдает, поэтому может быть проще сгенерировать новый запрос вручную.
Создать новый запрос без взрыва IIS
Вы можете создать запрос сертификата вручную и отправить его. Получив новый сертификат, вы можете просто переключить сертификат, который ищет IIS7. Как создать сертификат SSL для веб-сервера вручную .
Простая суть процесса заключается в том, что вы создадите файл inf с необходимой информацией, запустите certreq -new file.inf file.req
. Получив файл запроса, вы можете отправить его в центр сертификации, которому хотите выдать сертификат, а затем принять открытый ключ, который они отправили вам, с помощью команды.certreq -accept file-from-ca.req
Пример request.inf
[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 - это тот, который я использую для собственного ЦС, но его можно адаптировать для работы в большинстве сред. Вы можете установить 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, если настроили это. Вы также можете полностью удалить область расширений, если вам не нужны несколько доменных имен (также некоторые CA могут не поддерживать ее).
Процесс
Как только вы сохраните вышеупомянутую информацию (я знаю, что это много). Следуй этим шагам:
- Откройте командную строку и перейдите в каталог, в котором вы сохранили вышеуказанную инф.
- Бегать
certreq -new above.inf request.req
- Отправьте файл request.req в свой ЦС. Они обработают это и одобрят / отклонят это.
- Когда они одобрят это, они должны отправить вам ваш открытый ключ в файле .cer.
- Запустите,
certreq -accept file-from-ca.cer
чтобы закончить настройку ключа.
Удачи!
редактировать
Полный синтаксис для certreq и файла inf можно найти в Приложении 3: Синтаксис Certreq.exe (Windows Server 2003 SP1) . FriendlyName
И HashAlgorithm
только Server 2008 (и R2). Вы можете просмотреть список поддерживаемых поставщиков криптографии, выполнив команду certutil -csplist
и просмотрев выходные данные. В текущей версии Windows 2003 с пакетом обновления 2 (SP2) в качестве доступного поставщика указан «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
Хорошо, чтобы частично ответить на мой собственный вопрос - часть создания / использования нового сертификата без удаления существующего (т.е. без остановки сервера), я нашел хорошее описание на веб-сайте Comodo - в основном мне нужно создать «временный» веб-сайт на сервере и используйте его для создания нового CSR, отправки его на подпись, получения и импорта сертификата.
Затем на моем основном (реальном) сайте мне нужно заменить текущий сертификат, а затем удалить временный.
источник