Owncloud con soporte SSL Ubuntu 12.04

owncloud-logo1

Para seguir este howto primero debemos completar la instalación de Owncloud básica, que podéis encontrar en el siguiente post.

 

Primero activamos el módulo SSL de Apache

sudo a2enmod ssl
service apache2 restart

Editamos el archivo de configuración /etc/ssl/openssl.conf

nano /etc/ssl/openssl.cnf

Encontramos y cambiamos 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 = Ubuntu Contrib

Creamos el diretorio 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) con el siguiente comando:

openssl req -new -x509 -days 3650 -extensions v3_ca \
-keyout private/cakey.pem -out cacert.pem \
-config /etc/ssl/openssl.cnf

Nos pide:

Enter PEM pass phrase:introducimos una contraseña que usaremos después para firmar cualquier certificado (hay que recordarla). Vamos introduciendo todos los datos, y tenemos especial cuidado cuando nos pir el Common Name, que debe ser nuestro nombre 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 password de la CA que creamos antes y despues le decimos a todo que si.

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 misión HTTPS, sea owncloud.

mkdir /var/www/logs
nano /etc/apache2/conf.d/owncloud5-ssl.conf

Copia y pega 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 nombre de internet o la ip de nuestro servidor. Damot Ctrl+x para cerrar y “y” para salvar.

Desde dentro de owncloud (Administración) podemos forzar el uso de SSL, lo que es muy recomendable a efectos de seguridad.

owncloud ssl

 

Gracias a:

http://ubuntuserverguide.com/2013/04/how-to-setup-owncloud-server-5-with-ssl-connection.html

