Intentando seguir varias instrucciones sobre cómo crear un certificado autofirmado para usar con localhost. La mayoría de las instrucciones parecen ser para IIS, pero estoy tratando de usar Nodejs / Express. Ninguno de ellos funciona correctamente porque si bien el certificado se instala, no es confiable. Esto es lo que he intentado que falla:
- ¿Cómo puedo crear un certificado autofirmado para localhost?
- https://www.digitalocean.com/community/articles/how-to-create-a-ssl-certificate-on-nginx-for-ubuntu-12-04/
- http://blogs.developerforce.com/developer-relations/2011/05/generating-valid-self-signed-certificates.html
- http://www.robbagby.com/iis/self-signed-certificates-on-iis-7-the-easy-way-and-the-most-effective-way/
¿Alguien puede ofrecer un flujo de trabajo que pueda hacer esto? Puedo instalar un certificado, pero no puedo confiar en él en Chrome (v32) o IE (v10).
EDITAR: se sugirió en los comentarios que el problema no es un certificado raíz confiable. Instalé el certificado a través de IE pero todavía no se confía en él.
Respuestas:
Las respuestas anteriores fueron parciales. He pasado tanto tiempo haciendo que esto funcione, es una locura. Nota para mi futuro yo, esto es lo que debes hacer:
Estoy trabajando en Windows 10, con Chrome 65. Firefox se está comportando bien, solo confirme localhost como una excepción de seguridad y funcionará. Chrome no:
Paso 1. en tu backend, crea una carpeta llamada
security
. Trabajaremos en su interior.Paso 2. cree un archivo de configuración de solicitud
req.cnf
con el siguiente contenido (el crédito va a: @Anshul )req.cnf:
Una explicación de estos campos está aquí .
Paso 3. navega a la carpeta de seguridad en la terminal y escribe el siguiente comando:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout cert.key -out cert.pem -config req.cnf -sha256
Paso 4. luego fuera de la
security
carpeta, en su aplicación express haga algo como esto: (el crédito va a @Diego Mello)server.js:
Paso 5. Inicie el servidor,
node server.js
y vaya a https: // localhost: 3000 .En este punto tenemos la configuración del servidor. Pero el navegador debe mostrar un mensaje de advertencia.
Necesitamos registrar nuestro certificado autofirmado, como una Autoridad de Certificación de confianza de CA, en la tienda de certificados de Chrome / Windows. (Chrome también guarda esto en Windows)
Paso 6. abre Dev Tools en Chrome, ve al Panel de seguridad, luego haz clic en Ver certificado.
Paso 7. vaya al panel Detalles, haga clic en Copiar archivo, luego, cuando aparezca el Asistente de exportación de certificados, haga clic en Siguiente como se muestra a continuación:
Paso 8. Deje la codificación DER, haga clic en Siguiente, elija
Browse
, colóquelo en una carpeta de fácil acceso como Escritorio y asigne un nombre al certificadolocalhost.cer, then click Save and then Finish.
. Debería poder ver su certificado en el escritorio.Paso 9. Ábralo
chrome://settings/
insertándolo en el cuadro de URL. Abajo, haga clic enAdvanced / Advanced Options
, luego desplácese hacia abajo para encontrarManage Certificates
.Paso 10. Vaya al panel Autoridades de certificación raíz de confianza y haga clic en importar.
Importaremos el
localhost.cer
certificado que acabamos de exportar en el paso 8.Paso 11. Haz clic en Examinar, encuentra los
localhost.cer
valores predeterminados, haz clic en Siguiente varias veces. Hasta que aparezca esta advertencia, haz clic en Sí.Paso 12. cierra todo y reinicia Chrome. Entonces, cuando
https://localhost:3000
vayas deberías ver:fuente
https://localhost:3000
y Chrome se atasca al cargar. ¿Alguien puede decir cuál podría ser la razón?crl+shift+i
oF12
para abrir la consola.DNS.1 = server.local
Luego, en la máquina de conexión, actualice el archivo HOSTS para apuntar la dirección IP del servidor al nombre de host, por ejemplo:192.168.0.50 server.local
Esto permita que el certificado y la dirección coincidan y validen el certificado.El camino más corto Probado en MacOS, pero puede funcionar de manera similar en otros sistemas operativos.
Generar pem
Su servidor express
https://localhost:3000
en Google Chrome y verá que no es seguro. ¡Todavía!fuente
Drag image to your desktop and double click it
-> No puedo arrastrar nada a mi escritorio, no es arrastrable. ¿De quéimage
estás hablando exactamente?openssl req -newkey rsa:2048 -x509 -nodes -keyout keytmp.pem -new -out cert.pem -subj /CN=localhost -reqexts SAN -extensions SAN -config <(cat /System/Library/OpenSSL/openssl.cnf <(printf '[SAN]\nsubjectAltName=DNS:localhost')) -sha256 -days 3650
lugar de la primera línea que sugirió. Y también este hará menos preguntas en el proceso ...Puedes probar openSSL para generar certificados. Mira esto .
Necesitará un archivo .key y .crt para agregar HTTPS al servidor JS express del nodo. Una vez que genere esto, use este código para agregar HTTPS al servidor.
Esto funciona bien en mi máquina local, así como en el servidor donde lo implementé. El que tengo en el servidor fue comprado en goDaddy pero localhost tenía un certificado autofirmado.
Sin embargo, cada navegador arrojó un error diciendo que la conexión no es confiable, ¿desea continuar? Después de hacer clic en continuar, funcionó bien.
Si alguien ha pasado por alto este error con un certificado autofirmado, por favor, ilumine.
fuente
openssl genrsa -out key.pem 2048
para una mejor clave.Cómo generar un certificado SSL para localhost: enlace
debe ingresar una contraseña aquí que debe volver a escribir en los siguientes pasos
cuando se le pregunte "Nombre común" escriba: localhost
fuente
cp server.crt /usr/local/share/ca-certificates/.
y ejecute.sudo update-ca-certificates
Luego, las solicitudes localhost https funcionan en NodeJS 8+. La identificación también aumentará1024 to 2048
Esto es lo que me funciona
en ventanas
1) Agregue esto a su archivo% WINDIR% \ System32 \ drivers \ etc \ hosts: 127.0.0.1 localdev.YOURSITE.net (porque el navegador tiene problemas con 'localhost' (para secuencias de comandos de origen cruzado)
Windows Vista y Windows 7 Vista y Windows 7 utilizan el Control de cuentas de usuario (UAC), por lo que el Bloc de notas debe ejecutarse como Administrador.
Haga clic en Inicio -> Todos los programas -> Accesorios
Haga clic derecho en el Bloc de notas y seleccione Ejecutar como administrador
Haga clic en Continuar en la ventana UAC "Windows necesita su permiso".
Cuando se abre el Bloc de notas, haga clic en Archivo -> Abrir
En el campo de nombre de archivo, escriba C: \ Windows \ System32 \ Drivers \ etc \ hosts
Haga clic en Abrir
Agregue esto a su archivo% WINDIR% \ System32 \ drivers \ etc \ hosts: 127.0.0.1 localdev.YOURSITE.net
Salvar
Cerrar y reiniciar navegadores
En Mac o Linux:
su
permiso127.0.0.1 localdev.YOURSITE.net
Al desarrollar, utiliza localdev.YOURSITE.net en lugar de localhost, por lo que si está utilizando configuraciones de ejecución / depuración en su ide, asegúrese de actualizarlo.
Use ".YOURSITE.net" como dominio de cocina (con un punto al principio) al crear el cookiem, entonces debería funcionar con todos los subdominios.
2) crea el certificado usando ese localdev.url
SUGERENCIA: si tiene problemas para generar certificados en Windows, utilice una máquina VirtualBox o Vmware.
3) importe el certificado como se describe en http://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
fuente
Mkcert de @FiloSottile hace este proceso infinitamente más simple:
mkcert -install
para crear una CA localmkcert localhost 127.0.0.1 ::1
para crear un certificado de confianza para localhost en el directorio actualexport NODE_EXTRA_CA_CERTS="$(mkcert -CAROOT)/rootCA.pem"
Configuración básica del nodo:
fuente
Si utiliza OSX / Chrome, puede agregar el certificado SSL autofirmado al llavero de su sistema como se explica aquí: http://www.robpeck.com/2010/10/google-chrome-mac-os-x-and -self-firmado-ssl-certificados
Es un proceso manual, pero finalmente lo hice funcionar. Solo asegúrese de que el Nombre común (CN) esté configurado en "localhost" (sin el puerto) y después de agregar el certificado, asegúrese de que todas las opciones de Confianza en el certificado estén configuradas en "Confiar siempre". También asegúrese de agregarlo al llavero "Sistema" y no al llavero "inicio de sesión".
fuente
Si está utilizando el nodo, ¿por qué no generarlos con el nodo? Este módulo parece ser bastante completo:
Tenga en cuenta que no generaría sobre la marcha. Genere con algún tipo de script de compilación para que tenga un certificado y una clave coherentes. De lo contrario, deberá autorizar el certificado autofirmado recientemente generado cada vez.
fuente
Algunas de las respuestas publicadas tienen piezas que me fueron muy útiles para superar este problema también. Sin embargo, también estaba interesado en el número mínimo de pasos e, idealmente, evitar OpenSSL (en Windows 10).
Entonces, una parte crítica de las respuestas (crédito: @ TroyWorks ) es que necesita editar su archivo HOSTS para crear un servidor ficticio y asignarlo a 127.0.0.1. Esto supone que vas a estar haciendo desarrollo local.
En mi caso, estaba usando el certificado SS para asegurar un websocket en NodeJS, y ese socket se estaba conectando mediante programación (en lugar de a través del navegador). Entonces, para mí, fue crítico que el certificado fuera aceptado sin advertencias o errores, y la pieza crítica allí era obtener el certificado creado con un CN adecuado (y, por supuesto, aceptar el certificado en Autoridades de confianza, como se describe en otras partes de las respuestas) . El uso de IIS para crear un certificado autofirmado no creará el CN adecuado, por lo que descubrí el siguiente comando simple usando Powershell:
Esto debe ejecutarse en la consola PS Admin, pero simplemente funciona y coloca el certificado en la sección "Personal" del almacén de certificados LocalMachine. Puede verificar que se creó ejecutando:
Para confiar en él, simplemente copie esto y péguelo en "Autoridades de certificación raíz de confianza" usando el Administrador de certificados (asegurándose de que esté mirando los certificados de máquina local, ¡no el usuario actual!).
Si se une a este certificado en IIS, debería poder acceder a https://gandalf.dummy.dev/ y obtener una conexión segura sin advertencias.
La pieza final, usando esto en NodeJS, se describe arriba y en otras respuestas SO, por lo que solo agregaré eso en Windows, es más fácil trabajar con un archivo pfx que combina el certificado y la clave privada. Puede exportar un pfx fácilmente desde el Administrador de certificados, pero afecta la forma en que lo usa en NodeJS. Al crear instancias de un servidor utilizando el módulo 'https', las opciones que usaría (en lugar de 'clave' y 'cert') serían 'pfx' y 'frase de contraseña', como en:
fuente
en Windows hice que el certificado de desarrollo de iis fuera de confianza usando MMC (inicio> ejecutar> mmc), luego agregué el complemento de certificado, seleccioné "equipo local" y acepté los valores predeterminados. Una vez que se agrega ese complemento de certificado, expanda el árbol de certificados de la computadora local para buscar en Personal, seleccione el certificado de host local, haga clic con el botón derecho> todas las tareas> exportar. acepte todos los valores predeterminados en el asistente de exportación.
Una vez que se guarda ese archivo, expanda los certificados de confianza y comience a importar el certificado que acaba de exportar.
https://localhost
ahora se confía en Chrome sin advertencias de seguridad.Utilicé esta resolución de guía # 2 del blog de MSDN, el operador también compartió un enlace en su pregunta sobre que también debería usar MMC, pero esto funcionó para mí. resolución # 2
fuente
Ir:
chrome://flags/
Activar: permite certificados no válidos para recursos cargados desde localhost.
No tiene la seguridad verde, pero siempre tiene permiso para https: // localhost en Chrome.
fuente
Hay más aspectos en esto.
Puede lograr TLS (algunos siguen diciendo SSL) con un certificado, autofirmado o no.
Para tener una barra verde para un certificado autofirmado, también debe convertirse en la Autoridad de certificación (CA). Este aspecto falta en la mayoría de los recursos que encontré en mi viaje para lograr la barra verde en mi configuración de desarrollo local. Convertirse en CA es tan fácil como crear un certificado.
Este recurso cubre la creación tanto del certificado de CA como del certificado del servidor, y mi configuración mostró una barra verde en Chrome localhost, Firefox y Edge: https://ram.k0a1a.net/self-signed_https_cert_after_chrome_58
Tenga en cuenta: en Chrome debe agregar el certificado de CA a sus autoridades de confianza.
fuente
Si necesita ir un paso más allá de los pasos detallados de @ alon y también crear un ca autofirmado:
package.json
Usando el localhost.cnf como se describe:
fuente