WP Migrate DB Pro (Español)
Configurar HTTPS localmente puede ser un asunto complicado. Incluso si logras luchar contra los certificados autofirmados para que los envíes, aún terminas con errores de privacidad del navegador. En este artículo, explicaremos cómo crear su propia autoridad de certificación para sus servidores locales, de modo que pueda ejecutar sitios HTTPS localmente sin problemas.
¿Por qué HTTPS localmente?
¿Por qué no simplemente utilizar HTTP regular localmente? Porque si su sitio de producción es solo HTTPS y está desarrollando localmente en HTTP regular, sus entornos de desarrollo y producción no son tan similares como podrían ser. Por ejemplo, mi entorno de desarrollo para este sitio (deliciousbrains.com) se ejecuta como un servidor Ubuntu en una máquina virtual VMware (VM) en su Mac. El sitio de producción es un servidor Ubuntu que se ejecuta en Linode con una configuración casi idéntica.
Definitivamente desea que su entorno de desarrollo refleje la producción lo más cerca posible.
Cuando no lo hace, invita a más problemas apareciendo en producción que no apareció en dev. Ejecutar HTTP cuando su sitio de producción es solo HTTPS es definitivamente un riesgo innecesario.
Sin embargo, intentar que un certificado SSL funcione con su servidor local es una mierda si no está usando una herramienta que lo maneje para ti, como Valet.
Si alguna vez has intentado ejecutar un sitio HTTPS localmente, probablemente hayas visto algo como lo siguiente en Chrome:
La solución alternativa solía ser crear un certificado autofirmado y usarlo. MAMP Pro hace esto por ti y fue mi opción durante años. Desafortunadamente, eso ya no es posible. ¡El enfoque moderno es convertirse en su propia autoridad de certificación (CA)!
Cómo funciona
Para solicitar un certificado SSL de una CA como Verisign o GoDaddy, envíeles una firma de certificado Solicite (CSR), y le darán un certificado a cambio que firmaron con su certificado raíz y clave privada. Todos los navegadores tienen una copia (o acceden a una copia desde el sistema operativo) del certificado raíz de Verisign, por lo que el navegador puede verificar que su certificado fue firmado por una CA confiable.
Es por eso que cuando genera una certificado firmado el navegador no confía en él. Está autofirmado. No ha sido firmado por una CA. Pero podemos generar nuestro propio certificado raíz y clave privada. Luego agregamos el certificado raíz a todos los dispositivos que poseemos solo una vez, y luego todos los certificados que generamos y firmamos serán de confianza inherente.
Convertirse en una (pequeña) Autoridad de Certificación
Es un poco ridículo lo fácil que es generar los archivos necesarios para convertirse en una autoridad de certificación. Solo se necesitan dos comandos. Primero, generamos nuestra clave privada:
Se le pedirá una frase de contraseña, que recomiendo no omitir y mantener segura. La frase de contraseña evitará que cualquiera que obtenga su clave privada genere un certificado raíz propio. La salida debería verse así:
Luego generamos un certificado raíz:
Se le pedirá la contraseña de su clave privada (que acaba de elegir) y un montón de preguntas. Las respuestas a esas preguntas no son tan importantes. Aparecen al mirar el certificado, lo que casi nunca hará. Sugiero que el Nombre común sea algo que reconozca como su certificado raíz en una lista de otros certificados. Eso es realmente lo único que importa.
Ahora debería tener dos archivos: myCA.key (su clave privada) y myCA.pem (su certificado raíz ).
🎉 Felicitaciones, ahora es CA. Más o menos.
Para convertirse en una CA real, debe obtener su certificado raíz en todos los dispositivos del mundo. Comencemos con los que posee.
Instalación de su certificado raíz
Necesitamos agregar el certificado raíz a cualquier computadora portátil, computadora de escritorio, tableta y teléfono que acceda a sus sitios HTTPS . Esto puede ser un poco molesto, pero la buena noticia es que solo tenemos que hacerlo una vez. Una vez que nuestro certificado raíz esté en cada dispositivo, será bueno hasta que expire.
Agregar el certificado raíz al llavero macOS
A través de la CLI
A través de la interfaz de usuario
- Abra la aplicación macOS Keychain
- Vaya a Archivo > Importar elementos…
- Seleccione su archivo de clave privada (es decir, myCA.pem)
- Busque lo que haya respondido como Nombre común arriba
- Haga doble clic en su certificado raíz en la lista
- Expanda la sección Confianza
- Cambie el cuadro de selección Al usar este certificado a «Siempre Confianza ”
- Cierre la ventana del certificado
- Le pedirá que ingrese su contraseña (o escanee su dedo), haz eso
- 🎉 ¡Celebra!
Agregar el certificado raíz a iOS
Si desea agregar el certificado raíz a sus dispositivos iOS, puede hacerlo con bastante facilidad siguiendo estos pasos:
- Envíe por correo electrónico el certificado raíz a usted mismo para que pueda acceder a él en su dispositivo iOS
- Haga clic en el archivo adjunto en el correo electrónico en su dispositivo iOS
- Vaya a la aplicación de configuración y haga clic en ‘Perfil descargado’ cerca de la parte superior
- Haga clic en instalar en la parte superior derecha
- Una vez instalado, presione cerrar y vuelva a la página principal de Configuración
- Vaya a «General» > «Acerca de»
- Desplácese hasta la parte inferior y haga clic en «Configuración de certificados de confianza»
- Habilite su certificado raíz en «HABILITAR CONFIANZA COMPLETA PARA CERTIFICADOS ROOT»
Creación de certificados firmados por CA Sitios de desarrollo
Ahora que somos una CA en todos nuestros dispositivos, podemos firmar certificados para cualquier sitio de desarrollo nuevo que necesite HTTPS. Primero, creamos una clave privada:
Luego creamos una CSR:
Obtendrá las mismas preguntas que hizo anteriormente y, nuevamente, sus respuestas no importan. De hecho, importan aún menos porque no verá este certificado en una lista junto a otros.
A continuación, crearemos el certificado usando nuestra CSR, la clave privada de CA, el certificado de CA y un archivo de configuración, pero primero necesitamos crear ese archivo de configuración.
El archivo de configuración es necesario para definir la extensión del Nombre alternativo del sujeto (SAN) que se define en esta sección (es decir, extensión) del certificado:
El archivo de configuración (dev.deliciousbrains.com. ext) contenía lo siguiente:
Ejecutaremos el comando openssl x509
porque, según tengo entendido, Se necesita el comando x509 para realizar la firma con el certificado raíz y la clave privada. Encontré este archivo de configuración de ejemplo en Stack Overflow y parece funcionar.
Ahora ejecutamos el comando para crear el certificado:
Ahora puedo configurar mi servidor web con la clave privada y el certificado. Si está ejecutando un servidor Linux, puede usar las instrucciones en nuestra serie Instalar WordPress en Ubuntu 20.04 Si está usando MAMP, puede seleccionar el certificado y los archivos de clave usando la interfaz de usuario:
Desafortunadamente, MAMP (probado con la versión 5.7) no crea certificados SSL con una CA, por lo que tendrá que usar el método manual por ahora.
Para cualquier otro sitio de desarrollo, podemos simplemente repetir esta última parte de la creación de un certificado, no tenemos que crear una nueva CA para cada sitio.
Shell Script
Para hacer las cosas aún más rápidas, aquí hay un práctico script de shell que puede modificar para sus propios fines:
Conclusión
Entonces, ahí lo tiene, cómo convertirse en su propio certificado local autoridad para firmar sus certificados SSL locales y utilizar HTTPS en sus sitios locales. Con suerte, esto eliminará el temido mensaje «Tu conexión no es privada» para ti en Chrome.