Come configurare il protocollo SSL su server Ubuntu con XAMPP

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.

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:

  1. 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-----
  2. 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-----
  3. 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-----
  4. 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-----
  5. 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.

  6. 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.

Risorse ulteriori

Una risposta a “Come configurare il protocollo SSL su server Ubuntu con XAMPP”

Lascia un commento

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

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.