22 de enero de 2021

Nginx + ssl para novatos

Hace años trabajé como web master. Principalmente instalando, configurando y manteniendo soluciones LAMP. Luego de casi 8 años dejé eso por la paz y nada, mi exposición hacia nginx fue básicamente nula. Isn embargo comenzar fue muy sencillo. Tengo una pequeña laptop mini Dell, en la que instalé Linux Mint y al momento había usado como servidor Proxy con squid. Posteriormente le instalé nginx para explorarlo un poco. 

Hace unos meses me dio por jugar con AR y luego de buscar por un rato, decidí ir por una solución que platform agnostic. Ya saben, algunas soluciones fnuncionan bien para iOS pero no para Android y viceversa, entre las opciones me encontré con AR.js, que funciona para el web.  Como también tengo un poco de experiencia con html y codificando en php y perl, pues bueno. Aquí me metí. 

Aprendí que hay tres tipos de formas en que se detecta un lugar para desplegar un elemeno de AR.

  1. Image tracking 
  2. Location based
  3. Marker based.

De aquí, la segunda es la que más me interesó. 

Ahora, al probar el primer ejemplo del tutorial me encontré con que a partir del documento html el navegador del móvil debe mandar a abrir la cámara (evidentemente). En un inicio me marcó varios problemas:


Please activate Geolocation and refresh the page. If it is already active, please check permissions for this website. 

Bueno, pues habrá que darle el permiso, ¡pero, oh sorpresa! El permiso ya estaba condedido por lo que activé la opción de debug de la librería AR en el documento html y me encontré con un segundo mensaje de error:

Webcam Error
Name:
Message: WebRTC issue-! navigator.mediaDevices not present in your browser.


Luego de buscarle un rato encontré que efectivamente el problema era debido a que el navegador no puede abrir la cámara si el documento que lo solicita viene desde un sitio web http, debía usar https. 

Esto lo había configurado hace años en Apache solamente por lo que hab´ía que comenzar a buscar información. 


La primera parte ¿Cómo configurar el nginx para servir https? y la segunda ¿Cómo era eso de generar un certificado casero? 


Pararesolver ambos problemas, busqué otro rato en la web hasta que me encontré con este bonito tutorial, muy sencillo: Configurar un servidor HTTPS con Ngingx, de Miguel A Gómez Y se resume así: 


1. Crear la llave privada (.key)
cd /etc/nginx
openssl genrsa -des3 -out midominio.key 2048

2. Crear el certificado a partir de la llave privada. 
En est ecaso no generé la solicitud de certificado pues se trata de una prueba en la lan de la casa por lo que, de acuerdo con las instrucciones de OpenSSL Essentials: Working with SSL Certificates, Private Keys and CSRs me fuí directo a este paso. 

openssl req -newkey rsa:2048 -nodes -keyout midominio.key  -x509 -days 365 -out midominio.crt

3. Configurar nginx. Modifiqué el archivo de configuración, que por default está en /etc/nginx/nginx.conf y le inserté esta sección server

server {
    listen              80;
    listen              443;
    server_name         192.168.100.109;
    root /var/www/html;
    index index.html index.htm;
    ssl on;
    ssl_certificate     tudominio.crt;
    ssl_certificate_key tudominio.key;
}

4. Reinicié el webs erver y listo!

No hay comentarios.: