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.
|
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.
Gracias a:
http://ubuntuserverguide.com/2013/04/how-to-setup-owncloud-server-5-with-ssl-connection.html
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.
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.
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.
Gracias por el aporte.
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.
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.
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
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’
Actúas como root?
Es decir, antes has tecleado
$ sudo su
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
Rarro rarro. Ni idea. Echa un vistazo al log de apache a ver si encuentras alguna pista.
Me pasa lo mismo. Como lo habeis solucionado?
OK, veo que faltaba el sudo delante de la orden de service apache2 restart
Si era cosa del sudo
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!
Pues lo cierto es que si funciona, supongo que lo habrán arreglado en un update. Voy a modificarlo ahora mismo. Gracias.
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 🙁
Prueba con https://miservidor.no-ip.org/
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!
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!
Gracias!
Estoy seguro que no tienes el fqdn bien configurado. Echale un vistazo. Si te funciona con la ip, te tiene que funcionar con el fqdn.
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.
En el último copia y pega he tenido que poner «» al principio y
«» al final para que arrancase apache2
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
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
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.
Hay que buscar las líneas y modificarlas. Da igual el dispositivo, lo importante es el S.O.
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.
El linux es un sistema operativo que engancha. Sigue investigando y si tienes alguna duda intentaré responderte. Los errores que te está dando se refiere a los permisos de usuario… googlealo.