puerto protocolo para implementar crear configurar configuracion como certificado activar windows-7 ssl-certificate wcf-binding netsh

windows 7 - protocolo - Usando netsh, el enlace de un certificado SSL a un número de puerto está fallando



puerto ssl (9)

He seguido las instrucciones en SSL con el servicio WCF auto hospedado . Cuando intento vincular el certificado en Windows 7 usando netsh como se describe en Cómo configurar un puerto con un certificado SSL. , está fallando de la siguiente manera.

En Windows PowerShell

PS C:/> netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF} Bad numeric constant: 224. At line:1 char:104 + netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={001 <<<< 12233-4455-6677-8899-AABBCCDDEEFF} + CategoryInfo : ParserError: (224:String) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : BadNumericConstant

En un símbolo del sistema

C:/>netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF} SSL Certificate add failed, Error: 1312 A specified logon session does not exist. It may already have been terminated.


En realidad, no tiene nada que ver con la actualización. He perdido tanto tiempo con el mismo problema. Si realiza una instalación nueva, no se encontrará con este problema, pero se producirá un problema si intenta:

1. Import same certificate again 2. You create a new certificate and try to bind it which has same parameters, namely the CN value.

Para deshacerse de este problema, elimine este certificado correctamente de su almacén de certificados y del caché del servidor IIS, o (solo para fines de desarrollo), cree un nuevo certificado, pero con un valor de CN diferente, el comando funcionará.


He encontrado 4 posibles causas para el error 1312 en mis enlaces de puerto:

  • El certificado SSL está dañado: debe eliminarlo de la tienda de certificados y volver a agregarlo.
  • El certificado SSL carece de una clave privada: debe eliminarlo del almacén de certificados y volver a agregar el certificado público / privado completo, o adjuntar la clave privada a su certificado.
  • Si se instala en una versión anterior al SP1 de 2012R2, es posible que necesite KB 981506.
  • Es posible que haya agregado el certificado SSL a su tienda de usuario y no a la tienda local de certificaciones de máquinas: elimínelo de la tienda de usuarios y añádalo a la tienda de máquinas.

La clave para mí fue abandonar el uso de IE para hacer la importación, que es lo que normalmente hago / hice.

Use mmc.exe, Archivo-> Agregar / Eliminar complemento y agregue "Certificados". Administre la cuenta de computadora y luego la "computadora local".

Importe el certificado raíz en Certificados (Computadora local) / Autoridades / Certificados de certificación raíz de confianza.

Importe el certificado del cliente en Personal / Certificates y luego haga el netsh http add sslcert.


La fuente del error es que tomé la ThumbPrint directamente del archivo de certificado de signroot.cert, que se crea a partir del primer comando makecert necesario para crear "Autoridades de certificación de raíz de confianza", que se usa nuevamente para crear (e instalar) ) el certificado de confianza propia siyenda en el segundo comando makecert.

El segundo comando makecert también instala los certificados creados en el nodo "Certificados (computadora local) -> Personal -> Certificados". Uno tiene que actualizar de nuevo la MMC abierta actualmente para ver el certificado "localhost" y la ThumbPrint debe tomarse de estos certificados pero no de signroot.cert.

Si todavía no es el caso, uno podría necesitar instalar este hotfix desde M $. http://support.microsoft.com/kb/981506

ref: http://social.technet.microsoft.com/Forums/en/winservergen/thread/68452008-a89b-40ba-9927-472efcfafc99


Los certificados "oficiales" ( no autofirmados) (por ejemplo, de Thawte) se importan en el almacén de certificados: "Autoridades de certificación raíz de confianza".
Si no se pasa el parámetro "certstorename =" en el comando netsh, netsh toma "MY" que representa el almacén "Privado".
Para vincular un certificado oficial, debe agregar:

certstorename=Root

al comando netsh.

Información completa


Luché con esto para siempre para que mi IIS Express haga SSL correctamente. Resultó que mi certificado estaba en la tienda Autoridades de certificación de raíz de confianza en lugar de la tienda de Certificados personales . Esto es lo que funcionó para mí:

  1. Asegúrese de que su certificado esté en "Certificados (computadora local) / Personal / Certificados"
  2. netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid=''{00112233-4455-6677-8899-AABBCCDDEEFF}''
  3. Certificado SSL agregado con éxito
  4. Use MMC y arrastre el certificado donde quiera que vaya.

Nos enfrentamos al mismo error y, después de largas horas, nos dimos cuenta de que netsh no estaba navegando en todas las tiendas de máquinas locales para encontrar el certificado identificado por el parámetro "certhash". Por defecto, busca el certificado en la tienda "personal" y solo allí.

Como nuestro certificado no estaba en la tienda "personal", sino en la tienda "Trusted Root Certification Authorities", el problema se resolvió agregando el parámetro "certstorename" en el comando netsh:

C:/>netsh http add sslcert ipport=0.0.0.0:8732 certstorename=AuthRoot certhash=...


Noté lo siguiente en tu pregunta. Es posible que no resuelva el problema original, pero la sintaxis aquí no es correcta.

PS C:/> netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF} Bad numeric constant: 224. At line:1 char:104 + netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={001 <<<< 12233-4455-6677-8899-AABBCCDDEEFF} + CategoryInfo : ParserError: (224:String) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : BadNumericConstant

Use esto en su lugar (con appid en una sola cita ''{}''):

netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid=''{00112233-4455-6677-8899-AABBCCDDEEFF}''


Otra cosa a tener en cuenta es que copiar / pegar el hash de certificado desde la ventana de propiedades del certificado de la consola MMC, también puede generar un carácter divertido al inicio del hash. ¡No lo verás porque este carácter es INVISIBLE en la codificación UTF-8 que tu editor de texto probablemente usa!

Netsh no ayuda, ya que sigue fallando con "el parámetro es incorrecto" sin revelar qué parámetro;)

Cambiar la codificación a ANSI muestra el carácter, eliminarlo y funcionará como un encanto