Acabamos de actualizar nuestros proyectos de Visual Studio 2008 a Visual Studio 2010. Todos nuestros ensambles fueron firmados con un certificado de firma de código de Verisign . Desde la actualización, recibimos continuamente el siguiente error:
No se puede importar el siguiente archivo de clave: companyname.pfx. El archivo de clave puede estar protegido con contraseña. Para corregir esto, intente volver a importar el certificado o instalarlo manualmente en el CSP de nombre seguro con el siguiente nombre de contenedor de clave: VS_KEY_3E185446540E7F7A
Esto sucede en algunas máquinas de desarrollo y no en otras. Algunos métodos utilizados para solucionar esto que funcionaron algunas veces incluyen:
- Reinstale el archivo de clave desde el Explorador de Windows (haga clic con el botón derecho en el archivo PFX y haga clic en Instalar)
- La instalación de Visual Studio 2010 en una máquina nueva por primera vez le solicita la contraseña la primera vez que abre el proyecto, y luego funciona. En las máquinas actualizadas desde Visual Studio 2008, no obtiene esta opción.
Intenté usar la utilidad SN.EXE (Strong Name Tool) para registrar la clave con Strong Name CSP como sugiere el mensaje de error, pero cada vez que ejecuto la herramienta con alguna opción usando la versión que vino con Visual Studio 2010, SN .EXE solo enumera sus argumentos de línea de comando en lugar de hacer cualquier cosa. Esto sucede independientemente de los argumentos que proporcione.
¿Por qué sucede esto y cuáles son los pasos claros para solucionarlo? Estoy a punto de renunciar a las instalaciones de ClickOnce y la firma de código de Microsoft.
He descubierto una solución que te ayuda a poder construir con éxito en un entorno de múltiples desarrolladores:
En lugar de cambiar la contraseña (lo que hace que se cambie el .pfx ), vuelva a seleccionar el archivo .pfx del cuadro combinado. Esto invoca el diálogo de contraseña. Después de ingresar la contraseña, el proyecto se compilará correctamente. Cada desarrollador puede hacer esto en su máquina local sin modificar realmente el archivo .pfx.
Todavía tengo problemas para que se firmen ensamblados en nuestra máquina del servidor de compilación. Recibo el mismo error, sin embargo, el uso del método sn.exe -i no soluciona el problema para el servidor de compilación.
fuente
Tuve el mismo problema y eliminar la tienda y leer no funcionó. Tuve que hacer lo siguiente.
Obtenga una copia de OpenSSL . Está disponible para Windows . O use una caja de Linux, ya que casi todos la tienen.
Ejecute lo siguiente para exportar a un archivo de clave:
Luego, en las propiedades del proyecto, puede usar el archivo PFX.
fuente
¡Hablé muy pronto! Reconstruir devolvió los errores al juego ...
Encontré que esto funciona: haga clic derecho en el Explorador de soluciones y excluirlo del proyecto. Haga clic en Mostrar todos los archivos , haga clic derecho y ahora inclúyalo nuevamente en el proyecto. Ahora deshacer los cambios pendientes ...
¡Por alguna razón, esto lo resolvió para mí y fue relativamente indoloro!
fuente
Descubrí que en algunos casos deberías intentar eliminar esta clave antes de instalarla. Entonces haga lo siguiente:
sn -d VS_XXXX
sn -i mykey.pfx VS_XXX
fuente
VSCommands 2010 (plugin para Visual Studio) puede solucionar esto automáticamente, simplemente haga clic derecho en error y haga clic en Aplicar corrección en el menú. Puede obtenerlo de la galería de Visual Studio .
fuente
Después de probar todas estas soluciones (y muchas más), descubrí que el problema radica en otro lugar. Para las personas que pasan por la misma miseria que yo después de comprar un certificado, compartiré la solución para mi problema.
Comportamiento
Entiendo que 'signo' aplica un nombre seguro y no un código de autenticación a un archivo DLL o EXE. Esta es la razón por signtool se trabajará en este caso, pero 'signo' en el estudio visual no va a funcionar.
Razón
En el pasado he tenido experiencia con certificados de Verisign. Tienen un
KeySpec=2
certificado en el certificado, que se usa con la funcionalidad 'firmar' en Visual Studio. Estos certificados funcionan bien tanto para Visual Studio como para signtool.Ahora compré certificados de Comodo, que tienen un
KeySpec=1
certificado de firma de código incorrecto . Eso significa que estos certificados funcionan bien con signtool (authenticode) pero no con nombres fuertes (el menú desplegable de signos).Solución
Hay dos formas de resolver este problema:
sn -k [name].snk
. Firme el ensamblaje utilizando el snk y luego use signtool con su certificado de firma de código para firmar el archivo DLL / EXE con la firma de autenticación. Si bien esto parece extraño, por lo que entiendo, esta es una forma correcta de tratar con los certificados, porque los nombres seguros tienen un propósito diferente al de la autenticación (consulte también este enlace para obtener detalles sobre cómo funciona).KeySpec=2
. El procedimiento para esto se detalla aquí .Como quiero usar varios nombres seguros, actualmente uso la opción (1), aunque la opción (2) también funciona.
Para garantizar que esta solución nunca se pierda en el futuro, este es el procedimiento de la solución 2:
KeySpec=1
) a un archivo PFX. Nota: ¡Haga una copia de seguridad de este archivo en una ubicación segura y pruebe si el archivo se puede importar bien en otra máquina si realmente quiere jugar de forma segura!certutil -importPFX -user <pfxfilename> AT_SIGNATURE
Ahora debe tener un conjunto de claves / certificado con
KeySpec=2
. Si es necesario, ahora puede exportar esto a otro archivo PFX utilizando MMC nuevamente.fuente
Para resolver este problema en Visual Studio 2012, hago clic con el botón derecho en el proyecto, propiedades -> "firma", y luego desmarco la opción "Firmar los manifiestos ClickOnce".
fuente
Volví a seleccionar el archivo Clave (pfx) en el cuadro desplegable "Elegir un archivo de clave de nombre seguro", luego proporcioné la contraseña en la ventana emergente "INTRODUCIR CONTRASEÑA". Guarde mi proyecto y lo hice rebuild.build tuvo éxito.
Guarda tu proyecto y haz una reconstrucción.
Si aparece el mensaje de error: "Se intentó hacer referencia a un token que no existe", simplemente ignórelo y continúe con los pasos a continuación.
Haga clic en el botón "Cambiar contraseña":
Ingrese la contraseña original en los tres cuadros y haga clic en Aceptar. Si desea cambiar su contraseña (o si su contraseña anterior no cumple con los requisitos de complejidad), puede hacerlo ahora.
Guarda tu proyecto y haz una reconstrucción.
Más información..
fuente
Como solución alternativa, intenté ejecutar Visual Studio 2010 como administrador, y funcionó para mí.
Espero que esto ayude.
fuente
Como autor original de la solución del informe de error de conexión, hay DOS variantes de este mensaje (descubrí más adelante)
Para una variante, usa sn.exe (generalmente si está haciendo un nombre seguro) para importar la clave al almacén de nombres seguros.
La otra variante para la que usa certmgr para importar es cuando está firmando códigos para cosas como la implementación de hacer clic una vez (tenga en cuenta que puede usar el mismo certificado para ambos fines).
Espero que esto ayude.
fuente
Nada funcionó para mí, pero luego fui y busqué en el administrador de certificados (mmc.exe). El certificado no se importó en la tienda personal, así que lo importé manualmente y luego el proyecto se compiló.
Consulte Firma de manifiesto de ClickOnce y Firma de ensamblaje de nombre seguro mediante la página de firma del Diseñador de proyectos de Visual Studio, Firmando ensamblajes .
fuente
Volver a seleccionar el archivo de clave en un cuadro combinado e ingresar la contraseña nos ayuda en esto.
Pero es necesario hacerlo cada vez que cambia el archivo de clave y parece que no está bien.
fuente
Tuve el mismo problema después de mover mi instalación de Windows a un SSD . Ninguna de las otras soluciones funcionó para mí.
Mi solución fue abrir el archivo del proyecto en el Bloc de notas y eliminar todas las referencias a las teclas PFX. Una vez que se guarda el archivo, abra la solución en Visual Studio. Vaya al proyecto -> Propiedades -> Firma. No debería ver ninguna clave en el cuadro combinado 'elegir el archivo de clave de nombre seguro'. En el cuadro combinado, navegue hasta la clave, selecciónela y su proyecto ahora se puede construir.
fuente
Mi problema era que el controlador de compilación TFS se estaba ejecutando como un servicio de red y, por alguna razón, no entendía por qué no se usaban los certificados del servicio Host de compilación de Visual Studio. Cambié la identidad del servicio Visual Studio Build a algo más manejable, me aseguré de que tuviera derechos en el servidor TFS y agregué manualmente los certificados usando la MMC.
El problema también era que MSBuild no puede agregar los certificados protegidos por contraseña a la tienda.
fuente
Tuve un problema similar, pero después de seleccionar el pfx en un "ComboBox de archivo de clave de nombre seguro" y escribir la contraseña, aún recibí un error similar (sin la parte del nombre del contenedor):
Además, el panel de información del certificado "Firmar los manifiestos de ClickOnce" no se rellenó.
Hice "Seleccionar del archivo ..." en mi pfx, y resolvió el problema.
fuente
Todos los métodos descritos aquí no me ayudaron. Pero cuando eliminé el archivo * .pfx de mi proyecto y lo agregué a la firma del ensamblado nuevamente, ¡construí mi proyecto sin ningún error! No puedo explicar por qué. Pero funcionó para mí.
fuente
De acuerdo, esto funcionó para mí. Abra la solución / proyecto anterior como administrador en Visual Studio 2010 y abra la solución / proyecto nuevo o copiado. Como administrador, elimine el archivo pfk copiado en la nueva solución / proyecto de Visual Studio 2010, vaya a las propiedades del proyecto y desactívelo.
Con ambos proyectos abiertos, copie y pegue en el nuevo. Vaya a las propiedades del proyecto y seleccione Construir. Abrí y cerré Visual Studio y también, después de eliminarlo del nuevo proyecto, lo construí antes de copiarlo del proyecto anterior y seleccionarlo. Recibí el error al principio de esta publicación cuando copié el proyecto e intenté compilarlo.
fuente
En mi caso, el servicio de compilación no usaba la misma cuenta de usuario con la que importé la clave
sn.exe
.Después de cambiar la cuenta a mi cuenta de administrador, todo funciona bien.
fuente
Esto resolvió mi problema: abra su proyecto VS
Haga doble clic en Package.appxmanifest
Vaya a la pestaña Empaquetado
haga clic en elegir certificado
haga clic en configurar certificado
seleccione del archivo y use example.pfx esa unidad o cualquier otra cosa creada
fuente
Resolví este problema por mí mismo cambiando la siguiente línea en el archivo .csproj del proyecto de Visual Studio:
Esto arrojó el error 'no se puede importar':
Cambiar el valor a falso hizo que el error desapareciera.
fuente
Tengo el mismo error. En mi caso, probé todo lo anterior, pero no pude obtener el resultado.
Finalmente me di cuenta de que en mi caso, la razón del error fue que la contraseña del certificado no se ingresó o ingresó incorrectamente. El error desapareció cuando ingresé la contraseña dinámicamente correctamente. exitoso
fuente
Desafortunadamente, ningún enfoque mencionado aquí funcionó para mí. Tengo que registrar un par de PFX en un contenedor acoplable y necesito pasar la contraseña a través de la línea de comandos.
Así que volví a desarrollar el
sn.exe -i <infile> <container>
comando en C # usando RSACryptoServiceProvider . La fuente y la aplicación están en GitHub en el proyecto SnInstallPfx .La aplicación SnInstallPfx acepta una clave PFX y su contraseña. Calcula el nombre del contenedor de claves (VS_KEY_ *) automáticamente (tomado del código fuente de MSBuild) y lo instala en el nombre seguro CSP.
Uso:
fuente
Para quién está usando los corredores de GitLab:
./gitlab-runner.exe install --user ".\ENTER-YOUR-USERNAME" --password "ENTER-YOUR-PASSWORD"
(tuve que detener y desinstalar primero)sn -i certificate.pfx VS_KEY_C***6
el nombre del contenedor se sugiere en la salida de trabajo fallida en GitLab (salida de msbuild)
fuente