Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le System.Net classi supportano diversi modi per selezionare e convalidare System.Security.Cryptography.X509Certificates le connessioni SSL (Secure Socket Layer). Un client può selezionare uno o più certificati per autenticarsi in un server. Un server può richiedere che un certificato client disponga di uno o più attributi specifici per l'autenticazione.
Definizione
Un certificato è un flusso di byte ASCII che contiene una chiave pubblica, attributi (ad esempio il numero di versione, il numero di serie e la data di scadenza) e una firma digitale da un'autorità di certificazione. I certificati vengono usati per stabilire una connessione crittografata o per autenticare un client in un server.
Selezione e convalida del certificato client
Un client può selezionare uno o più certificati per una connessione SSL specifica. I certificati client possono essere associati alla connessione SSL a un server Web o a un server di posta SMTP. Un client aggiunge certificati a una raccolta di oggetti classe X509Certificate o X509Certificate2 . Usando un messaggio di posta elettronica come esempio, la raccolta di certificati è un'istanza di un X509CertificateCollectionoggetto ) associata alla ClientCertificates proprietà della SmtpClient classe . La HttpWebRequest classe ha una proprietà simile ClientCertificates .
La differenza principale tra X509Certificate e la X509Certificate2 classe è che la chiave privata deve risiedere nell'archivio certificati per la X509Certificate classe .
Anche se i certificati vengono aggiunti a una raccolta e associati a una connessione SSL specifica, nessun certificato verrà inviato al server a meno che il server non le richieda. Se in una connessione sono impostati più certificati client, quello migliore verrà usato in base a un algoritmo che considera la corrispondenza tra l'elenco di autorità di certificazione fornite dal server e il nome dell'autorità emittente del certificato client.
La SslStream classe fornisce ancora più controllo sull'handshake SSL. Un client può specificare un delegato per selezionare il certificato client da usare.
Un server remoto può verificare che un certificato client sia valido, corrente e firmato dall'autorità di certificazione appropriata. È possibile aggiungere un delegato a ServerCertificateValidationCallback per applicare la convalida del certificato.
Selezione del certificato client
.NET Framework seleziona il certificato client da presentare al server nel modo seguente:
Se un certificato client è stato presentato in precedenza al server, il certificato viene memorizzato nella cache quando viene presentato per la prima volta e viene riutilizzato per le successive richieste di certificato client.
Se è presente un delegato, usare sempre il risultato del delegato come certificato client da selezionare. Provare a usare un certificato memorizzato nella cache quando possibile, ma non usare credenziali anonime memorizzate nella cache se il delegato ha restituito null e la raccolta di certificati non è vuota.
Se questa è la prima richiesta per un certificato client, il Framework enumera i certificati in X509Certificate o gli oggetti di classe X509Certificate2 associati alla connessione, cercando una corrispondenza tra l'elenco di autorità di certificazione fornite dal server e il nome dell'autorità emittente del certificato client. Il primo certificato corrispondente viene inviato al server. Se nessun certificato corrisponde o la raccolta di certificati è vuota, al server viene inviata una credenziale anonima.
Strumenti per la configurazione del certificato
Sono disponibili diversi strumenti per la configurazione del certificato client e server.
Lo strumento Winhttpcertcfg.exe può essere usato per configurare i certificati client. Lo strumento Winhttpcertcfg.exe viene fornito come uno degli strumenti con Windows Server 2003 Resource Kit. Questo strumento è disponibile anche come download come parte degli strumenti di Resource Kit di Windows Server 2003 all'indirizzowww.microsoft.com.
Lo strumento HttpCfg.exe può essere usato per configurare i certificati server per la HttpListener classe . Lo strumento HttpCfg.exe viene fornito come uno degli strumenti di supporto per Windows Server 2003 e Windows XP Service Pack 2. HttpCfg.exe e gli altri strumenti di supporto non sono installati per impostazione predefinita in Windows Server 2003 o Windows XP. In Windows Server 2003. Gli strumenti di supporto vengono installati separatamente dalla cartella e dal file seguenti nel CD-ROM di Windows Server 2003:
\Support\Tools\Suptools.msi
Per l'uso con Windows XP Service Pack 2, gli strumenti di supporto di Windows XP sono disponibili come download da www.microsoft.com.
Il codice sorgente di una versione dello strumento HttpCfg.exe viene fornito anche come esempio con Windows Server SDK. Il codice sorgente dell'esempio diHttpCfg.exe viene installato per impostazione predefinita con gli esempi di rete come parte di Windows SDK nella cartella seguente:
C:\Programmi\Microsoft SDKs\Windows\v1.0\Samples\NetDS\http\serviceconfig
Oltre a questi strumenti, le X509Certificate classi e X509Certificate2 forniscono metodi per caricare un certificato dal file system.