Configurazione di un bastione SSH con mTLS su HAProxy integrato con Windows Enterprise CA – Parte 2

da | Mar 25, 2026

 

Nell’articolo precedente di questa serie è stato descritto come installare e configurare un cluster HAProxy in alta affidabilità che possa essere utilizzato come bastione SSH.

L’autenticazione avviene mediante mutual TLS (mTLS) e perciò è richiesto distribuire i certificati agli utenti, a questo scopo è possibile utilizzare la Enterprise CA di Microsoft e l’autenticazione integrata con Active Directory.

Spesso gli utenti hanno già a disposizione sui loro computer dei certificati adatti allo scopo Client Authentication, che vengono utilizzati per altri servizi ed opzionalmente sarebbe possibile utilizzare quest’ultimi anche per il bastione SSH.

In questo articolo verrà mostrata la configurazione di due templates dedicati allo scopo Client Authentication e come’è possibile utilizzarli per richiedere i certificati dai clients.

 

REQUISITI

Cluster HAProxy come descritto nell’articolo precedente.
Windows Enterprise CA appartenente ad un dominio Active Directory.

 

LIMITAZIONI CA

Nel caso in cui i certificati vengano rilasciati da una CA con delle limitazioni (costraints) sui domini per i quali può rilasciarli, bisogna fare attenzione agli attributi inclusi nella SAN.
In particolare, Windows fa utilizzo di alcuni attributi non standard che non possono essere validati da OpenSSL, perciò questi possono causare il fallimento della validazione della connessione.

Per spiegare meglio la problematica, supponiamo di avere una CA che può rilasciare i certificati per il dominio “pizza.com”, in questo caso un utente potrebbe essere in possesso di un certificato simile al seguente:

Nonostante il certificato risulti valido per Windows, esso fallirebbe la validazione con OpenSSL, poichè Principal Name contiene un dominio che non saprebbe come validare, essendo questo attributo specifico di Microsoft.

Per verificare il comportamento di OpenSSL è possibile eseguire il seguente comando (sostituire i nomi/percorsi dei files):

Se non si utilizza una CA intermedia eseguire invece:

 

CONFIGURAZIONI TEMPLATES ENTERPRISE CA

È possibile creare dei templates dedicati al mTLS sulla Enterprise CA di Microsoft, in modo che gli utenti possano richiedere i certificati direttamente dallo snap-in certmgr.msc.

In questo paragrafo verrà mostrato come creare due templates: il primo utilizza le informazioni di Active Directory per compilare il subject e la SAN del certificato, il secondo richiede le informazioni necessarie all’utente ed in seguito l’approvazione da un CA manager.

I primi passaggi di configurazione sono identici per entrambi i templates e bisogna effettuarli due volte (escluso il primo passaggio effettuato per connettersi).

Collegarsi mediante lo snap-in certsrv.msc alla Enterprise CA, navigare su Certificate Templates, effettuare click destro e selezionare Manage:

Selezionare il template User, effettuare click destro e selezionare Duplicate Templates:

Nel tab Compatibility modificare le opzioni di compatibilità in base ai propri requisiti:

Ne tab Cryptography selezionare la Provider Category chiamata Key Storage Provider e SHA256 come algoritmo di hashing (Request hash):

Nel tab Extensions selezionare Application Policies e cliccare su Edit:

Rimuovere Encrypting File System e “Secure Email selezionandoli e cliccando su Remove:

Confermare cliccando su Ok e verificare che Client Authentication sia l’unica Application Policies abilitata:

Nel tab Security assegnare il permesso di Enroll, ed opzionalmente quello di Autoenroll, al gruppo di utenti che si vuole autorizzare a poter richiedere un certificato con il template che si sta creando:

Nello screenshot sono stati abilitati tutti gli Authenticated Users, ma opzionalmente sarebbe possibile assegnare il permesso ad un gruppo di Active Directory creato appositamente.

I seguenti passaggi differiscono per i due templates, verrà prima mostrata la configurazione del template automatico.

Nel tab General assegnare un nome significativo al template ed opzionalmente ridurre la durata del certificato:

Nel tab Subject Name assicurarsi che sia abilitato Build from this Active Directory information e che sia disabilitato l’UPN nella SAN:

È possibile salvare il primo template cliccando su OK e procedere alla configurazione del template che richiede delle informazioni all’utente.

Nel tab General assegnare un nome significativo al template ed opzionalmente ridurre la durata del certificato:

Nel tab Subject Name selezionare Supply in the request e Use subject information from existing certificate for autoenrollment renewal requests:

Potrebbe venir mostrato un warning in merito alla sicurezza, poichè senza il prossimo step di configurazione chiunque potrebbe richiedere dei certificati con qualsiasi subject e SAN.

Per ovviare a questo, nel tab Issurance Requirements abilitare CA certificate manager approval e Valid existing certificate:

È possibile salvare il secondo template cliccando su OK e procedere alla pubblicazione dei templates.

Per pubblicare i due templates appena creati, effettuare click destro, selezionare New e poi Certificate Template to Issue:

Selezionare i templates da publicare e confermare cliccando su OK:

 

RICHIEDERE I CERTIFICATI DA UN WINDOWS

Aprire lo snap-in certmgr con l’utente che deve utilizzare i certificati (non da amministratore), navigare su Personal e poi su Certificates:

Effettuare click destro in un’area vuota, passare con il cursore su All Tasks e selezionare Request New Certificate…:

Proseguire cliccando su Next:

Proseguire cliccando nuovamente su Next:

Per richiedere un certificato con il template Client Authentication (AD Sub) selezionarlo e cliccare su Enroll:

Attendere il caricamento e concludere l’enrollment cliccando su Finish:

Il certificato sarà mostrato nel trust store Personal:

Per richiedere un certificato con il template Client Authentication (Supplied Sub) selezionarlo e cliccare su More information is required to enroll for this certificate. Click here to configure settings.:

Compilare il DN ed eventualmente l’email, per aggiungerli nelle informazioni richieste cliccare su Add:

Confermare cliccando su OK:

Proseguire cliccando su Enroll:

Attendere il caricamento e concludere l’enrollment cliccando su Finish:

Per approvare il certificato aprire lo snap-in certsrv sulla Enterprise CA, navigare su Pending Requests, selezionare la richiesta, effettuare click destro, muovere il cursore su All Tasks e cliccare su Issue:

Annotarsi il Request ID della richiesta mostrato nella prima colonna, nello screenshot è 760.

Sul client da cui si ha richiesto il certificato aprire una PowerShell o un CMD ed eseguire il seguente comando (sostituire 760 con il Request ID della propria richiesta):

Selezionare la CA corretta e cliccare su OK:

Dopo aver confermato, l’output mostrato dovrebbe essere simile al seguente:

Nello stesso terminale eseguire anche seguente comando:

L’output mostrato dovrebbe essere simile al seguente:

Il certificato sarà mostrato nel trust store Personal:

Articoli Recenti

Veeam Backup

Monitoring

Friends

  • My English Lab  English School
  • ChrSystem   Servizi ICT
  • Since 01  Kreative Graphics

Database

Networking

Autori

  • Raffaele Chiatto  Amministratore
  • Marco Valle  Autore
  • Angelo Lauria  Autore
  • Edoardo Prot  Autore
  • Davide D’Urso  Autore
Marco Valle

Marco Valle

Mi chiamo Marco Valle e da sempre sono appassionato di Cybersicurezza e Linux. Per lavoro implemento soluzioni open source.

Related Post

0 commenti

Invia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Virtualizzazione

Linux

Microsoft

Apple

Backup

Database

Security

Automazione