Abilitare un certificato SSL su server web Apache installato su un sistema operativo Windows

postato in: PHP, Tool, Web, Windows | 3

Mi è capitato di dover abilitare un certificato SSL su un server web Apache per abilitare la navigazione https; nulla di più facile ho pensato tra me e me….ho anche la guida…. invece mi sbagliato in quanto Apache era installato su una macchina con sistema operativo Windows Server 2003.

Non mi son perso d’animo e dopo un po’ di tentavivi ho risolto il problema…ecco come…

Ho scaricato il paccheto Apache SSL (http://sourceforge.net/projects/apachessl/files/), io ho usato la versione ApacheSSL_2.2.15-OpenSSL_0.9.8n.zip ma vi consiglio di scaricare sempre l’ultima stambile, non dovrebbero esserci problemi a seguire la guida.

L’ho scompattato in c:\ApacheSSL.

Ho creato nella cartella conf di apache una cartella ssl dove andrò a posizionare i certificati.

Nel file di configurazione httpd.conf sono andato a fare le seguenti modifiche:

  1. cambiato la voce Listen 80 in Listen 443 in modo da abilitare il servizio sulla porta 443 ( https );
  2. decommentato la stringa #LoadModule ssl_module modules/mod_ssl.so in modo da abilitare il modulo ssl;
  3. aggiunta la stringa NameVirtualHost 192.168.1.2:443 impostando il corretto IP in modo da comunicare al server che potrebbero esserci virtualhost in attesa della connessione sulla posta 443.

Una volta fatto questo andando con il promt nella cartella C:\ApacheSSL\bin  installiamo il servizio Apache SSL con il comando

httpd.exe -k install

A questo punto possiamo seguire 2 strade, una andare a creare il certificato autofirmato e una un certificato firmato da un’autorità esterna.

Per creare un certificato autofirmato possiamo utilizzare i seguenti comandi…

openssl req -config consulentiit.cnf -new -out consulentiit.csr
openssl genrsa –des3 –out www.consulentiit.it.key 2048

si potrebbe verificare un errore

Unable to load config info from /usr/local/ssl/openssl.cnf

Questo perchè OpenSSL cerva il file di configurazione in un path linux; nel caso specificare il path del file cnf:

openssl req -new -key www.consulentiit.it.key -out www.consulentiit.it.csr  -config openssl.cnf

Per testarlo potete usare il comando

opensslreq -noout -text -in www.consulentiit.it.csr

Per installare un certificato di un’entità certificatore potete seguire la guida creata in un articolo precedente; dicordatevi però di togliere la presharekey dalla chiave .key con il comando

openssl rsa -in consulentiit.key -out consulentiit.key

altrimenti non riuscirete ad aviare ApacheSSL.

a questo punto potete andare a creare il vostro virtualhost nel file httpd.conf  scrivendo e adattando al proprio caso le seguenti righe.

<VirtualHost 192.168.2.18:443>
ServerName www.consulentiit.it
ServerAlias www.consulentiit.it
DocumentRoot  C:\SpazioWeb\www.consulentiit.it\html
ErrorLog C:\SpazioWeb\www.consulentiit.it\error_log
CustomLog C:\SpazioWeb\www.consulentiit.it\access_log combined
DirectoryIndex index.php index.html index.htm index.shtml
SSLEngine On
SSLCertificateFile conf/ssl/CertifricatoSSLRilasciatoDaCertificatore.crt
SSLCertificateKeyFile conf/ssl/CertifricatoSSLCreato.key
SSLCertificateChainFile conf/ssl/CertifricatoSSLIntermedioRilasciatoDaCertificatore.crt
</VirtualHost >

e avviare ApacheSSL.

 

3 risposte

  1. Ciao,
    per quanto riguarda l’installazione di certificati SSL su server Microsoft di solito procedo trasformando i file PEM (il formato di base con il quale si ottiene il certificato SSL, il certificato SSL Intermedio e la Chiave Privata) in PFX.. mi pare che valga per tutte le versioni di server Microsoft, anche detti IIS..

  2. Grazie per il consiglio!!!

  3. Grazie a te per l’interessante post! un saluto e buon lavoro 🙂

Lascia un commento