Stefano Corallo bio photo

Stefano Corallo

Semplicemente un altro blog su zendframework2 php jquery e tutto quello che mi viene in mente

Twitter Google+ Instagram Github

Macports Abilitare Apache SSL su Mac OSX Lion

Dopo aver installato il server web apache, php54, mysql tramite macport (si trovano parecchie guide online basta googlare un pochino).

Spostiamoci nella directory di installazione di apache

(n4z4@n4z4-mb) - (16:54) - (~)
-=>>cd /opt/local/apache2

Generiamo le chiavi rsa per creare i certificati da utilizzare con apache

Per prima cosa creiamo la directory dove genere le chiavi

(n4z4@n4z4-mb) - (16:54) - (/opt/local/apache2)
-=>>sudo mkdir ssl
Password:

Per generare le chiavi usiamo il seguente comando, senza inserire nessuna passphrase in modo tale che all’avvio di apache il servizio non si blocchi.

sudo ssh-keygen -f ssl.key
Password:
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in ssl.key.
Your public key has been saved in ssl.key.pub.
The key fingerprint is:
19:c2:5b:ff:80:4b:30:77:96:72:c0:4c:39:ce:0c:f6 root@n4z4-mb.local
The key's randomart image is:
+--[ RSA 2048]----+
|       +o.       |
|     .o =. .     |
|     .=*=.=      |
|       BEX       |
|      . S o      |
|       . . o     |
|        .   .    |
|                 |
|                 |
+-----------------+

Sono state genere 2 chiavi, chiave pubblica ssl.key.pub e chiave privata ssl.key :

(n4z4@n4z4-mb) - (17:04) - (/opt/local/apache2/ssl)
-=>>ls
ssl.key     ssl.key.pub

Generiamo il file per il certificato di richiesta request.csr

Dobbiamo generare il certificato di richiesta request.csr che ci servirà per creare il certificato SSL. Per generare il certificato utilizziamo la chiave privata creata precedentemente. Dopo aver lanciato il comando ci verranno chieste alcune informazioni per la creazione del certificato di richiesta, ad esempio come CN mettete il vostro ServerName nel mio caso localhost

(n4z4@n4z4-mb) - (17:16) - (/opt/local/apache2/ssl)
-=>>sudo openssl req -new -key ssl.key -out request.csr

Dopo aver creato il certificato di richiesta possiamo generare il nostro certificato SSL

(n4z4@n4z4-mb) - (17:28) - (/opt/local/apache2/ssl)
-=>>sudo openssl x509 -req -days 365 -in request.csr -signkey ssl.key -out server.crt
Signature ok
subject=........
Getting Private key

Adesso che abbiamo generato il nostro certificato Self Signed server.crt, non ci resta che configurare apache per servire le richieste https.

Configuriamo Apache

Spostiamoci nella directory /opt/local/apache2/conf/extra modifichiamo il file di configurazione del modulo ssl di apache httpd-ssl.conf cerchiamo le linee che iniziano con SSLCertificateFile, SSLCertificateKeyFile e modifichiamole come segue:

SSLCertificateFile "/opt/local/apache2/ssl/server.crt" #il nostro certificato ssl
SSLCertificateKeyFile "/opt/local/apache2/ssl/ssl.key" #la nostra chiave privata

Controllate che nello stesso file siano commentate (inizino con #) le linee che iniziano con SSLCACertificatePath, SSLCARevocationPath

Verifichiamo che nel file di configurazione di apache /opt/local/apache2/httpd.conf sia abilitata la sezione ssl e in caso abilitiamola rimuovendo il commento # come segue:

# Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.conf

Configuriamo il vhost

Verifichiamo che nel file di configurazione di apache /opt/local/apache2/httpd.conf sia abilitata la sezione Virtual Host e in caso abilitiamola rimuovendo il commento # come segue:

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

Adesso modifichiamo il virtual host ‘/opt/local/apache2/extra/httpd-vhosts.conf’ aggiungiamo sotto NameVirtualHost *:80 la riga NameVirtualHost *:443 in questo modo

NameVirtualHost *:80
NameVirtualHost *:443

Ora possiamo configurare un virtual host ssl come segue:

<VirtualHost *:443>
    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile /private/etc/apache2/ssl/server.crt
    SSLCertificateKeyFile /private/etc/apache2/ssl/ssl.key
    ServerName localhost #Questo e' lo stesso del CN utilizzato durante la generazione del certificato di richiesta request.csr
    DocumentRoot "/path/al/mio/sito/web"
</VirtualHost>

Adesso possiamo riavviare apache e collegarci al nostro nuovo sito in HTTPS.

(n4z4@n4z4-mb) - (17:32) - (~/apache2-server/conf)
-=>>sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper restart
Password: