Il rinnovo di un certificato consente di conservare la stessa chiave pubblica e privata durante l'aggiornamento della data di scadenza del certificato. Il vantaggio di questo è se dovessi memorizzare l'identificazione personale su un router o qualcosa del genere. Ritengo che per rinnovare una richiesta sia necessaria la stessa CA di emissione, quindi potrebbe essere più semplice generare manualmente una nuova richiesta.
Per generare una nuova richiesta senza far saltare IIS
È possibile creare manualmente la richiesta di certificato e inviarla. Una volta ottenuto il nuovo certificato, puoi semplicemente cambiare il certificato che IIS7 sta cercando. Come creare manualmente un certificato SSL del server Web .
L'essenziale del processo è che creerai un file inf con le informazioni richieste, esegui certreq -new file.inf file.req
. Una volta che hai il file di richiesta, puoi inviarlo alla CA che desideri emettere il certificato, quindi accettare la chiave pubblica che ti inviano con il comandocertreq -accept file-from-ca.req
Esempio 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="
Il precedente esempio inf è uno che uso internamente per la mia CA ma può essere adattato per funzionare per la maggior parte degli ambienti. È possibile impostare Exportable
su TRUE se si desidera poter archiviare la chiave. Il FriendlyName
è completamente opzionale e la Extensions
sezione è per l'utilizzo di nomi DNS alternativi (nomi soggetto alternativi).
Un esempio di una voce SAN sarebbe:
[Extensions]
2.5.29.17 = "{text}"
_continue_ = "DNS=example.com&"
_continue_ = "DNS=www.example.com&"
_continue_ = "DNS=secure.example.com"
Ciò ti consentirebbe di utilizzare lo stesso certificato con i tre siti di cui sopra senza lamentarti che esiste una mancata corrispondenza del nome (sui browser moderni - non credo che IE6 lo capisca). È importante includere il nome di dominio completo (il CN della riga dell'oggetto) nella SAN se lo si imposta. Puoi anche rimuovere completamente l'area delle estensioni se non hai bisogno di più nomi di dominio (inoltre, alcune CA potrebbero non supportarlo).
Il processo
Una volta salvate le informazioni di cui sopra (so che sono molte). Segui questi passi:
- Aprire un prompt dei comandi e cd nella directory in cui è stata salvata la precedente inf.
- Correre
certreq -new above.inf request.req
- Invia il file request.req alla tua CA. Lo elaboreranno e lo approveranno / rifiuteranno.
- Quando lo approvano, dovrebbero restituirti la tua chiave pubblica in un file .cer.
- Esegui
certreq -accept file-from-ca.cer
per terminare l'impostazione della chiave.
In bocca al lupo!
modificare
La sintassi completa per certreq e il file inf è disponibile nell'Appendice 3: Sintassi Certreq.exe (Windows Server 2003 SP1) . Solo FriendlyName
e HashAlgorithm
sono Server 2008 (e R2). È possibile visualizzare un elenco di provider crittografici supportati eseguendo il comando certutil -csplist
e osservando l'output. Una casella corrente di Windows 2003 SP2 ha il "Provider crittografico SChannel Microsoft RSA" elencato come provider disponibile, quindi assicurati che il tuo file abbia le virgolette impostate correttamente e che la voce sia su una sola riga (nessun wrapping o multilinea).
Puoi anche cambiare ProviderName in ProviderType e utilizzare il numero fornito dall'output di certreq -csplist
.
In questo caso ottengo il seguente output:
Provider Name: Microsoft RSA SChannel Cryptographic Provider
Provider Type: 12
Quindi posso usare entrambi
ProvderName = "Microsoft RSA SChannel Cryptographic Provider"
o
ProviderType = 12