Come configurare SSL in IIS 7 o versioni successive
di Saad Ladki
Introduzione
I passaggi per la configurazione di Secure Sockets Layer (SSL) per un sito sono gli stessi in IIS 7 e versioni successive e IIS 6.0 e includono quanto segue:
- Ottenere un certificato appropriato.
- Creare un'associazione HTTPS in un sito.
- Testare eseguendo una richiesta al sito.
- Facoltativamente, configurare le opzioni SSL, ovvero rendendo SSL un requisito.
Questo documento fornisce alcune informazioni di base su SSL, quindi illustra come abilitare SSL nei modi seguenti:
- Uso di Gestione IIS.
- Uso dello strumento della riga di comando AppCmd.exe.
- A livello di codice tramite Microsoft.Web.Administration.
- Uso degli script WMI.
In questo articolo sono contenute le sezioni seguenti:
Configurazione SSL
Se si esegue il sito Web nel proprio server o nel cloud, l'uso di SSL per proteggere il sito è probabilmente estremamente importante per l'utente, poiché molti siti Web si stanno trasformando per proteggere la privacy dell'utente. Se è necessario configurare SSL nel server, è importante capire che l'implementazione di SSL è stata modificata da IIS 6.0 a IIS 7 e versioni successive. In IIS 6.0 in Windows Server 2003, tutte le configurazioni SSL sono state archiviate nella metabase IIS e si è verificata la crittografia/decrittografia in modalità utente (che richiede molte transizioni in modalità kernel/utente). In IIS 7 e versioni successive, HTTP.sys gestisce la crittografia SSL/decrittografia in modalità kernel, causando fino al 20% prestazioni migliori per le connessioni sicure in IIS 7 e versioni successive rispetto a quelle sperimentate in IIS 6.0.
L'uso di SSL in modalità kernel richiede l'archiviazione delle informazioni sull'associazione SSL in due posizioni. Prima di tutto, l'associazione viene archiviata in %windir%\System32\inetsrv\config\applicationHost.config per il sito. Al momento dell'avvio del sito, IIS invia l'associazione a HTTP.sys e HTTP.sys avvia l'ascolto delle richieste nell'indirizzo IP:Port specificato (funziona per tutte le associazioni). In secondo luogo, la configurazione SSL associata all'associazione viene archiviata nella configurazione HTTP.sys. Usare il comando netsh in un prompt dei comandi per visualizzare la configurazione dell'associazione SSL archiviata in HTTP.sys come nell'esempio seguente:
netsh http show sslcert
Quando un client si connette e avvia una negoziazione SSL, HTTP.sys cerca la configurazione SSL per la coppia IP:Port a cui è connesso il client. La configurazione SSL HTTP.sys deve includere un hash del certificato e il nome dell'archivio certificati prima che la negoziazione SSL abbia esito positivo.
Suggerimento per la risoluzione dei problemi: Se si verificano problemi con un'associazione SSL, verificare che l'associazione sia configurata in ApplicationHost.config e che l'archivio HTTP.sys contenga un hash del certificato valido e un nome dell'archivio per l'associazione.
Scelta di un certificato
Quando si sceglie un certificato, considerare quanto segue: si vuole che gli utenti finali possano verificare l'identità del server con il certificato? In caso affermativo, creare una richiesta di certificato e inviare tale richiesta a un'autorità di certificazione nota (CA) come VeriSign o GeoTrust o ottenere un certificato da una CA online nel dominio Intranet. Esistono tre elementi che in genere un browser verifica in un certificato server:
- La data e l'ora corrente devono trovarsi all'interno dell'intervallo "Valido da" e "Valido fino a" del certificato.
- Il "nome comune" del certificato deve corrispondere all'intestazione host nella richiesta. Se ad esempio il client effettua una richiesta a
https://www.contoso.com/
, il nome comune del certificato deve esserewww.contoso.com
. - Che l'autorità emittente del certificato sia una CA nota e attendibile.
Se uno o più di questi controlli hanno esito negativo, il browser richiede all'utente avvisi. Se si dispone di un sito Internet o di un sito Intranet in cui gli utenti finali non sono persone che si conoscono personalmente, è sempre necessario assicurarsi che questi tre parametri siano validi.
I certificati autofirmati sono certificati creati nel computer. Sono utili negli ambienti in cui non è importante per un utente finale considerare attendibile il server, ad esempio un ambiente di test.
Uso di AppCmd
Non è possibile richiedere o creare un certificato usando AppCmd.exe. Non è anche possibile usare AppCmd.exe per creare un'associazione SSL.
Configurare le impostazioni SSL
È possibile usare AppCmd.exe per configurare un sito per accettare solo le connessioni HTTPS del server modificando l'attributo sslFlags nella sezione Access. Ad esempio, è possibile configurare questa impostazione per il "Sito Web predefinito" nel file ApplicationHost.config (ad esempio commitPath:APPHOST) usando il comando seguente:
%windir%\system32\inetsrv>AppCmd set config "Default Web Site" -commitPath:APPHOST -section:access -sslFlags:Ssl
Se ha esito positivo, viene visualizzato il messaggio seguente:
Applied configuration changes to section "system.webServer/security/access" for "MACHINE/WEBROOT/APPHOST/Default Web Site" at configuration commit path "MACHINE/WEBROOT/APPHOST"
Nota
Per richiedere SSL a 128 bit, modificare il valore sslFlags in Ssl128.
Nell'esempio seguente viene illustrato come visualizzare le impostazioni di accesso/>sezione per il <sito Web predefinito. L'attributo sslFlags è stato impostato correttamente.
%windir%\system32\inetsrv>AppCmd list config "Default Web Site" -section:access
L'esecuzione del comando genera la voce seguente nel file di ApplicationHost.config:
<system.webServer>
<security>
<access flags="Script, Read" sslFlags="Ssl" />
</security>
</system.webServer>
Uso di WMI
Non è possibile richiedere o creare un certificato usando lo spazio dei nomi WMI WebAdministration.
Creare un'associazione SSL
Lo script seguente illustra come creare una nuova associazione SSL e come aggiungere la configurazione appropriata per HTTP.sys e IIS:
Set oIIS = GetObject("winmgmts:root\WebAdministration")
'''''''''''''''''''''''''''''''''''''''''''''
' CREATE SSL BINDING
'''''''''''''''''''''''''''''''''''''''''''''
oIIS.Get("SSLBinding").Create _
"*", 443, "4dc67e0ca1d9ac7dd4efb3daaeb15d708c9184f8", "MY"
'''''''''''''''''''''''''''''''''''''''''''''
' ADD SSL BINDING TO SITE
'''''''''''''''''''''''''''''''''''''''''''''
Set oBinding = oIIS.Get("BindingElement").SpawnInstance_
oBinding.BindingInformation = "*:443:"
oBinding.Protocol = "https"
Set oSite = oIIS.Get("Site.Name='Default Web Site'")
arrBindings = oSite.Bindings
ReDim Preserve arrBindings(UBound(arrBindings) + 1)
Set arrBindings(UBound(arrBindings)) = oBinding
oSite.Bindings = arrBindings
Set oPath = oSite.Put_
Nota
L'hash del certificato e l'archivio devono fare riferimento a un certificato reale e funzionale nel server. Se l'hash del certificato e/o il nome dell'archivio sono fittizi, viene restituito un errore.
Configurare le impostazioni SSL
Lo script seguente illustra come impostare le impostazioni SSL usando il provider WMI IIS. È possibile trovare questo valore nel file IIS_Schema.xml.
CONST SSL = 8
Set oIIS = GetObject("winmgmts:root\WebAdministration")
Set oSection = oIIS.Get(\_
"AccessSection.Path='MACHINE/WEBROOT/APPHOST',Location='Default Web Site'")
oSection.SslFlags = oSection.SslFlags OR SSL
oSection.Put\_ <a id="IISManager"></a>
Gestione IIS
Acquisire un certificato
Selezionare il nodo server nella visualizzazione albero e fare doppio clic sulla funzionalità Certificati server nella visualizzazione elenco:
Fare clic su Crea Self-Signed Certificato... nel riquadro Azioni .
Immettere un nome descrittivo per il nuovo certificato e fare clic su OK.
A questo punto è disponibile un certificato autofirmato. Il certificato è contrassegnato per l'uso di "Autenticazione server". vale a dire, usa come certificato lato server per la crittografia SSL HTTP e per autenticare l'identità del server.
Creare un'associazione SSL
Selezionare un sito nella visualizzazione albero e fare clic su Associazioni nel riquadro Azioni . In questo modo viene visualizzato l'editor di associazioni che consente di creare, modificare ed eliminare associazioni per il sito Web. Fare clic su Aggiungi per aggiungere il nuovo binding SSL al sito.
Le impostazioni predefinite per una nuova associazione sono impostate su HTTP sulla porta 80. Selezionare https nell'elenco a discesa Tipo . Selezionare il certificato autofirmato creato nella sezione precedente dall'elenco a discesa Certificato SSL e quindi fare clic su OK.
A questo punto è disponibile un nuovo binding SSL nel sito e tutto ciò che rimane consiste nel verificare che funzioni.
Verificare l'associazione SSL
Nel riquadro Azioni, in Sfoglia sito Web fare clic sul collegamento associato all'associazione appena creata.
Internet Explorer (Internet Explorer) 7 e versioni successive visualizzeranno una pagina di errore perché il certificato autofirmato è stato rilasciato dal computer, non da un'autorità di certificazione attendibile (CA). IE 7 e versioni successive considerano attendibile il certificato se lo si aggiunge all'elenco di Autorità di certificazione radice attendibili nei certificati archiviarlo nel computer locale o in Criteri di gruppo per il dominio.
Fare clic su Continuare con il sito Web (scelta non consigliata).
Configurare le impostazioni SSL
Configurare le impostazioni SSL se si vuole che il sito richieda SSL o interagire in modo specifico con i certificati client. Fare clic sul nodo del sito nella visualizzazione albero per tornare alla home page del sito. Fare doppio clic sulla funzionalità Impostazioni SSL nel riquadro centrale.
Riepilogo
In questa procedura dettagliata è stato usato correttamente lo strumento da riga di comando AppCmd.exe, il provider di scripting WMI e Gestione IIS per configurare SSL in IIS.