Autenticazione client TLS con Internet Information Services (IIS)

Compatible Nitrokeys

3A/C/Mini

Passkey

HSM 2

Pro 2

FIDO2

Storage 2

Start

U2F

active

inactive

inactive

inactive

inactive

inactive

inactive

inactive

Questa guida descrive la configurazione di Windows Internet Information Services (IIS) per l’autenticazione client TLS che mappa gli utenti agli account utente locali.

Viene mostrata la configurazione come esempio con il sito Web predefinito ** di IIS. La configurazione può essere utilizzata anche per altri siti, incluso o escluso il sito predefinito.

Prerequisits

  • Nitrokey 3 with PIV client authentication certificate.

  • Server Windows (server web)

    • DNS record

    • certificato TLS per il record DNS. I computer client devono fidarsi di questo certificato TLS.

Installazione

  1. Open the Server Manager.

  2. In the menubar on the top click Manage → Add Roles and Features.

  3. Seguire la procedura guidata fino al passo Server Roles.

  4. Selezionare il ruolo Web Server (IIS) dall’elenco dei ruoli disponibili.

  5. Seguire la procedura guidata fino al passaggio Ruoli servizi sotto Ruolo server web (IIS).

  6. Dall’elenco dei servizi di ruolo selezionare Web Server → Sicurezza → IIS Client Certificate Mapping Authentication.

  7. Seguire la procedura guidata per l’installazione. L’installazione deve essere completata prima di poter iniziare la configurazione.

Configurazione

  1. Aprire Internet Information Services (IIS) Manager (InetMgr.exe).

  2. Selezionare ed espandere il server Web che si desidera configurare nella struttura ad albero Connections a sinistra.

  3. Dal pannello centrale aprire Configuration Editor. Aprite la sezione system.webServer/security/authentication/iisClientCertificateMappingAuthentication e sbloccatela facendo clic su Sblocca sezione nel riquadro Azioni a destra.

  4. Espandere il sito Sites sotto il server web e selezionare il sito da configurare.

  5. Nel riquadro Actions a destra fare clic su Bindings….

  6. Fare clic su Add… per visualizzare l’editor dei binding. Impostare il tipo su https e il nome host in base al record DNS e all’attributo Subject Alternative Name (SAN) del certificato TLS. Attivare la casella di controllo Disabilita TLS 1.3 su TCP. Nel campo Certificato SSL selezionare il rispettivo certificato. Confermare la configurazione con un clic su OK.

    Suggerimento

    Per comprendere il requisito di disabilitare TLS 1.3 e per le istruzioni di configurazione su come utilizzarlo con TLS 1.3 abilitato, fate riferimento a questo post del blog del supporto Microsoft ` <https://techcommunity.microsoft.com/blog/iis-support-blog/windows-server-2022-iis-web-site-tls-1-3-does-not-work-with-client-certificate-a/4129738>` __.

  7. Dal pannello centrale aprire Impostazioni SSL. Attivate la casella di controllo Require SSL e il pulsante di opzione sotto Client certificates è impostato su Require. Confermare la configurazione facendo clic su Apply nel riquadro Actions a destra.

  8. Dal riquadro centrale aprire Autenticazione. Assicurarsi che tutti gli altri metodi di autenticazione siano disattivati per il sito. Il IIS Client Certificate Mapping Authentication non sarà mai visibile in questo elenco. Tornare alla radice del sito.

    Importante

    Se è abilitato un altro tipo di autenticazione, la mappatura del certificato client non funzionerà.

  9. Dal pannello centrale aprite Configuration Editor. Aprire la sezione system.webServer/security/authentication/iisClientCertificateMappingAuthentication da ApplicationHost.config <location path='Default web site'/>. Impostare la chiave enabled su True e assicurarsi che una o entrambe le chiavi manyToOneCertificateMappingsEnabled e oneToOneCertificateMappingsEnabled siano abilitate.

  10. Le mappature utente devono essere scritte nelle chiavi manyToOneMappings o oneToOneMappings. La chiave da utilizzare dipende dalla mappatura desiderata. Informazioni sulla mappatura e spiegazioni più dettagliate sulla configurazione sono disponibili su Microsoft Learn.

    Per modificare una chiave, fare clic sul pulsante alla fine del campo di testo del valore. Si aprirà l’editor di raccolte ** . Per creare una nuova mappatura, fare clic su Aggiungi nel riquadro Azioni a destra.

    1. Mappatura da molti a uno

      Compilare i campi come indicato nella tabella seguente.

      Key

      Valore

      enabled

      True

      name

      <name-for-the-collection>

      password

      <user-password>

      permissionMode

      Allow

      userName

      <username>

      Il campo name è usato come identificatore della collezione e i campi userName e password richiedono il nome utente e la password dell’utente locale che si desidera mappare. Il campo rules deve contenere la descrizione dei certificati consentiti o negati. Per modificare la chiave delle regole, fare clic sul pulsante alla fine del campo di testo del valore. Si aprirà una nuova finestra del Collection Editor. Per creare una nuova regola, fare clic su Aggiungi nel riquadro Azioni a destra.

      Compilare i campi come indicato nella tabella seguente.

      Key

      Valore

      certificateField

      Subject

      certificateSubField

      O

      compareCaseSensitive

      True

      matchCriteria

      <criteria-value-of-o-field-in-certificate-subject>

      Chiudere le finestre di Collection Editor.

    2. Mappatura One to One

      Compilare i campi come indicato nella tabella seguente.

      Key

      Valore

      certificate

      <base64-encoded-certificate>

      enabled

      True

      password

      <user-password>

      userName

      <username>

      Il certificato codificato Base64 per il campo certificate può essere ottenuto da Nitrokey con Nitropia e il comando nitropy nk3 piv --experimental read-certificate --format PEM --key 9A. I campi userName e password richiedono il nome utente e la password dell’utente locale che si vuole mappare.

      Chiudere la finestra Collection Editor.

    Confermare la configurazione facendo clic su Apply nel riquadro Actions a destra.

Il sito è ora configurato per l’autenticazione client TLS utilizzando la mappatura dell’account utente locale.