L’applicazione XAMPP per Ubuntu prevede in modo nativo l’attivazione del protocollo SSL. Per utilizzare il protocollo è necessario attuare alcuni accorgimenti, come di seguito descritto.
Indice dei contenuti
Creazione di un certificato autofirmato (self signed)
Il certificato SSL di un’organizzazione (“subject”) dev’essere generato da un “issuer” (Certification Authority o CA), con il seguente procedimento:
- l’organizzazione che necessita del certificato genera un propria chiave privata (file .key) con la quale cripta una richiesta di certificato (certificate signing request, file .csr), che invia all’Authority;
- l’Authority attesta la veridicità del certificato dell’organizzazione richiedente cifrando il file .csr con la propria chiave privata e generando così un file .crt.
Ai soli fini di test locale del protocollo SSL, può essere utile creare un certificato autofirmato, ad esempio se quello originariamente fornito da XAMPP è scaduto. In questo caso, l’Authority e l’Organizzazione coincidono e la chiave privata con cui è stato generato il file .csr è anche la stessa con cui viene generato il file .crt. Un certificato così ottenuto genera comunque una segnalazione di errore (“self signed certificate”), ma permette di utilizzare il protocollo per i propri test.
Il procedimento è il seguente:
- Aprire un terminale; posizionarsi in una cartella a piacere, ad esempio la propria Scrivania e creare una chiave privata RSA con il comando :
openssl genrsa -des3 -out server.key 1024
fornire e confermare una pass phrase quando richiesto. Il comando genera il file server.key nella cartella dove si è posizionati, utilizzando l’algoritmo Triple DES e lunghezza pari a 1024 bit. Questo è un esempio del contenuto del file server.key:
-----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,70C63216D40D28CF Cqpm7K0Bv4wNSJxDyc7mPRqcU5urfuA6JF8jVI8FBNfwpdxBDoBVPpeK/QU1VIlN 8PVpbZcmiNJP1KD6PWA4j/nude+kmAF9yCWuVoxIvravVJ9bl2QBCyzt4JPgb5DQ TqxqeVJKc5lfPBwPkjt99ZsLKOMWDM4AdpSygpYQ8/u8l+Pl7Noqy+3yZmqUyAQ/ FFAeIzlcnHcW2KqnZh7ebZLERKqYhuNmtvFYJCt3h4sz16Mege8ay8zv9bq/FSNl Ss/cL9ACVQBczW17XXhj7tzCHccenMTKy2qiHwzxti+hh1UVw7LyVGiuk5sK2SKt o9TYCnRI5JZcPKs6Ft7xHX6HiooxeUvO8gdxhH6dBd7lVoWP/S4Pucy2QVRSBvWw q/j2xtPR+3C4laQ6b4neWeLzIkI92Fognb9IapRYt4+Yqbrd+LjnGfe930p51v1w LqR97IoyLU4nHm5VAz9LWNtimXTtTojXgN0I1zZShyMeWCLseG+lYA3k2ttG5N/W c4PPd7QUs/R8XSogZcQwileGQFwbi6243t4xyWYmeTBnPUVntX03q7tlr72OHXbh dQSSaHMwXoHGltSqWtc2drQ1XtL2fekH8Obo41PphuqejDFN2emv+4gcnLNAdRl9 D7Cbh+BGU13/tbj5DZqai0tJipuAHjVx/uPNo1Vd9bCXQcBodb8xnJPVEUkb1KiY eSZ9mQal20fgnGO/nehuvLfqWpU4YDOddMjSDFs8Y+ZclOUutK8bLKD89Ap4zLVr dYyvUZcjpTWPQ94RT0Ql2B0HKTiW5RfhQym/UgrwTgs= -----END RSA PRIVATE KEY-----
- creare un file csr con il comando:
openssl req -new -key server.key -out server.csr
fornire la pass phrase quando richiesto; fornire inoltre i dati richiesti per la creazione del Distinguished Name (DN). Il comando genera il file server.csr nella cartella dove si è posizionati. Questo è un esempio del contenuto:
-----BEGIN CERTIFICATE REQUEST----- MIIB5TCCAU4CAQAwgaQxCzAJBgNVBAYTAklUMQ4wDAYDVQQIDAVJdGFseTEPMA0G A1UEBwwGUGFkb3ZhMRIwEAYDVQQKDAlteUNvbXBhbnkxEzARBgNVBAsMCm15VW5p dE5hbWUxKTAnBgNVBAMMIGxhbXAucGFzc2lvbmVkaWNyaXN0b25lbGxhcnRlLml0 MSAwHgYJKoZIhvcNAQkBFhFpbmZvQG15Q29tcGFueS5pdDCBnzANBgkqhkiG9w0B AQEFAAOBjQAwgYkCgYEAuD8wG2DYdJ2okjaz3xys/2n0BQdjhsDz2DCcRoZgEmAX Ykzlmb9nXWRYVQWV5vrK06pJz21OgzzCh/uC5xdWYuo2Y5p9TcffEmtRta67iWwU URwz1/rE4Py1BfOAiTYzEKYTrpygnM6pHlHeQfEoblg93B9c2W1frXu9r99bES0C AwEAAaAAMA0GCSqGSIb3DQEBCwUAA4GBAALD58BpFWdbNX6UfY1wCLdPW1fcIXO5 6fwtsSbPCf3kcLCNBNh8tJvBHsriRNWeG2db+cXAb/eZaewMq8oW5m2/S2rjeTEh Lac1+MMwCFi02o7fyDYqjpLFgBSJKRMBhoPacO1fb1Hh0utlp6E6Xz79usNt7sEF gFtEZMN9jmua -----END CERTIFICATE REQUEST-----
- Rimuovere la pass phrase dalla chiave privata (se non viene rimossa, il server Apache la richiederà ad ogni avvio). Creare innanzitutto una copia della chiave RSA con il comando:
cp server.key server.key.temp
Il comando genera il file server.key.temp nella cartella dove si è posizionati.
Riscrivere quindi la chiave RSA originale con il comando:openssl rsa -in server.key.temp -out server.key
fornire la pass phrase quando richiesto.
Il comando riscrive il file server.key nella cartella dove si è posizionati. Questo è un esempio del nuovo contenuto:-----BEGIN RSA PRIVATE KEY----- MIICWwIBAAKBgQC4PzAbYNh0naiSNrPfHKz/afQFB2OGwPPYMJxGhmASYBdiTOWZ v2ddZFhVBZXm+srTqknPbU6DPMKH+4LnF1Zi6jY3mn1Nx98Sa1G1rruJbBRRHDPX +sTg/LUF84CJNjMQphOunKCczqkeUd5B8ShuWD3cH1zZbV+te72v31sRLQIDAQAB AoGAT1D8b7zYUhOQ/yjHdFQO8YF2SDfvE5K7JqV+kSnF8AMn7ex2pyJr6BuLn0Zh SudKK6bSUZaXxw2AHTQcHUnBqOVb2/O5u8eiQAo1sawwg/GMN73++LGOPUOX91NK sYhLLIu/kkeJDSW9T+1c0zl7Zp7ASLVOmwjqt/hZ9w3xpOECQQDyIxaqCwx94o2F dlCPoXlNJ/Kx4LIzSHsn8L7pADJWoWToIkfYs11P8VLYkdabLi+ahkKV6QMiVHha DLYsGkT5AkEAwsufwkW+SWobVCkx8jY8ay2nA1uI3FaUZkgaVPhXpQukjBAksFCw 5tFeP7bAC92pXcV4L2tJU5D766ObH96e1QJAMEc0vqTDUdo5E3I6r9inQe4EItlF TppWC+mhdv2WC9XUM8CaCKgCo+ze73Gxk3FLBolcf11dRZwH/xRnwjVeqQJAH/hT bAsOQ/ZKLfHk5J/KIr0HYCGxwJflGzRSPgfUOp5Cj0pG+zkDD57lHQfdVRU4Ks+x /fZZvoFZFz9uwjhDUQJABf0Nt65SJ9OWtfjY+LT69SEIKhDDXBiSlHiFgT9q7UdT VM3PSO4MUtf3ckZjTu0sfyJJ4ku9oghwI7eJr6IFsA== -----END RSA PRIVATE KEY-----
- Creare il certificato con il comando
openssl x509 -req -days 1825 -in server.csr -signkey server.key -out server.crt
il valore 1825 corrisponde a 5 anni di validità (365 giorni * 5). Il comando genera il file server.crt nella cartella dove si è posizionati. Questo è un esempio del contenuto:
-----BEGIN CERTIFICATE----- MIICwTCCAioCCQDkqT+TXPV2yzANBgkqhkiG9w0BAQsFADCBpDELMAkGA1UEBhMC SVQxDjAMBgNVBAgMBUl0YWx5MQ8wDQYDVQQHDAZQYWRvdmExEjAQBgNVBAoMCW15 Q29tcGFueTETMBEGA1UECwwKbXlVbml0TmFtZTEpMCcGA1UEAwwgbGFtcC5wYXNz aW9uZWRpY3Jpc3RvbmVsbGFydGUuaXQxIDAeBgkqhkiG9w0BCQEWEWluZm9AbXlD b21wYW55Lml0MB4XDTE3MTIyODA1NTYwNVoXDTIyMTIyNzA1NTYwNVowgaQxCzAJ BgNVBAYTAklUMQ4wDAYDVQQIDAVJdGFseTEPMA0GA1UEBwwGUGFkb3ZhMRIwEAYD VQQKDAlteUNvbXBhbnkxEzARBgNVBAsMCm15VW5pdE5hbWUxKTAnBgNVBAMMIGxh bXAucGFzc2lvbmVkaWNyaXN0b25lbGxhcnRlLml0MSAwHgYJKoZIhvcNAQkBFhFp bmZvQG15Q29tcGFueS5pdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuD8w G2DYdJ2okjaz3xys/2n0BQdjhsDz2DCcRoZgEmAXYkzlmb9nXWRYVQWV5vrK06pJ z21OgzzCh/uC5xdWYuo2N5p9TcffEmtRta67iWwUURwz1/rE4Py1BfOAiTYzEKYT rpygnM6pHlHeQfEoblg93B9c2W1frXu9r99bES0CAwEAATANBgkqhkiG9w0BAQsF AAOBgQCld7IUwCPqd9wH5zmawjPiSZbVjATWmkYjhdpPu/ooIg63jZPm7MX6QP7r ujJX6rdVDD08HbgAndym6H8Dr55kBk+n0U9s+gsY1qom3uVpDGfrF6Li+kQEJaNu c+4fZiGIQVBB5H9l+SpXp2LbdWrPAo8zR7dukIAQRQ20Xr++Jg== -----END CERTIFICATE-----
- copiare i file nelle cartelle di configurazione di XAMPP con i comandi:
sudo cp server.crt /opt/lampp/etc/ssl.crt/server.crt sudo cp server.key /opt/lampp/etc/ssl.key/server.key
fornire la password di amministratore quando richiesto.
- Al termine rimuovere i file di lavoro dalla cartella dove si è posizionati.
Configurazione del file vhost
Per utilizzare il protocollo SSL è necessario modificare il file /opt/lampp/etc/extra/httpd-vhosts.conf inserendo le seguenti istruzioni:
<VirtualHost *:443> ServerName localhost DocumentRoot "/opt/lampp/htdocs" SSLEngine on SSLCertificateFile "/opt/lampp/etc/ssl.crt/server.crt" SSLCertificateKeyFile "/opt/lampp/etc/ssl.key/server.key" </VirtualHost>
Dopo aver salvato le modifiche, riavviare il server Apache.
Una risposta a “Come configurare il protocollo SSL su server Ubuntu con XAMPP”