Procedura: Creare certificati temporanei da usare durante lo sviluppo
Quando si sviluppa un servizio o un client protetto usando Windows Communication Foundation (WCF), è spesso necessario fornire un certificato X.509 da usare come credenziale. Il certificato in genere fa parte di una catena di certificati con autorità radice contenuta nell'archivio Autorità di certificazione radice attendibile del computer. La catena di certificati consente di definire l'ambito per un set di certificati quando in genere l'autorità radice è dell'organizzazione o dell'unità aziendale. Per emulare questo comportamento in fase di sviluppo, è possibile creare due certificati per soddisfare i requisiti di sicurezza. Il primo è un certificato autofirmato che si trova nell'archivio Autorità di certificazione radice attendibile, mentre il secondo certificato viene creato dal primo e si trova nell'archivio Personale del computer locale o dell'utente corrente. Questo argomento illustra la procedura per creare questi due certificati usando il cmdlet New-SelfSignedCertificate) di PowerShell.
Importante
I certificati generati dal cmdlet New-SelfSignedCertificate vengono forniti solo a scopo di test. Quando si distribuisce un servizio o un client, assicurarsi di usare un certificato appropriato rilasciato da un'autorità di certificazione. Tale certificato può essere fornito da un server dei certificati di Windows Server dell'organizzazione o da terze parti.
Per impostazione predefinita, il cmdlet New-SelfSignedCertificate crea certificati autofirmati e questi certificati non sono sicuri. Il posizionamento di un certificato autofirmato nell'archivio di Autorità di certificazione radice attendibili consente di creare un ambiente di sviluppo che simula in modo più accurato l'ambiente di distribuzione.
Per altre informazioni su creazione e uso di certificati, vedere Utilizzo dei certificati. Per altre informazioni sull'uso di un certificato come credenziale, vedere Protezione di servizi e client. Per un'esercitazione sull'uso della tecnologia Microsoft Authenticode, vedere Panoramica di Authenticode ed esercitazioni.
Per creare un certificato dell'autorità radice autofirmato ed esportare la chiave privata
Il comando seguente crea un certificato autofirmato con un nome soggetto "RootCA" nell'archivio personale utente corrente.
$rootCert = New-SelfSignedCertificate -CertStoreLocation Cert:\CurrentUser\My -DnsName "RootCA" -TextExtension @("2.5.29.19={text}CA=true") -KeyUsage CertSign,CrlSign,DigitalSignature
È necessario esportare il certificato in un file PFX in modo che possa essere importato nella posizione necessaria in un passaggio successivo. Quando si esporta un certificato con la chiave privata, è necessaria una password per proteggerlo. La password viene salvata in un SecureString
e viene usato il cmdlet Export-PfxCertificate per esportare il certificato con la chiave privata associata in un file PFX. Il certificato pubblico viene salvato anche in un file CRT usando il cmdlet Export-Certificate.
[System.Security.SecureString]$rootCertPassword = ConvertTo-SecureString -String "password" -Force -AsPlainText
[String]$rootCertPath = Join-Path -Path 'cert:\CurrentUser\My\' -ChildPath "$($rootCert.Thumbprint)"
Export-PfxCertificate -Cert $rootCertPath -FilePath 'RootCA.pfx' -Password $rootCertPassword
Export-Certificate -Cert $rootCertPath -FilePath 'RootCA.crt'
Per creare un nuovo certificato firmato mediante un certificato dell'autorità radice
Il comando seguente crea un certificato firmato da RootCA
con un nome soggetto "SignedByRootCA" usando la chiave privata dell'emittente.
$testCert = New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName "SignedByRootCA" -KeyExportPolicy Exportable -KeyLength 2048 -KeyUsage DigitalSignature,KeyEncipherment -Signer $rootCert
Analogamente, il certificato firmato viene salvato con chiave privata in un file PFX e con solo la chiave pubblica in un file CRT.
[String]$testCertPath = Join-Path -Path 'cert:\LocalMachine\My\' -ChildPath "$($testCert.Thumbprint)"
Export-PfxCertificate -Cert $testCertPath -FilePath testcert.pfx -Password $rootCertPassword
Export-Certificate -Cert $testCertPath -FilePath testcert.crt
Installazione di un certificato nell'archivio dell'Autorità di certificazione radice attendibili
Se è stato creato un certificato autofirmato, è possibile installarlo nell'archivio Autorità di certificazione radice attendibili. Qualsiasi certificato firmato con il certificato in questa fase viene considerato attendibile dal computer. Per questo motivo, eliminare il certificato dall'archivio quando non è più necessario. Quando si elimina questo certificato dell'autorità radice, tutti gli altri certificati che sono stati firmati mediante tale certificato diventano non autorizzati. I certificati dell'autorità radice sono semplicemente un meccanismo che consente di definire come necessario un gruppo di certificati. Ad esempio, nelle applicazioni peer-to-peer in genere non è necessaria un'autorità radice perché l'identità di un individuo viene ritenuta attendibile semplicemente sulla base del certificato fornito.
Per installare un certificato autofirmato nell'Autorità di certificazione radice attendibili
Aprire lo snap-in del certificato. Per altre informazioni, vedere Procedura: Visualizzare certificati con lo snap-in MMC.
Aprire la cartella in cui archiviare il certificato, Computer locale o Utente corrente.
Aprire la cartella Autorità di certificazione radice attendibili .
Fare clic con il pulsante destro del mouse sulla cartella Certificati , scegliere Tutte le attività, quindi fare clic su Importa.
Seguire le istruzioni della procedura guidata per importare RootCA.pfx nell'archivio.
Uso dei certificati con WCF
Dopo avere impostato i certificati temporanei, è possibile usarli per sviluppare soluzioni WCF che specifichino i certificati come tipo di credenziali client. Nella configurazione XML seguente, ad esempio, vengono specificati la sicurezza dei messaggi e un certificato come tipo di credenziali client.
Per specificare un certificato come tipo di credenziali client
Nel file di configurazione di un servizio usare l'XML seguente per impostare la modalità di sicurezza su messaggio e il tipo di credenziali client su certificato.
<bindings> <wsHttpBinding> <binding name="CertificateForClient"> <security> <message clientCredentialType="Certificate" /> </security> </binding> </wsHttpBinding> </bindings>
Nel file di configurazione di un client usare l'XML seguente per specificare che il certificato è disponibile nell'archivio dell'utente e può essere trovato cercando il valore "CohoWinery" nel campo SubjectName.
<behaviors> <endpointBehaviors> <behavior name="CertForClient"> <clientCredentials> <clientCertificate findValue="CohoWinery" x509FindType="FindBySubjectName" /> </clientCredentials> </behavior> </endpointBehaviors> </behaviors>
Per altre informazioni sull'uso di certificati in WCF, vedere Working with Certificates.
.NET Framework (sicurezza)
Assicurarsi di eliminare qualsiasi certificato temporaneo dell'autorità di radice dalle cartelle Autorità di certificazione radice attendibili e Personale facendo clic con il pulsante destro del mouse sul certificato e scegliendo Elimina.