Tengo subdomain.example.com
que utilizo para fines de desarrollo. Mi solución de aplicación web contiene una API web, etc., que necesito llamar desde sistemas externos, por lo tanto, no estoy usando localhost.
Ahora necesito probar SSL y necesito un certificado para mi subdomain.example.com
nombre de dominio de desarrollo.
Intenté crear un certificado autofirmado como se describe en http://technet.microsoft.com/en-us/library/cc753127(v=ws.10).aspx , pero este certificado solo funciona para localhost. ¿Se puede usar este certificado para mi propósito o tendré que crear un autofirmado para mi subdominio de desarrollo? Si tengo que crear una certificación autofirmada para mi subdominio de desarrollo, ¿qué utilidad o servicio en línea (Gratis) puedo usar para esto?
fuente
makecert.exe
estar en mi camino. Para los certificados, pensé que sería más seguro y usaría-a SHA512 -len 8192
; me llevó una eternidad generarlos. Y como sospechaba que podría, no tuvo ningún impacto en el nivel de encriptación que usó IIS. Por defecto, IIS usa 128 bits, debe hacer cosas de política de grupo para cambiar esto. De otra nota para otros lectores: no cambies los números mágicos después-eku
, son obligatorios.sha1
. Sustituya-a sha512
y considere agregar-len 2048
a la segundamakecert
invocación y todo debería estar bien.Usando PowerShell
Desde Windows 8.1 y Windows Server 2012 R2 (Windows PowerShell 4.0) y versiones posteriores, puede crear un certificado autofirmado con el nuevo
New-SelfSignedCertificate
cmdlet:Ejemplos:
Usando el Administrador IIS
www.domain.com
osubdomain.domain.com
fuente
New-SelfSignedCertificate -FriendlyName *.mydomain.local -DnsName *.mydomain.local, localhost -CertStoreLocation Cert:\LocalMachine\My
Esto crea un certificado en la tienda Personal. Luego, primero exporté el certificado a un archivo y luego lo volví a importar a IIS a través de IIS Manager (para usarlo para mi enlace https) y luego a Trusted Root CAs a través de MMC (para evitar advertencias del navegador).-NotAfter
opción también es útil para especificar una fecha de vencimiento (sin ella, el valor predeterminado es solo 1 año). Ejemplo que uséNew-SelfSignedCertificate -DnsName *.mydomain.com -FriendlyName *.mydomain.com -NotAfter (Get-Date).AddYears(15) -CertStoreLocation cert:\LocalMachine\My
Para crear el nuevo certificado para su dominio específico:
Abra Powershell ISE como administrador, ejecute el comando:
Para confiar en el nuevo certificado:
Para vincular el certificado a su sitio:
fuente
Tuve que abrirme camino a través de certificados autofirmados en Windows combinando partes de las respuestas dadas y más recursos. Aquí está mi propio (y con suerte completo) recorrido. Espero que te ahorre algo de mi propia curva de aprendizaje dolorosa. También contiene información sobre temas relacionados que aparecerán tarde o temprano cuando cree sus propios certificados.
Cree un certificado autofirmado en Windows 10 y versiones inferiores
No use makecert.exe. Ha sido desaprobado por Microsoft.
La forma moderna utiliza un comando Powershell.
Windows 10
Abra Powershell con privilegios de administrador:
Windows 8, Windows Server 2012 R2:
En Powershell en estos sistemas, los parámetros -FriendlyName y -NotAfter no existen. Simplemente quítelos de la línea de comando anterior.
Abra Powershell con privilegios de administrador:
Una alternativa es utilizar el método para la versión anterior de Windows a continuación, que le permite utilizar todas las características de Win 10 para la creación de certificados ...
Versiones anteriores de Windows:
Mi recomendación para versiones anteriores de Windows es crear el certificado en una máquina Win 10, exportarlo a un archivo .PFX usando una instancia de mmc (consulte "Confiar en el certificado" a continuación) e importarlo en el almacén de certificados en la máquina de destino con el antiguo sistema operativo Windows. Para importar el certificado NO haga clic derecho sobre él. Aunque hay un elemento de "Importar certificado" en el menú contextual, falló en todas mis pruebas para usarlo en Win Server 2008. En su lugar, abra otra instancia de mmc en la máquina de destino, vaya a "Certificados (equipo local) / Personal / Certificados" , haga clic derecho en el panel central y seleccione Todas las tareas → Importar.
El certificado resultante
Los dos comandos anteriores crean un certificado para los dominios
localhost
y*.dev.local
.La versión Win10 también tiene una duración de 15 años y un nombre para mostrar legible de "Dev Cert * .dev.local, dev.local, localhost".
Actualización: si proporciona varias entradas de nombre de host en el parámetro
-DnsName
(como se muestra arriba), la primera de estas entradas se convertirá en el Asunto del dominio (Nombre común AKA). La lista completa de todas las entradas de nombre de host se almacenará en el campo Nombre alternativo del sujeto (SAN) del certificado. (Gracias a @BenSewards por señalar eso).Después de la creación, el certificado estará disponible de inmediato en cualquier enlace HTTPS de IIS (instrucciones a continuación).
Confía en el certificado
El nuevo certificado no forma parte de ninguna cadena de confianza y, por lo tanto, no se considera confiable por ningún navegador. Para cambiar eso, copiaremos el certificado al almacén de certificados para las CA raíz confiables en su máquina:
Abra mmc.exe, Archivo → Agregar o quitar complemento → elija "Certificados" en la columna izquierda → Agregar → elija "Cuenta de equipo" → Siguiente → "Equipo local ..." → Finalizar → Aceptar
En la columna izquierda, seleccione "Certificados (equipo local) / Personal / Certificados".
Encuentre el certificado recién creado (en Win 10 la columna "Nombre descriptivo" puede ayudar).
Seleccione este certificado y presione Ctrl-C para copiarlo al portapapeles.
En la columna de la izquierda, seleccione "Certificados (equipo local) / CA raíz / certificados de confianza".
Presione Ctrl-V para pegar su certificado en esta tienda.
El certificado debe aparecer en la lista de Autoridades raíz de confianza y ahora se considera confiable.
Uso en IIS
Ahora puede ir al Administrador de IIS, seleccionar los enlaces de un sitio web local → Agregar → https → ingrese un nombre de host del formulario
myname.dev.local
(su*.dev.local
certificado solo es válido para ) y seleccione el nuevo certificado → Aceptar.Agregar a hosts
Agregue también su nombre de host a C: \ Windows \ System32 \ drivers \ etc \ hosts:
Contento
Ahora Chrome e IE deberían tratar el certificado como confiable y cargar su sitio web cuando se abra
https://myname.dev.local
.Firefox mantiene su propio almacén de certificados. Para agregar su certificado aquí, debe abrir su sitio web en FF y agregarlo a las excepciones cuando FF le advierte sobre el certificado.
Para el navegador Edge puede que se necesite más acción (ver más abajo).
Prueba el certificado
Para probar sus certificados, Firefox es su mejor opción. (Créeme, yo también soy un fanático de Chrome, pero FF es mejor en este caso).
Aquí están las razones:
¡Esta advertencia es correcta! Como se señaló anteriormente, Firefox no utiliza el almacén de certificados de Windows y solo confiará en este certificado si agrega una excepción. El botón para hacer esto está justo debajo de las advertencias.
Esta advertencia muestra que hiciste algo mal. El dominio (comodín) de su certificado no coincide con el dominio de su sitio web. El problema debe resolverse cambiando el (sub) dominio de su sitio web o emitiendo un nuevo certificado que coincida. De hecho, podría agregar una excepción en FF incluso si el certificado no coincide, pero nunca obtendría un símbolo de candado verde en Chrome con tal combinación.
Firefox puede mostrar muchas otras advertencias de certificados agradables y comprensibles en este lugar, como certificados vencidos, certificados con algoritmos de firma obsoletos, etc. No encontré ningún otro navegador que me diera ese nivel de comentarios para resolver cualquier problema.
¿Qué patrón de (sub) dominio debería elegir desarrollar?
En el comando New-SelfSignedCertificate anterior, utilizamos el dominio comodín
*.dev.local
.Puedes pensar: ¿Por qué no usar
*.local
?Razón simple: es ilegal como dominio comodín.
Los certificados comodín deben contener al menos un nombre de dominio de segundo nivel.
Por lo tanto, los dominios del formulario
*.local
son buenos para desarrollar sitios web HTTP. Pero no tanto para HTTPS, porque se vería obligado a emitir un nuevo certificado coincidente para cada nuevo proyecto que inicie.Notas secundarias importantes:
motör_head.dev.local
con su patrón comodín*.dev.local
. Cumplirán cuando cambies amotoer-head.dev.local
.*.dev.local
coincidemyname.dev.local
pero NOother.myname.dev.local
!*.*.dev.local
) NO son posibles en los certificados. Porother.myname.dev.local
lo tanto , solo se puede cubrir con un comodín del formulario*.myname.dev.local
. Como resultado, es mejor no usar una parte de dominio de cuarto nivel. Pon todas tus variaciones en la parte del tercer nivel. De esta manera, se llevará bien con un solo certificado para todos sus sitios de desarrollo.El problema con Edge
Esto no se trata realmente de certificados autofirmados, sino que está relacionado con todo el proceso:
después de seguir los pasos anteriores, Edge puede no mostrar ningún contenido al abrirlo
myname.dev.local
.La razón es una característica de la administración de red de Windows 10 para aplicaciones modernas, llamada "Aislamiento de red".
Para resolver ese problema, abra un símbolo del sistema con privilegios de administrador e ingrese el siguiente comando una vez:
Puede encontrar más información sobre Edge y aislamiento de red aquí: https://blogs.msdn.microsoft.com/msgulfcommunity/2015/07/01/how-to-debug-localhost-on-microsoft-edge/
fuente
appname.dev has a security policy called HTTP Strict Transport Security (HSTS), which means that Firefox can only connect to it securely. You can’t add an exception to visit this site.
que, como dice, no le permite agregar la excepción del cliente, en contra de su instrucción. ¿Es esta una mala configuración dentro de IIS con respecto a la configuración de SSL, Requiere SSL y las opciones de certificados del Cliente?*.mydomain.com
puede ser un certificado válidome.mydomain.com
pero no parame.at.mydomain.com
.Me encontré con este mismo problema cuando quería habilitar SSL en un proyecto alojado en IIS 8. Finalmente, la herramienta que utilicé fue OpenSSL , después de muchos días luchando con los comandos makecert. El certificado se genera en Debian, pero podría importarlo sin problemas en IIS 7 y 8.
Descargue el OpenSSL compatible con su sistema operativo y este archivo de configuración. Establezca el archivo de configuración como configuración predeterminada de OpenSSL.
Primero generaremos la clave privada y el certificado de la Autoridad de Certificación (CA). Este certificado es para firmar la solicitud de certificado (CSR).
Debe completar todos los campos que se requieren en este proceso.
openssl req -new -x509 -days 3650 -extensions v3_ca -keyout root-cakey.pem -out root-cacert.pem -newkey rsa:4096
Puede crear un archivo de configuración con una configuración predeterminada como esta: ahora generaremos la solicitud de certificado, que es el archivo que se envía a las Autoridades de Certificación.
El Nombre común debe establecer el dominio de su sitio, por ejemplo: public.organization.com .
openssl req -new -nodes -out server-csr.pem -keyout server-key.pem -newkey rsa:4096
Ahora la solicitud de certificado está firmada con el certificado de CA generado.
openssl x509 -req -days 365 -CA root-cacert.pem -CAkey root-cakey.pem -CAcreateserial -in server-csr.pem -out server-cert.pem
El certificado generado se debe exportar a un archivo .pfx que se pueda importar al IIS.
openssl pkcs12 -export -out server-cert.pfx -inkey server-key.pem -in server-cert.pem -certfile root-cacert.pem -name "Self Signed Server Certificate"
En este paso importaremos el certificado CA.
En su servidor debe importar el certificado de CA a las autoridades de certificación raíz de confianza, ya que IIS puede confiar en el certificado que se importará. Recuerde que el certificado que se importará al IIS se ha firmado con el certificado de la CA.
Con este paso, el IIS confía en la autenticidad de nuestro certificado.
En nuestro último paso, importaremos el certificado a IIS y agregaremos el sitio de enlace.
Ahora vaya a su sitio en el Administrador de IIS y seleccione Enlaces ... y agregue un nuevo enlace.
Seleccione https como el tipo de enlace y debería poder ver el certificado importado.
fuente
Otra opción es crear un certificado autofirmado que le permita especificar el nombre de dominio por sitio web. Esto significa que puede usarlo en muchos nombres de dominio.
En IIS Manager
Ahora, en su sitio web en IIS ...
fuente
Otra forma fácil de generar un certificado autofirmado es usar Jexus Manager,
https://www.jexusmanager.com/en/latest/tutorials/self-signed.html
fuente