Dopo aver installato ownCloud sul nostro Raspberry Pi, e magari aver configurato un servizio di DNS dinamico come No-IP per potervi accedere dall'esterno della nostra rete locale, potremmo voler rendere più sicuro il collegamento, e qui entra in gioco il protocollo SSL.
Per prima cosa installiamolo (anche se probabilmente su Raspbian è già tutto pronto):
sudo apt-get install openssl
Poi, va abilitato nella nostra installazione di Apache:
sudo a2enmod ssl
Poi, per comodità, creiamo una directory dove andremo ad inserire i certificati una volta ottenuti:
sudo mkdir /etc/apache2/ssl
Benissimo, a questo punto basta creare il nostro certificato col seguente comando:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/sslkey.key -out /etc/apache2/ssl/sslcert.crt
Vi verranno poste alcune domande, la più importante delle quali è senza dubbio il Common Name, alla quale dovrete rispondere con la URL del vostro servizio (ovviamente, parliamo della URL "esterna"). Dopo aver risposto all'ultima domanda, verranno creati il certificato SSL e la relativa chiave nella directory creata in precedenza.
A questo punto però, ancora non abbiamo terminato, in quanto è necessario configurare Apache affinchè usi SSL. Personalmente, ho scelto di creare un file apposito, ma è possibile anche modificare quelli esistenti:
sudo nano /etc/apache2/sites-available/owncloud-ssl.conf
Con all'interno:
ServerAdmin redblue@red-blue.it ServerName localhost/owncloud ServerAlias owncloud DocumentRoot /var/www/owncloud ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLCertificateFile /etc/apache2/ssl/sslcert.crt SSLCertificateKeyFile /etc/apache2/ssl/sslkey.key SSLOptions +StdEnvVars èèèèèè è SSLOptions +StdEnvVars BrowserMatch "MSIE [2-6]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
Abilitiamo il sito:
sudo a2ensite owncloud-ssl
E riavviamo Apache:
sudo systemctl reload apache2.service
E abbiamo finito. Attenzione però perchè il browser vi dirà comunque che il certificato SSL usato non è attendibile (anche se vi consentirà tranquillamente la connessione, è solo un avviso): questo avviene perchè il certificato che abbiamo creato non è stato rilasciato da un'autorità certificata, ovvero nessuno ha verificato che i dati inseriti siano veritieri.
Normalmente, un certificato SSL attendibile è a pagamento (il costo annuo dipende da vari fattori), ma esistono anche servizi che consentono di ottenerne uno gratuito. Per quanto riguarda il sottoscritto, quello "autoprodotto" va più che bene per lo scopo che mi sono prefisso.
Ovviamente, nel caso decidiate di ottenere un certificato attendibile, la procedura è esattamente la stessa, anzi addirittura la chiave che abbiamo creato potrà essere utilizzata nella procedura di certificazione.
Alla prossima..