Поновлення сертифіката дозволяє зберігати один і той же відкритий і приватний ключ під час оновлення дати закінчення терміну дії сертифіката. Перевага в тому, якщо вам довелося зберігати відбиток пальців на маршрутизаторі чи щось подібне. Я вважаю, що для оновлення запиту необхідний той самий сертифікат, що видає, тому може бути просто простіше створити новий запит вручну.
Щоб створити новий запит без підриву IIS
Ви можете створити запит на сертифікат вручну та надіслати його. Отримавши новий сертифікат, ви зможете просто переключити сертифікат, який IIS7 шукає. Як створити сертифікат SSL веб-сервера вручну .
Простий суть процесу полягає в тому, що ви створите інфа-файл з необхідною інформацією, запустіть 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 в тематичному рядку), якщо ви його встановили. Ви також можете повністю видалити область розширень, якщо у вас немає потреби в декількох доменних іменах (також деякі ЦА можуть не підтримувати її).
Процес
Після збереження вищезазначеної інформації (я знаю, що це багато). Виконайте такі дії:
- Відкрийте командний рядок і введіть компакт-диск у каталог, де ви зберегли вищевказану інформацію.
- Біжи
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
та подивившись на вихід. У поточному вікні SP2 для Windows 2003 "Криптографічний провайдер Microsoft RSA SChannel" вказаний у якості доступного постачальника, тому переконайтесь, що у вашому файлі встановлені котирування належним чином, і що запис є лише в одному рядку (без упаковки чи багато рядків).
Ви також можете змінити ProviderName на ProviderType і використати номер, що надається результатом certreq -csplist
.
У цьому випадку я отримую такий результат:
Provider Name: Microsoft RSA SChannel Cryptographic Provider
Provider Type: 12
Тож я можу або використовувати
ProvderName = "Microsoft RSA SChannel Cryptographic Provider"
або
ProviderType = 12