ssl-certificate - manager - wcf ssl
El error "El parĂ¡metro es incorrecto". Utilizando netsh http add sslcert (18)
- Copie el comando en el bloc de notas
- Guárdelo como ANSI
- Cierra y vuelve a abrir el archivo
- Eliminar falso? caracteres
- Copie del Bloc de notas al símbolo del sistema y ejecute el comando
Siguiendo las instrucciones de "Cómo: configurar un puerto con un certificado SSL" en este enlace: http://msdn.microsoft.com/en-us/library/ms733791.aspx , ingresé este comando en la línea de comandos (duh) :
> netsh http add sslcert ipport:10.141.146.227:7001 certhash=5d48e604007b867ae8a69260a4ad318d2c05d8ff appid={EDE3C891-306C-40fe-BAD4-895B236A1CC8}
The parameter is incorrect.
Mi huella digital certhash
fue tomada del certificado en la carpeta Certificados (computadora local)> Personal> Certificados.
El GUID de appid
fue generado.
¿Qué más está mal que deba arreglar para que esto funcione?
Copiar la huella digital del certificado de Certificate / Details / Thumbprint precedería el valor de la huella digital con los bytes ''3f38'' que, cuando se convierten a ANSI, se muestran como ''?''. Este valor oculto me causó el problema.
Pegué el valor en el bloc de notas ++, elegí ''Codificación''> ''Convertir a ANSI'', luego eliminé manualmente el '''' anterior '''' caracteres. Entonces tendría un valor de huella digital limpio para usar.
Debo haber terminado destruyendo la relación entre VS e IIS Express al eliminar el certificado de localhost. Estaba realmente atrapado. La aplicación no se iniciaba y nada de lo que podía hacer parecía corregir esta desconexión (que es lo que quiero es que me lleve a este hilo, para empezar).
Finalmente pude superar el problema cambiando el puerto asignado en la URL no SSL ( launchSettings.json
en las aplicaciones .NET Core) y deshabilitando la casilla de verificación Habilitar SSL en la configuración del proyecto y tomando un nuevo comienzo. Luego pude agregar mi netsh http add sslcert ipport=0.0.0.0:44392 appid={214124cd-d05b-4309-9af9-9caa44b2b74b} certhash=A0ADC1A1002F288CCFA96261F9F352D28C675A90
recién creado con este comando: netsh http add sslcert ipport=0.0.0.0:44392 appid={214124cd-d05b-4309-9af9-9caa44b2b74b} certhash=A0ADC1A1002F288CCFA96261F9F352D28C675A90
.
Además, tenga en cuenta que la variable appid
no es un reflejo de su AppID del proyecto VS (o al menos no tiene que ser así). Es solo un GUID arbitrario, según Scott Hanselmann :
El AppId realmente no importa, es solo un GUID. Esto le dice a HTTP.SYS que estamos usando ese certificado.
Esto no fue obvio para mí e hizo que lidiar con el parámetro sea un error incorrecto mucho más oscuro.
Si tiene problemas similares, buena suerte. Creo en ti. Sígueme si te sientes perdido y solo. ¡Quizás pueda recordar algo para entonces! :RE
En PowerShell simplemente escriba de la siguiente manera. primero entra en el modo http de netsh y luego agrega sslcert. Me funcionó.
>netsh
netsh>http
netsh http>add sslcert ipport=0.0.0.0:13286 appid=''{a5455c78-6489-4e13-b395-47fbdee0e7e6}'' certhash=<thumprint without space>
En mi caso, el problema es que, siguiendo las inscripciones de Microsoft, copié la huella digital de la ventana SSL. la cuestión es que al hacerlo copia el carácter no imprimible al comienzo del hash.
Intente pegar la huella digital en el bloc de notas y luego presione home y pres delete dos veces (hasta que se elimine el primer carácter de la huella digital) y vuelva a agregar el carácter. Puede ver el carácter si copia la huella digital y la pega en cmd:
Estaba recibiendo este error también cuando recién comenzaba con http.sys. Después de ejecutar:
netsh http add iplisten ipaddress=0.0.0.0
luego, los comandos netsh http add sslcert
comenzaron a comportarse correctamente.
Esto funcionará desde la línea de comandos de PowerShell:
$AppId = [Guid]::NewGuid().Guid
$Hash = "209966E2BEDA57E3DB74FD4B1E7266F43EB7B56D"
netsh http add sslcert hostname=localhost:8088 certhash=$Hash appid=`{$AppId`} certstorename my
Los detalles importantes son escapar cada {} con un backtick (`) y no omitir el nombre del almacén de certificados. De lo contrario, netsh genera un error 87.
Las variables son solo por el bien de la conveniencia.
La línea de comandos de PowerShell y los scripts de PowerShell en archivos ps1 pensarán que las llaves de curvilínea {...} son directivas de PowerShell. Así que citarlos. De lo contrario, como has visto, PowerShell se confundirá.
Entonces, en lugar de esto (lo que encontraste falla):
netsh http add sslcert ipp ort:10.141.146.227:7001 certhash=5d48e604007b867ae8a69260a4ad318d2c05d8ff appid= {EDE3C891-306C-40fe-BAD4-895B236A1CC8}
Haga esto (tenga en cuenta las comillas simples):
netsh http add sslcert ipp ort:10.141.146.227:7001 certhash=5d48e604007b867ae8a69260a4ad318d2c05d8ff appid= ''{EDE3C891-306C-40fe-BAD4-895B236A1CC8}''
Aquí hay información sobre la sintaxis de PowerShell con curley llaves:
Los "-" s NO son irrelevantes. Si su guid no se ve exactamente así obtendrá el error de parámetro incorrecto: {EDE3C891-306C-40fe-BAD4-895B236A1CC8} contra EDE3C891306C40feBAD4895B236A1CC8 -> INCORRECTO {EDE3C891306C40feBAD4895B236A1CC8} -> INCORRECTO
También estoy usando el guid para la aplicación de IIS, no uno aleatorio.
Me encontré con esta pregunta mientras buscaba una solución al problema. Finalmente encontré uno que funcionó para mí.
Mi parámetro certhash
no tenía una longitud total de 20 bytes. Tuve que rellenarlo con ceros al frente para que funcionara.
Entonces, en lugar de
certhash=112233445566778899aabbccddeeff00
, tuve que hacer esto:
certhash=00000000112233445566778899aabbccddeeff00
.
Espero que esto ayude.
Me enfrenté a este problema varias veces y cada vez tenía una causa diferente, así que decidí escribir las causas y el comando exacto que funcionó para mí.
Aquí hay algunas causas:
1- Copiar y pegar la huella digital del certificado desde el cuadro de diálogo de Windows agrega un carácter oculto a su hash. No es visible en los editores de texto, pero debe eliminar el carácter para que funcione.
2- La huella digital SSL debe estar disponible en Personal -> Certificados para trabajar con localhost.
3-Debe ser ''ipport ='' no ''ipport:''
4- El certificado SSL debe tener una clave privada. Si está utilizando una consola de gestión de certificados, asegúrese de que tiene un pequeño icono de clave en la vista de certificado.
5- GUID se debe definir en formato completo: {a10b0420-a21f-45de-a1f8-818b5001145a}, y debe tener una cita en powershell: ''{a10b0420-a21f-45de-a1f8-818b5001145a}'' Por lo tanto, el formato de PowerShell es diferente desde la linea de comando
6- SSL Cert debe tener caracteres completos con todos los ''0'' de relleno y sin ningún espacio. Puede copiar la huella digital (tenga cuidado de eliminar un carácter oculto especial) y eliminar espacios, o use ''netsh http show sslcert'' para obtener el valor si el certificado ya está registrado para otra dirección.
Lo que funcionó para mí:
Aquí está el comando exacto que funcionó para mí en powershell:
netsh http add sslcert ipport=0.0.0.0:20001 certhash=5304c034548b27c72b5e9c14f0c7bdd13e52d760 appid=''{a10b0420-a21f-45de-a1f8-818b5001145a}''
Y aquí está la declaración de línea de comando:
netsh
http add sslcert ipport=0.0.0.0:20001 certhash=5304c034548b27c72b5e9c14f0c7bdd13e52d760 appid={a10b0420-a21f-45de-a1f8-818b5001145a}
Más comandos para ayudarlo a evitar problemas relacionados:
Use el siguiente comando para ver el certificado registrado actual. Puede encontrar y reutilizar certhash o su aplicación desde allí:
netsh http show sslcert
Si el certificado ya está registrado con una IP y un puerto similares, debe eliminarlo. Encontré que causa un problema con localhost, 127.0.0.1 y 0.0.0.0. Necesitas tener solo 0.0.0.0 registrado en tu entorno de prueba. Use el siguiente comando para eliminar posibles certificados corruptos:
netsh http delete sslcert ipport=0.0.0.0:20001
Mirando la sintaxis para el comando netsh, vi este ejemplo:
add sslcert ipport=1.1.1.1:443 certhash=0102030405060708090A0B0C0D0E0F1011121314 appid={00112233-4455-6677-8899-AABBCCDDEEFF}
Por lo que parece, tu problema es que estás haciendo
ipport:10.141.146.227:7001
^
Opuesto a
ipport=10.141.146.227:7001
^
Otra posible causa de este problema es que se copian caracteres ocultos de la página Administrador de certificados. Si copia la huella digital desde la ventana de detalles en Certificados, busque un carácter oculto al inicio (¡use las teclas de flecha!). Esta fue la causa para mí del mensaje de error "El parámetro es incorrecto".
Podría ser útil agregar mi resolución en este hilo:
Estaba tratando de agregar un ippport con el parámetro hostnameport, así que obtuve este error de parámetro.
netsh http add sslcert hostnameport="10.0.0.120:443"
En lugar de :
netsh http add sslcert ipport="10.0.0.120:443"
Cya!
Señor, tiene ipport: en vez de ipport = lo cual es fácil de hacer, ya que lo sigue con ip: port
Además, ten cuidado con el {versus <o (, que también me ha atrapado en el pasado.
Tenga cuidado, si tiene un nombre DNS como enlace, use nombre de host en lugar de ipport
netsh http delete sslcert hostnameport=domainame.com:443
Tuve que eliminar ADFS vinculaciones para Office 365 Single-On.
Usar el número de serie en lugar de la huella digital para el parámetro certhash causará este error debido a la diferencia en la cantidad de caracteres. El relleno con ceros cambiará el error al fallar el certificado SSL. Error: 1312
hubo algunas cosas que hice que pensé que funcionaron después de obtener lo mismo "El parámetro es incorrecto". Error.
1) reinició la máquina y lo hizo de nuevo. funcionó la primera vez. 2) me aseguré de que estaba en c: / y volví a poner el comando después de reiniciar no funcionó
No podría explicar por qué, pero creo que tal vez en ambas ocasiones, había algo más equivocado. porque la tercera vez que me pasó a mí,
3) revisé la huella digital de mi CA (no el certificado del servidor emitido) y la copié de nuevo desde la MMC y funcionó.
Después de esto, lo eliminé nuevamente (netsh http delete sslcert ipport = 0.0.0.0 :) y repetí el proceso usando la huella digital del certificado del servidor. La maldita cosa funcionó de nuevo.
No sé, solo trata de pasar por lo mismo que yo hice. tal vez uno de estos funcionaría. Al final, sospecho que entré en un espacio o personaje falso en el certhash.