Procedura: configurare una porta con un certificato SSL
Quando si crea un servizio Windows Communication Foundation (WCF) indipendente con la classe WSHttpBinding che utilizza la protezione del trasporto, è necessario configurare anche una porta con un certificato X.509. Se non si intende creare un servizio indipendente, è possibile ospitare il servizio in Internet Information Services (IIS). Per ulteriori informazioni, vedere Protezione del trasporto HTTP.
Per configurare una porta, lo strumento da utilizzare dipende dal sistema operativo eseguito nel computer.
Se viene eseguito Windows Server 2003 o Windows XP, utilizzare lo strumento HttpCfg.exe. Con Windows Server 2003, questo strumento è installato. Con Windows XP, è possibile scaricare lo strumento dal sito degli strumenti di supporto per Windows XP Service Pack 2. Per ulteriori informazioni, vedere Panoramica di Httpcfg. Nella documentazione sugli strumenti di supporto Windows (la pagina potrebbe essere in inglese) viene illustrata la sintassi dello strumento Httpcfg.exe.
Se viene eseguito Windows Vista, utilizzare lo strumento Netsh.exe già installato.
In questo argomento viene descritto come eseguire diverse procedure:
- Determinazione della configurazione corrente delle porte di un computer
- Acquisizione dell'identificazione personale (necessaria per le due procedure seguenti) di un certificato
- Binding di un certificato SSL alla configurazione di una porta
- Binding di un certificato SSL alla configurazione di una porta e supporto di certificati client
- Eliminazione di un certificato SSL da un numero di porta
Si noti che la modifica dei certificati archiviati nel computer richiede privilegi di amministrazione.
Per determinare la configurazione delle porte
In Windows Server 2003 o Windows XP utilizzare lo strumento HttpCfg.exe per visualizzare la configurazione corrente delle porte, utilizzando le opzioni query e ssl come illustrato nell'esempio seguente.
httpcfg query ssl
In Windows Vista utilizzare lo strumento Netsh.exe per visualizzare la configurazione corrente delle porte, come illustrato nell'esempio seguente.
netsh http show sslcert
Per ottenere l'identificazione personale di un certificato
Utilizzare lo snap-in MMC Certificati per individuare un certificato X.509 che abbia come scopo previsto l'autenticazione client. Per ulteriori informazioni, vedere Procedura: visualizzare certificati con lo snap-in MMC.
Accedere all'identificazione personale del certificato. Per ulteriori informazioni, vedere Procedura: recuperare l'identificazione personale di un certificato.
Copiare l'identificazione personale del certificato in un editor di testo, ad esempio Blocco note.
Rimuovere tutti gli spazi tra i caratteri esadecimali. Per eseguire questa operazione, è possibile utilizzare la funzionalità Trova e sostituisci dell'editor di testo per sostituire ogni spazio con un carattere null.
Per associare un certificato SSL a un numero di porta
In Windows Server 2003 o Windows XP utilizzare lo strumento HttpCfg.exe in modalità "impostazione" nell'archivio SSL (Secure Sockets Layer) per associare il certificato a un numero di porta. Lo strumento utilizza l'identificazione personale per identificare il certificato, come illustrato nell'esempio seguente.
httpcfg set ssl -i 0.0.0.0:8012 -h 0000000000003ed9cd0c315bbb6dc1c08da5e6
- L'opzione -i contiene la sintassi di IP:port e indica allo strumento di impostare il certificato sulla porta 8012 del computer. I quattro zero che precedono il numero possono essere anche sostituiti dall'indirizzo IP effettivo del computer.
- L'opzione -h consente di specificare l'identificazione personale del certificato.
In Windows Vista utilizzare lo strumento Netsh.exe come illustrato nell'esempio seguente.
netsh http add sslcert ipport=0.0.0.0:8000 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF}
- Il parametro certhash consente di specificare l'identificazione personale del certificato.
- Il parametro ipport consente di specificare la porta e l'indirizzo IP e funzioni come l'opzione - i dello strumento Httpcfg.exe descritto.
- Il parametro appid è un GUID che può essere utilizzato per identificare l'applicazione proprietaria.
Per associare un certificato SSL a un numero di porta e ai certificati client supportati
In Windows Server 2003 o Windows XP per supportare client che eseguono l'autenticazione con i certificati X.509 a livello di trasporto, eseguire la procedura precedente passando a HttpCfg.exe un parametro aggiuntivo della riga di comando, come illustrato nell'esempio seguente.
httpcfg set ssl -i 0.0.0.0:8012 -h 0000000000003ed9cd0c315bbb6dc1c08da5e6 -f 2
L'opzione -f presenta la sintassi n, dove n è un numero compreso tra 1 e 7. Il valore 2, come illustrato nell'esempio precedente, attiva i certificati client a livello di trasporto. Il valore 3 attiva i certificati client e associa tali certificati a un account Windows. Per il comportamento di altri valori, vedere la Guida di HttpCfg.exe.
In Windows Vista per supportare i client che eseguono l'autenticazione con i certificati X.509 a livello di trasporto, eseguire la procedura precedente, ma con un parametro aggiuntivo, come illustrato nell'esempio seguente.
netsh http add sslcert ipport=0.0.0.0:8000 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF} clientcertnegotiation=enable
Per eliminare un certificato SSL da un numero di porta
Utilizzare lo strumento HttpCfg.exe o Netsh.exe per visualizzare le porte e le identificazioni personali di tutti i binding nel computer. Per stampare le informazioni su disco, utilizzare il carattere di reindirizzamento ">", come mostrato nell'esempio seguente.
httpcfg query ssl>myMachinePorts.txt
In Windows Server 2003 o Windows XP utilizzare lo strumento HttpCfg.exe con le parole chiave delete e ssl. Utilizzare l'opzione -i per specificare il numero IP:port e l'opzione -h per specificare l'identificazione personale.
httpcfg delete ssl -i 0.0.0.0:8005 -h 0000000000003ed9cd0c315bbb6dc1c08da5e6
In Windows Vista utilizzare lo strumento Netsh.exe, come illustrato nell'esempio seguente.
Netsh http delete sslcert ipport=0.0.0.0:8005
Esempio
Nel codice seguente viene illustrato come creare un servizio indipendente utilizzando la classe WSHttpBinding per la protezione del trasporto. Quando si crea un'applicazione, specificare il numero di porta nell'indirizzo.