2010-07-14 10 views
18

estoy corriendo en el siguiente error al intentar analizar mi token:no puede encontrar un certificado único que coincide con los criterios

Property name: 'certificateReference' 
Error: 'ID1025: Cannot find a unique certificate that matches the criteria. 
StoreName: 'My' 
StoreLocation: 'LocalMachine' 
X509FindType: 'FindByThumbprint' 
FindValue: '‎41a8a59e537d4a00a8c4fa8dc2522388dbd13d27' 

La sección en mi web.config es:

<serviceCertificate>` 
    <certificateReference x509FindType="FindByThumbprint" findValue="‎41A8A59E537D4A00A8C4FA8DC2522388DBD13D27" storeLocation="LocalMachine" storeName="My" /> 
</serviceCertificate> 

I Ha confirmado que el certificado existe en IIS, MMC e Internet Explorer y que ha intentado cambiar el tipo de búsqueda por el tema sin resultado. También probé la huella digital en mayúsculas, minúsculas, con espacios y sin espacios. También he confirmado existe el certificado LocalMachine \ Mi con los siguientes resultados:

Matching certificate: 
CN=kelly-pc 

cuentas adicionales y grupos con acceso a la clave privada incluyen:

NT AUTHORITY\SYSTEM 
BUILTIN\Administrators 
KELLY-PC\Kelly 
BUILTIN\IIS_IUSRS 

Respuesta

1

Probablemente usted utiliza certificado autoemitido y habría que añadir también la línea

<issuedTokenAuthentication allowUntrustedRsaIssuers="true" /> 

dentro <serviceCertificate> que debe utilizar junto con <certificateReference>.

+0

He añadido el certificado a la sección de proveedores de confianza y todavía no lo estaba encontró. ¡En cualquier caso, creé otra solución simple con nuevos certificados autoemitidos y el proyecto funcionó! – Kjaneb

+5

Y esta solución fue? ¿Qué tal si ayudamos a la comunidad cuando podemos .../refunfuñar? – VulgarBinary

+0

¿Soy yo o no estoy del todo claro? ¿Puedes publicar un fragmento XML más grande que muestre mejor esto? – Bryan

5

Antes que nada, el consejo de "isstedAutenticación emitida" de Oleg no me funcionaba porque mi aplicación es un MVC de asp.net. Supongo que este elemento no es compatible con la aplicación asp.net MVC, pero podría ser compatible con la configuración del servicio WCF.

Después de muchas horas de luchar con este error en localhost y otros errores como ID1024 tuve que deshacer algunas cosas que había hecho siguiendo consejos como dar a todos leer todos los archivos dentro de% ALLUSERSPROFILE% \ Microsoft \ Crypto \ RSA \ MachineKeys según el blog this (¡concedí lectura en toda la carpeta MachineKeys que no era una buena idea!). ¡Al hacer esto, todas las concesiones a claves privadas dejaron de funcionar a través de la consola MMC!

mi solución era crear un nuevo certificado auto firmado según las instrucciones del here

Entonces hice una nueva importación del certificado recién creado a la tienda correcta y le dio al usuario que ejecuta los derechos de las aplicaciones web de lectura a la clave privada. Mi problema era con el certificado que estaba usando antes de la cual se auto firmado, que debe haber sido algo malo con ella ..

En esta sección se requiere definitivamente en el lado del cliente:

<serviceCertificate> 
    <certificateReference x509FindType="FindByThumbprint" findValue="‎41A8A59E537D4A00A8C4FA8DC2522388DBD13D27" storeLocation="LocalMachine" storeName="My" /> 
</serviceCertificate> 

Cuando se trata de certificados este es también un muy buen consejo para tener en cuenta:

SI PRIMERO IMPORTA EL CERTIFICADO EN LA TIENDA PERSONAL PARA EL DESARROLLO, LUEGO IMPORTE EN LA TIENDA DE LA MÁQUINA PARA SU DESPLIEGUE, LA CLAVE PRIVADA PERMANECERÁ EN LA UBICACIÓN DE LA TIENDA PERSONAL SO NINGUNA CUENTA DE SERVICIO PUEDE UTILIZARLO AUNQUE SE HAYA OTORGADO PERMISO.

Y, finalmente, la herramienta FindPrivateKey.exe fue muy útil para localizar el archivo de clave privada real y para ayudar a resolver el problema, se puede descargar desde here, con buenas instrucciones here.

me di cuenta cuando se eliminan los certificados a través de la consola MMC que tenía que quitar el archivo de clave privada manualmente desde

C: \ Datos de programa \ Microsoft \ Crypto \ RSA \ MachineKeys

si la supresión de la tienda de LocalMachine y desde

C: \ Users [nombre de usuario] \ AppData \ Roaming \ Microsoft \ Crypto \ RSA \ S-1-5-21-2106337540-114255811-1274951907-65121

si la supresión de la tienda de CurrentUser

+0

esto fue útil, utilizando la herramienta FindPrivateKey.exe con -t "thumbprint" para encontrar el archivo, y luego otorga derechos a la cuenta "Servicio local" a ese archivo. Como ese era el usuario, mi grupo de aplicaciones se estaba ejecutando. – ScottCate

+0

Esto me ha ahorrado horas de resolución de problemas. ¡Gracias! Estaba usando IISExpress, así que tuve que agregar ($ machinename \ IIS_IUSRS) a la ACL para el archivo una vez que pude encontrarlo usando la aplicación FindPrivateKey. – wislon

23

Tuve exactamente el mismo problema. Mediante la copia de mi sección de web.config en Notepad ++ (no bloc de notas) vi un personaje invisible:

<serviceCertificate> 
     <certificateReference x509FindType="FindByThumbprint" findValue="?e36df2f3e351a25adf8ffb6ad3619f10238f0317" /> 
</serviceCertificate> 

Eliminar este personaje y debería funcionar.

Sin Notepad ++ sólo tiene que pulsar la tecla de retroceso frente al valor de huella digital (tratando de eliminar el "char.

+0

esto fue todo ... qué tiro largo y lo clavaste. ¡Gracias! – ScottCate

+0

La mejor manera es ver el archivo en un HexEditor como HxD. Estaba usando Notepad ++ y no mostraba ningún personaje "invisible". HxD lo hizo ... El problema proviene de copiar/pegar desde el certificado en IIS. Mejor tipearlo que copiarlo. –

+6

Usando el Bloc de notas ++ No vi los caracteres adicionales hasta que cambié la codificación de UTF-8 a ANSI – BozoJoe

3

Fue un personaje invisible delante de la huella digital para mí también. La instrucción estándar de Microsoft para obtener la La huella digital es para abrir las propiedades del certificado, copiar la cadena de bytes codificados hexadecimales y eliminar espacios intermedios. Supongo que este procedimiento de copia agrega algunos caracteres invisibles al principio de la cadena. Estos caracteres también deben ser eliminados o las huellas dactilares no coincide Supe que algo debe estar mal con la huella digital cuando descubrí que pude cargar el certificado por su nombre.

0

Así que este error apareció en mi pantalla esta mañana. Estoy usando una máquina de desarrollo, así que estaba usando un certificado autofirmado (IIS). Después de instalar Visual Studio 2015 RC, IIS también se actualizó. Resulta que rompió la confianza de la cadena, porque el certificado raíz fue eliminado o no válido (IIS Express.

Probablemente una cosa obvia, pero asegúrese de que el certificado seleccionado sigue siendo válido, incluidos todos los saltos de la cadena.

0

en un servidor particular, he tenido que añadir a las autoridades de certificación raíz de confianza almacenar, así, además de personal para el código de reconocerlo.

en mi caja local y otros servidores ha funcionado bien en el almacén Personal solo.

Cuestiones relacionadas