Windows Server 2003 & 2008 - Configurare il servizio “SMTP exit module” per una Certification Authority

Ciao a tutti.
In questo post mostrerò come configurare le opzioni di posta elettronica per una Certification Authority in modo che possa inviare dei messaggi di posta per le operazioni di richiesta od emissione dei certificati.

Le informazioni contenute non sono valide per la versione standard di Windows server 2003, come indicato su:

KB 895106
E-mail notifications are not sent after you configure the SMTP exit module to send e-mail notifications on a certification authority server that is running Windows Server 2003, Standard Edition
http://support.microsoft.com/default.aspx?scid=kb;EN-US;895106

Dove viene indicato:

Windows Server 2003, Standard Edition does not support sending e-mail notifications on the certification authority.
To work around this problem, use the script on the following Microsoft Web site: http://www.microsoft.com/technet/scriptcenter/solutions/camon.mspx

Torniamo alle versioni che supportano questa caratteristica...

I valori per le impostazioni della posta elettronica sono definiti solo nel registry di windows dato che non c'è una interfaccia per poterli impostare e ciò può rendere scomodo o di difficile implementazione per questa utile caratteristica.

Come sempre per gestire i parametri della Certification Authority ci viene in aiuto il tool certutil.exe

Semplicemente per iniziare è necessario impostare i parametri SMTP del server di posta e per quali eventi inviare la mail.

La configurazione del server di posta può avvenire tramite queste impostazioni:

  • Il server di posta:
        certutil -setreg exit\smtp\<smtpserverServerName>
  • Il tipo di autenticazione se necessaria
        certutil -setreg exit\smtp\SMTPAuthenticate 1
  • Se impostata l'autenticazione indichiamo l'utente (username) per autenticarci sul server smtp
        certutil -setsmtpinfo <username>
    dopo l'invio verrà richiesto di inserire la password altrimenti possiamo anche eseguire direttamente
       certutil -p password -setsmtpinfo username

Successivamente dovremo istruire la CA per quali eventi (event) è necessario inviare un messaggio di posta:

certutil -setreg exit\smtp\eventfilter +event

impostando il parametro seguendo questa tabella:

ExitEvent_CertIssued -> Al momento dell'issue di un certificato
ExitEvent_CertPending -> Appena una richiesta di certificato è in pending
ExitEvent_CertDenied -> Alla negazione ad una richiesta di certificato
ExitEvent_CertRevoked -> Alla revoca di un certificato
ExitEvent_CRLIssued -> Quando viene pubblicata una nuova CRL
ExitEvent_Startup -> Quando parte il servizio della CA
ExitEvent_Shutdown -> Al momento dell'arresto del servizio della CA

Es.:

certutil -setreg exit\smtp\eventfilter +exitevent_startup
certutil -setreg exit\smtp\eventfilter +exitevent_shutdown

Per gli eventi ExitEvent_CRLIssued, ExitEvent_Startup e ExitEvent_Shutdown bisogna indicare un destinatario email in quanto non sono eventi generati da chi richiede un certificato e quindi è possibile impostare il campo "To:" della email tramite:

certutil -setreg exit\smtp\CRLIssued\To E-mail
certutil -setreg exit\smtp\Startup\To E-mail
certutil -setreg exit\smtp\Shutdown\To E-mail

Es.:

certutil -setreg exit\smtp\startup\to CAAdmin@Dominio.local

Se è necessario impostare più indirizzi di destinazione è possibile separarli tramite punto e virgola.

Successivamente si può impostare il titolo ed il corpo della mail.
Personalmente ritengo che da riga di comando questa è una operazione un po' lunga in quanto il body della mail potrebbe contenere varie informazioni che vanno comunque formattate per rendere leggibile il messaggio, anche se un semplice:

Certutil -setreg exit\smtp\Denied\BodyFormat "La richiesta è stata negata!"

a volte è più che sufficiente per l'utente finale.

Se riuscite a configurare il tutto da linea di comando, consiglio di impacchettare uno script, in modo da aver la vostra configurazione in maniera più gestibile altrimenti, fatto da parte il CertUtil, rimane il caro registry di windows.

Un esempio di script pronto ed utile è disponibile su:
http://technet.microsoft.com/en-us/library/cc773129(WS.10).aspx

Vediamolo assieme in modo da potervi fornire qualche suggerimento in più.

Lo script si occupa nella prima parte di impostare il server SMTP e l'utenza con cui potervi accedere, indicando anche i vari metodi di autenticazione supportati..
Prosegue poi con le impostazioni di quali eventi scaturiscono l'invio delle email e procede poi con la semplice impostazione del corpo della mail vera e propria.

La cosa che salta subito all'occhio è che questa parte è completamente personalizzabile ed a corredo è possibile utilizzare variabili recuperabili dalla richiesta stessa e costanti relativi alla CA.
Queste definizioni sono riscontrabili nel registro di windows proprio nel percorso relativo alla configurazione del servizio:
HKLM\System\CurrentControlSet\Services\CertSVC\Configuration\NOME CA\ExitModules\CertificationAuthority_MicrosoftDefault.Exit\SMTP

I parametri BodyArg sono quelli utilizzabili in BodyFormat, così come quelli definiti in TitleArg lo sono per TitleFormat.
Sia BodyArg che TitleArg fanno riferimento ai nomi delle colonne del database della CA.

Lo script definisce successivamente una mail per ogni evento e queste impostazioni sono riscontrabili sempre nel registry, suddivise nei vari modelli.

Per Windows Server 2008 la chiave di registry è valida per CRLIssued, Startup e ShutDown.
Tutti gli altri modelli di evento possono essere trovati nella sottochiave Templates\Default.

Al termine per rendere effettivo il servizio è sufficiente riavviare il servizio della CA, lo script ne tiene conto e lo fa alla fine.

Alla prossima!

Domenico Costa
Senior Support Engineer
Microsoft Enterprise Platform Support