2009-06-25 13 views
6

Estoy firmando un programa EXE con un certificado emitido por una CA de confianza. Estoy usando signtool.exe desde el SDK de Windows v6.0a.Error de SignTool: ISignedCode :: Signo de error devuelto: 0x80092006

El certificado se encuentra en la tienda de informática y se encuentra en la carpeta "Contactos".

Mi línea de comandos es:

sign /sm /n "My company" /d MyProductName /du http://my.url.com "C:\Setup\setup.exe" 

Cuando ejecuto este comando en la línea de comandos, funciona bien. Cuando ejecuto este comando en un proceso por lotes (llamado por un servicio web, por lo que no hay ningún usuario conectado cuando se ejecuta la orden), se produce el siguiente error:

Número de errores: 1 SignTool error: ISignedCode :: Signo devuelto error: 0x80092006 No se especificó ningún proveedor para la tienda u objeto.

¿Alguien puede ayudarnos con esto?

Respuesta

1

He [solo ahora, solo una vez] experimentado la misma condición (inmediatamente después de una invocación exitosa con los mismos parámetros excepto en un archivo MSI diferente). La reubicación tuvo éxito en la próxima ejecución del script de compilación. También utilizando, como si

/sm /d /du
No usar
/n
Adicionalmente usando
/t

2

El problema es que su proceso de servicio no puede tener acceso a su clave privada, que se almacena en su cuenta.

Inicio de sesión en la cuenta que ejecuta el servicio web e importar la clave privada en un contenedor de claves. Esto se puede hacer, por ejemplo, mediante el strong name tool (sn.exe) de .NET:

sn -i MyCertificate.pfx MyCodeSigningKey 

Ahora, cambiar su escritura de la estructura a utilizar este contenedor de claves:

signtool sign /sm /a /v /csp "Microsoft Strong Cryptographic Provider" /kc MyCodeSigningKey <other parameters...> 

/kc especifica el contenedor de claves. /kc requiere que especifique el "CSP" (Proveedor de servicios criptográficos) a través del interruptor /csp. El "Proveedor de criptografía fuerte de Microsoft" es el proveedor predeterminado utilizado por sn.

+0

Pregunta ingenua: ¿no debería almacenarse la clave privada en la tienda de la computadora, ya que está usando/sm arriba? Estoy luchando con lo mismo y espero evitar poner otra herramienta (sn.exe) en una máquina de producción. – DougN

+0

El certificado se almacena en la tienda de máquinas, pero no en la clave privada. sn es parte de la instalación .Net estándar. – oefe

1

Para ahorrarle tiempo a alguien, tuve este problema. Resultó que mi certificado se corrompió de alguna manera. Después de eliminarlo del almacén de certificados y volver a importarlo, el problema desapareció. Sugeriría crear todo el archivo PFX o copiarlo desde una ubicación en la que sepa que no está dañado.

0

Tuve este problema también. Todavía no estoy seguro de qué fue lo que lo causó, ya que nunca tuve tiempo de averiguarlo. Lo que encontré fue que la clave privada desapareció?

Hice lo que coder_2007 sugiere y funcionó para una compilación automatizada completa pero la siguiente daría el mismo error. Así que algo en mi servidor de compilación rompió la clave privada después de una compilación completa (incluidas varias aplicaciones firmadas).

Lo que finalmente terminé haciendo fue, inmediatamente después de importar el PFX, ir al %allusersprofile%\Microsoft\Crypto\RSA\MachineKeys y escribir proteger el último archivo (el que coincide con el momento de la importación).

0

Esto puede suceder si su contraseña de Windows se cambia después de que se instaló el certificado. Cambiar la contraseña a lo que era lo arreglará. Si no puede hacer eso, tendrá que volver a instalar el certificado.

Cuestiones relacionadas