31 respuestas a «Owncloud con soporte SSL Ubuntu 12.04»

  1. Que tal Paco Rabadan…. muy util tu post, gracias por compartirlo, solo que en mi caso al final de hacer todos estos pasos que indicas ya no me aparece la nube, sale el mensaje «No se ha encontrado la nube»… ¿tendras alguna idea de porque ocurre eso?, te agradezco de antemano.

    1. Supongo que tienes un nombre en dyndns, o similar…. supongo que has redirigido los puertos al servidor…. y supongo que has metido la pata al crear el certificado SSL: o no has puesto el nombre público del serividor en el certificado, o no has editado bien el archivo de configuración del virtual host de apache. Revisa esos pasos y me cuentas. Saludos.

      1. Que tal amigo, aqui de nuevo, desde aquel dia no habia dedicado tiempo a resolver esto, apenas hoy, acabo de resolver el problema, la solución la encontre en los comentarios de esta pagina http://ubuntuserverguide.com/2013/04/how-to-setup-owncloud-server-5-with-ssl-connection.html, la solución consiste en que el ultimo archivo que editamos (nano /etc/apache2/conf.d/owncloud5-ssl.conf) poner DocumentRoot /var/www/ en vez de DocumentRoot /var/www/owncloud. Despues reiniciamos el servidor apache (service apache2 restart) y accesamos con https://laip-o-dominio/owncloud y listo. Lo instale en Debian 7.1, ahora a probar su funcionamiento. Saludos.

  2. Hola Paco

    regrese…XD

    He relaizado toda la operación i perfecto, si es cierto que he tenido que hacer lo mismo que MIGUEL y por ahora todo OK.

    Solo me asalta la duda, el https… tiene que estar siempre en activo?

    me explico, si pogo https://midominio/owncloud desde fuera de mi casa NO FUNCIONA, se queda pensando, pero si uso http://…. Si funciona.

    Pero el https://… /owncloud SI me funciona desde dentro de mi red en casa.

    No se si erre algun paso o es que estoy equivocado en alguna parte.

    Nuevamente, muchas gracias por tu ayuda…XD

    PD… e Proliant…que maravilla….XD y logre hacer solo el redigir todos los datos al RAID 2 que le puse el /owncloud … vamos aprendiendo poco a poco pero algo nuevo todos los dias, graciaspor tu pacaicnecia con los nopbs como yo.

    1. El https no tiene porque estar activo, pero la seguridad aumenta muchísimo. Si puedes acceder al https desde casa, debes poder acceder debes poder acceder desde fuera: ¿ Tienes abierto el puerto 443 en el firewall y redireccionado al servidor?. Yo en mi instalación accedo a owncloud con https://dirección.de.mi.servidor sin necesidad de escribir https://dirección.de.mi.servidor/owcloud. Es mas, la segunda no funciona.
      Otra cosa, en Linux todos somos noobs, hay demasiado que aprender.
      Un saludo y gracias por visitar. Cualquier duda, nos cuentas.

  3. Que tal amigo he llegado hasta aqui ya es el ultimo paso, pero aqui si tego un gran problema ejecuto este comando:

    nano /etc/ssl/openssl.cnf

    Y al interntar buscar las siguientes lieas no estan las busque hasta con el comando Ctrl + w y noestan:

    dir = /root/SSLCertAuth
    default_days = 3650 # 10 years
    default_bits = 2048 # recommended by NSA until 2030
    countryName_default = ES
    0.organizationName_default = Ubuntu Contrib

    Alguna ayuda de antemano Saludos y Gracias

  4. Amigo porque en este pao me pasa lo siguiente

    user@root $ openssl ca \

    > -config /etc/ssl/openssl.cnf \
    > -out apache-cert.pem \
    > -infiles apache-req.pem
    Using configuration from /etc/ssl/openssl.cnf
    Error opening CA private key /root/SSLCertAuth/private/cakey.pem
    3073841352:error:0200100D:system library:fopen:Permission denied:bss_file.c:398:fopen(‘/root/SSLCertAuth/private/cakey.pem’,’r’)
    3073841352:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
    unable to load CA private key
    unable to write ‘random state’

  5. de echo ya no puedo reinicar todo iba bien hasta ese paso ya menciona do al reiniiciar me dice lo siguiente

    owncloud@hackdeon:~$ service apache2 restart
    * Restarting web server apache2 /usr/sbin/apache2ctl: 87: ulimit: error setting limit (Operation not permitted)
    /usr/sbin/apache2ctl: 87: ulimit: error setting limit (Operation not permitted)
    (13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
    no listening sockets available, shutting down
    Unable to open logs
    Action ‘start’ failed.
    The Apache error log may have more information.
    [fail]
    owncloud@hackdeon:~$

    Espero puedas ayudarme de ntemano gracias

  6. Hola Paco

    muchas gracias por este y otros tutoriales tuyos!

    Al final de este tutorial mencionas que si forzamos SSL nos encontraremos com que no podemos conectar por WebDAV. Esto supone un problema para conectar la aplicación de Android o el último desktop client de Windows?

    Saludos y gracias!

  7. Mi estimado una ultima pregunta, ya configure SSL y si efectivamente ya pude entrar en modo seguro utilizando mi DNS NO-IP, mi url queda algo asi

    https://miservidor.no-ip.org/owncloud

    Mi duda es la siguiente, si yo quiero visualizar mi nube desde cualquier parte del mundo, como hacerle, ya intente conectarme incluso de la misma red, y no me conecta solo desde la computador de la cual esta montado ownlcloud 🙁

  8. Hola

    He estado buscando como loco antes de preguntarte. Te comento que tengo una ubuntu 12.04, he instalado owncloud con apt-get (y funcionaba). Antes de seguir tus pasos para el SSL he tenido un problemilla con apache2, y es que en su error.log me decía algo tal que esto.

    apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName

    Buscando he visto que se soluciona añadiendo «ServerName localhost» a sudo /etc/init.d/apache2 restart

    Una vez hecho eso, he procedido con tus pasos y me encuentro que llegado al final del proceso, al intentar arrancar apache2, me da varios errores, entre ellos que no existe la carpeta /var/www/owncloud (apt-get lo instala en /usr/share/owncloud), así que, ni corto ni perezoso, he hecho un link simbolico (ln -s /usr/share/owncloud /var/www/owncloud), cosa que eso se soluciona. No obstante sigue saliendo el siguiente error:

    [error] Illegal attempt to re-initialise SSL for server (SSLEngine On should go in the VirtualHost, not in global scope.)

    He buscado por internet, pero no entiendo que es lo que pasa ni como solucionarlo. Sabrías darme una pista?

    Gracias!

    1. Hola

      He solucionado el problema, añadiendo y al principio y final de lo que hay que añadir a /etc/apache2/conf.d/owncloud5-ssl.conf. Apache arranca pero SSL no funciona, y en /var/log/apache2/error.log veo lo siguiente:

      [Fri Nov 15 18:44:35 2013] [error] [client 127.0.0.1] Invalid method in request \x16\x03\x01

      Probando me he dado cuenta que este error me aparece si abro https://localhost/owncloud, pero no https://(mi ip)/owncloud.

      Dejo constancia para quien lo necesite!

    2. Lo del servername suele ser un problema que se soluciona al editar /etc/hosts y /etc/hostname. Creo que en la parte SSL lo tienes mas chungo, porque el howto se refiere al directorio /var/www/owncloud y seguramente aunque hagas un enlace simbólico al https no le sirva. Me cuentas si avanzas.

  9. Pfffff!!!!. Menudas preguntitas que me hacéis!!!! XD
    Me mosquéa ~/SSLCertAuth/certs…. el simbolo ~/ indica que estás operando con el directorio de usuario. Creo que deberías hacerlo en /root

  10. Hola, a mi en este paso:

    openssl ca \
    -config /etc/ssl/openssl.cnf \
    -out apache-cert.pem \
    -infiles apache-req.pem

    Me da un error:

    Error reading certificate request in apache-req.pem
    139769556440736:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: CERTIFICATE REQUEST

    1. A mi me da el siguiente error,
      Error openin CA private key ./demoCA/private/cakey.pem
      3069863120:error:02001002:system library:fopen:No much file or directory:bss_file.c:398:fopen(‘./demoCA/private/cakey.pem’,’r’)
      3069863120:error:20074002BIO routines:FILE_CTRL:system lib:bss_file.c:400:
      unable to load CA private key

      No se si tiene mucha relación, pero me he atascado en el mismo paso que tu. Además no se si tiene importancia pero en el paso nº 1, cuando hay que modificar el archivo /etc/ssl/openssl.conf, cada linea se modifica independientemente de las demás o van todas seguidas. Porque realizo una búsqueda y cada una está por su lado excepto la de dir = /root/SSLCertAuth que no existe y no se si hay que crearla al final del fichero.

      PD: lo estoy haciendo con RASPBIAN en una Raspberry, pero creo que el funcionamiento es el mismo en ambas.

  11. que pena, pero estoy probando deft8 si, pero al iniciar el lanzador de apache me sale en la terminal:
    *Starting web server apache2
    /usr/sbin/apache2ctl: 87: ulimit: error setting limit (Opertion not permitted)
    mkdir: cannot create directory ´/var/run/apache2′: permission denied
    chown: changing ownership of ´/var/lock/apache2.Byz0egd70y’: operation not permitted

    quisiera saber si me puede colaborar, ya que soy nuevo en linux y me esta gustando manejar por los comandos que usa y se aprende mucho mas que en windows, en cuanto a perder el miedo de comandos.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.