Ya hemos visto como instalar ownCloud en nuestro servidor Debian, ahora veremos como generar los certificados SSL para disfrutar de una navegación cifrada y segura con HTTPS.
Primero activamos el módulo SSL de Apache y reiniciamos Apache.
a2enmod ssl service apache2 restart
Editamos el archivo de configuración openssl.conf:
nano /etc/ssl/openssl.cnf
Dentro de él, tenemos que encontrar y cambiar las siguientes líneas:
dir = /root/SSLCertAuth default_days = 3650 # 10 years default_bits = 2048 # recommended by NSA until 2030 countryName_default = ES 0.organizationName_default = Debian
Hacemos Ctrl+o para guardar y Ctrl+x para cerrar nano.
Creamos el directorio para guardar todos los archivos de la autoridad certificadora SSL, en nuestro caso lo llamaremos “SSLCertAuth”.
Ejecutamos los siguientes comandos:
mkdir /root/SSLCertAuth chmod 700 /root/SSLCertAuth cd /root/SSLCertAuth mkdir certs private newcerts echo 1000 > serial touch index.txt
Creamos la Autoridad Certificadora (CA). Escribimos una orden (o linea) tras otra:
openssl req -new -x509 -days 3650 -extensions v3_ca \ -keyout private/cakey.pem -out cacert.pem \ -config /etc/ssl/openssl.cnf
Nos dice: Enter PEM passphrase:
Introducimos una contraseña que usaremos después para firmar cualquier certificado, así que que no la olvides. Vamos introduciendo todos los datos, y con especial cuidado cuando nos pida el Common Name, que debe ser nuestro dominio de internet (fqdn: fully qualified domain name).
Ahora creamos la solicitud de firma del certificado del sitio.
openssl req -new -nodes \ -out apache-req.pem \ -keyout private/apache-key.pem \ -config /etc/ssl/openssl.cnf
De nuevo introducimos todos los datos que nos pide, y en Common Name de nuevo metemos el fqdn. Los «extra atributes»… podemos dejarlos en blanco.
Y finalmente generamos el certificado para copiarlo después en el directorio /etc/ssl
openssl ca \ -config /etc/ssl/openssl.cnf \ -out apache-cert.pem \ -infiles apache-req.pem
Introducimos la contraseña del CA que creamos antes y después le decimos a todo que sí.
Ejecutamos:
mkdir /etc/ssl/crt mkdir /etc/ssl/key cp /root/SSLCertAuth/apache-cert.pem /etc/ssl/crt cp /root/SSLCertAuth/private/apache-key.pem /etc/ssl/key
El paso final consiste en configurar apache para que el servicio por omisión HTTPS, sea ownCloud.
-Primero creamos un directorio donde irán los logs.
mkdir /var/www/logs nano /etc/apache2/conf.d/owncloud5-ssl.conf
-Con la segunda orden crearemos un fichero para la configuración SSL de owncloud.
Escribe en él fichero la siguiente configuración:
<VirtualHost *:443> ServerName fqdn SSLEngine on SSLCertificateFile /etc/ssl/crt/apache-cert.pem SSLCertificateKeyFile /etc/ssl/key/apache-key.pem DocumentRoot /var/www/owncloud CustomLog /var/www/logs/ssl-access_log combined ErrorLog /var/www/logs/ssl-error_log </VirtualHost>
Donde pone fqdn, ponemos nuestro dominio de internet o la IP de nuestro servidor.
El último paso, es, desde dentro, en la Administración de ownCloud. Podemos forzar el uso de HTTPS, lo que es muy recomendable a efectos de seguridad. Lo activamos.