W A R N I N G
DISCLAIMER - EXCENCIÓN DE RESPONSABILIDAD
El presente tutorial / manual / howto, instrucciones o texto en general, carece de cualquier garantía y sólo está pensado como uso a modo educativo, de aprendizaje, experimentación, investigación y desarrollo.
Puede contener errores así como ambigüedades o falta de información precisa. En cualquier caso, las sugerencias, comentarios y críticas constructivas serán siempre bienvenidos.
El autor rechaza cualquier responsabilidad por cualquier tipo de daño, ya sea directo o indirecto, accidental o intencionado que la aplicación del siguiente texto pueda ocasionar.
Su uso está totalmente desaconsejado en entornos de producción a no ser, bajo la supervisión de un profesional debidamente cualificado y bajo su única responsabilidad.
La aplicación del presente texto en cualquier sistema, implica la total aceptación de estas condiciones.
Peperfus.
-----------------------------------------
Edito: Para instalación automática y (casi) desatendida mediante script, pasar a leer el cuarto y quinto post.Para instalación manual, seguir leyendo este post.
-----------------------------------------
Nota: Aquí se compra el dominio y el certificado. Más adelante, se explica como conseguir un certificado gratis, usando LetsEncrypt.
Tutorial de novato a novato.
Así es como lo he hecho yo y estoy contento, porque me ha funcionado prácticamente a la primera, después de solucionar algunos detallitos leves.
1) Necesitamos tener un dominio en Internet. Por ejemplo: openwrt.pepito.com
En la configuración del dominio, el email del admin debe ser estándard:
"admin@openwrt.pepito.com" (bueno, eso suponiendo que elijamos como método de validación del certificado la confirmación por email)
Y la dns, lo lógico es que apunte a la IP privada del router: (la típica suele ser 192.168.1.1) (si no queremos navegar por nuestro luci desde fuera de la LAN)
Nota:
Algunos DNS no admiten IPs privadas como resolución de nombres de dominio, por seguridad. Si este es el caso, se puede añadir la resolución al hosts del router para que nos lo resuelva localmente en la red.
En cambio de IP de un registro DNS puede tardar cierto tiempo. (A veces es inmediato).
Lo que sí tarda bastante (24... 48 horas) es cambiar el nameserver (NS) de un dominio.
2) Instalar:
opkg install luci-ssl-openssl luci-app-uhttpd
3) Generar el certificado. Consta de 2 archivos: el certificado en sí y el que se envía para que nos lo firmen, que tiene extensión csr (certificate signing request (petición de firma de certificado))
Yo utilicé este comando, que me lo dio la CA de donde compré mi certificado y me fue bien:
openssl req -new -newkey rsa:2048 -nodes -keyout certificado.key -out certificado.csr
Se rellena el formulario con los datos (código de país, etc...)
Lo más IMPORTANTE es que el common name sea nuestro dominio: (openwrt.pepito.com)
4) Nos vamos a una CA (Autoridad Certificadora, una especie de "notario"), compramos el certificado más barato que haya (que sólo valide el dominio va que chuta) y seguimos sus instrucciones para que nos firme el csr. Si nos pregunta qué tipo de cifrado, elegimos OPENSSL (suele poner también nginx) Seguramente nos enviará un email a la dirección de admin del dominio con un código para confirmar la firma del cert. Hay muchísimas CAs por ahí en Internet, algunos tienen certificados muy baratos (el mío me costó unos 8$ al año), e incluso creo que hay hasta gratis y todo, aunque no lo he mirado porque los veía algo más complicados y como este em funcionó bien y 8$ al año no es dinero, pues me lo pillé.
5) Una vez validada nuestra identidad, nos envían el cert firmado por email*.
6) Nos vamos a luci, Services, uhttpd y lo configuramos:
Primero le damos al botón: "Remove configuration for certificate and key". Esto borra el certificado autofirmado generado por defecto y su configuración, para que tenga en cuenta la nueva configuración de nuestro cetificado firmado.
Yo le pongo que sólo escuche http por la IP de mi red privada
La ip https la misma, pero en puerto 443
IPv6 lo quito
Redirect http al https marcado.
Ignore private IPs on public interface, según os interese... (yo lo marco)
Y luego le ponemos el archivo CRT que habíamos recibido de la CA y el key que habíamos generado.
Guardamos ...
Nos corta la conexión. Yo lo que hice fue forzar actualización de configuración. Y luego reinicié el uhttpd.
No funciona...
Porque la dns aún no nos resuelve a la IP. La solución temporal es ponerle en /etc/hosts la ip del router asociada al dominio:
192.168.1.1 openwrt.pepito.com
Reiniciar dnsmasq...
Y listo. En principio ya debería funcionar.
Probar en un navegador:
openwrt.pepito.com y debería redirigirnos a https y ponernos el candadito
VERDE, diciéndonos que somos de fiar
(
Como hacer que Firefox vuelva a mostrar el candadito verde)
(He hecho el tutorial de cabeza, no sé si me habré dejado algún paso o algo. De todas formas volveré a hacerlo siguiéndolo, a ver si me he dejado algo)Edito: Probado otra vez y funcionando ok.
A disfrutar de conexión luci segura
Esto es bueno para asegurarnos de que el password viaje encriptado por la red y no nos lo puedan "piratear".
Certificado gratis para hacer pruebas::
https://www.sslforfree.comLo malo es que sólo dura 90 días. Por eso me he comprado uno.
Yo me lo he comprado de: c h e a p sslsecurity.com (he tenido que poner lo de c h e a p con espacios porque si lo ponía seguido, el foro me lo cambiaba a asteriscos, supongo que por algún filtro antispam o algo así)
Actualización: he probado el cert de sslforfree y también me ha funcionado OK.
Aver si alguien lo prueba y le funciona. La verdad es que está guay esto de tener el candadito verde reconocido oficialmente por el navegador para nuestro cacharro openwrt, le da más caché, más prestigio, jejejeje, además de pasar un buen rato aprendiendo.
* También puede que nos lo muestren en pantalla, como una secuencia de filas de caracteres. Podemos copiar y pegar en el archivo, pero OJO. Al hacer esto desde Windows, cuando lo he pegado en un archivo, por ejemplo con el notepad++, me ha dado error el uhttpd. Creo que es por cosas del juego de caracteres de windows, o lo del fin de línea o algo de eso.
Lo que he hecho para que no me pase esto es:
Copiarlo desde la web y pegarlo en el putty conectado a open, en el archivo abierto.
nano certificado.crt
click derecho en el contenido del certificado en la web, seleccionar todo. Click derecho, copiar
Click derecho sobre el putty y directamente ya se pega.
Salir guardando el archivo y entonces lo coge ok.
(Y hacer lo mismo con el archivo key)