¿Qué le parecería poder acceder a su entorno de desarrollo local a través de HTTPS sin advertencia SSL?
Como desarrollador, es posible que tenga que trabajar en varios proyectos, clientes y aplicaciones web. Uno de los requisitos previos para el desarrollo de aplicaciones web es probar los sitios web localmente en el navegador durante la fase de desarrollo. Hay muchas posibilidades de que la aplicación que está desarrollando esté protegida con un certificado SSL/TLS en un entorno de producción
¿Está de acuerdo?
¿Qué tal si tiene que probar cierta funcionalidad aprovechando la API de terceros que requiere que el origen sea https://?
Puede decir cert autofirmado y no hay nada malo en ello. Pero, ¿ha intentado acceder a un sitio implementado con un cert autofirmado? Seguirá recibiendo la advertencia de cert en Chrome y otros navegadores
¿Ve la insignia No seguro?
No es bueno, ¿verdad?
La mejor manera de tener válida SSL cert en el entorno de desarrollo es mediante la gestión de su propia CA y su posible con mkcert. Una herramienta fácil de implementar que le permite tener un cert válido en la siguiente dirección web de desarrollo local
- ejemplo.com
- *.ejemplo.com
- ejemplo.test
- localhost
- 127.0.0.1
- ::1
Puede implementar mkcert
en macOS, Windows, CentOS, Ubuntu y otros SO basados en UNIX. El siguiente ejemplo es de Ubuntu
Lo primero es lo primero, vamos a instalar las herramientas del servicio de seguridad de red que tiene certutil
para gestionar la base de datos de certificados
apt-get update
apt-get install libnss3-tools
Puede que también necesite asegurarse de que brew está instalado en su servidor. Si no es así instálelo utilizando el siguiente comando
apt-get install linuxbrew-wrapper
y, por último, instale el mkcert
utilizando brew
brew install mkcert
Nota: para instalar usando brew no debe ser root. y se instala en <span class="s1">/home/$USER/.linuxbrew/bin/mkcert</span>
Donde $USER es el nombre de usuario que ha utilizado para instalar
Ahora, es el momento de instalar la CA local en el almacén de confianza del sistema
root@geekflare:~/mkcert# /home/chandan/.linuxbrew/bin/mkcert -install
Utilizando la CA local en "/root/.local/share/mkcert" ✨
¡La CA local ya está instalada en el almacén de confianza del sistema!
⚡️
root@geekflare:~/mkcert#
Y, a continuación, genere un certificado para el entorno de desarrollo. Digamos que va a tener su sitio web en ejemplo.com y puede utilizar el siguiente comando para obtener el certificado y el archivo de claves
root@geekflare:~/mkcert# /home/chandan/.linuxbrew/bin/mkcert ejemplo.com
Utilizando la CA local en "/root/.local/share/mkcert" ✨
Creado un nuevo certificado válido para los siguientes nombres 📜
- "ejemplo.com"
El certificado está en "./ejemplo.com.pem" y la clave en "./ejemplo.com-key.pem" ✅
root@geekflare:~/mkcert#
Genial, ahora tengo un certificado válido y su archivo de claves listo para usar en mis servidores web Nginx, Apache u otros
Tomemos como ejemplo un servidor HTTP Apache. Si aún no lo ha hecho, habilite el módulo SSL y la configuración
root@geekflare:/etc/apache2# a2enmod ssl
Considerando dependencia setenvif para ssl:
Módulo setenvif ya habilitado
Considerando dependencia mime para ssl:
Módulo mime ya habilitado
Considerando dependencia socache_shmcb para ssl:
Habilitando módulo socache_shmcb.
Habilitando módulo ssl.
Consulte /usr/share/doc/apache2/README.Debian.gz sobre cómo configurar SSL y crear certificados autofirmados.
Para activar la nueva configuración, necesita ejecutar:
systemctl restart apache2
root@geekflare:/etc/apache2#
Como se ha sugerido, reinicie el Apache
En este punto, si realiza netstat observará que el Apache se ha iniciado con el puerto seguro 443
root@geekflare:/etc/apache2# netstat -anlp |grep 443
tcp6
0 0 :::443 :::* LISTEN 11616/apache2
root@geekflare:/etc/apache2#
Pero, aún no hemos terminado. Se ha iniciado con el cert por defecto (dummy) y necesitamos reemplazarlo
Modifique default-ssl.
conf utilizando el
archivo vi
y sustituya lo siguiente por la ruta donde se ha generado el archivo de clave y cert
SSLCertificateFile /root/mkcert/ejemplo.com.pem
SSLCertificateKeyFile /root/mkcert/ejemplo.com-key.pem
Antes de reiniciar Apache, también tiene que manipular el archivo hosts
de ejemplo.com para que se resuelva en su host local en lugar de en el de Internet. Una vez que haya terminado, reinicie el servidor HTTP Apache y acceda a ejemplo.com - verá que se está sirviendo un certificado de confianza
Conclusión
Esto puede ser útil para tener un certificado de confianza en un entorno local. Lo anterior es sólo un ejemplo de example.com pero puede hacerlo para localhost y otros. Si necesita un firmante externo para emitir un certificado, consulte cómo conseguirlo de forma gratuita.