2010-11-14 16 views
15

Normalmente no me molesto en firmar mis ensamblados de .NET, así que no sé mucho más allá de su mecánica básica. Para un proyecto pequeño en el que estoy trabajando, era necesario firmar y creé una nueva clave, protegida con una contraseña.¿Dónde se almacena la contraseña de la clave de nombre seguro?

que esperaba que se le solicite la contraseña en algún momento en el que volver a compilar el montaje, pero nunca he necesitado para entrar en cualquier lugar después de crear el archivo de claves. Esto parece frustrar el propósito de la contraseña para proteger la clave en primer lugar.

Imagino que la contraseña está en caché en alguna parte, pero ¿dónde? ¿Está en algún tipo de almacenamiento privado? Si le doy a alguien más mi directorio completo de la solución con el archivo clave, ¿se les pedirá la contraseña que ingresé, o podrán firmar el ensamblaje sin la contraseña?

Hay un montón de artículos en Internet sobre fuertes claves de identificación y el uso de ellos, pero por alguna extraña razón que todos los acabados brillantes sobre cómo la contraseña se utiliza realmente por Visual Studio.

Actualización: Reiniciar Visual Studio (y Windows) no tiene ningún efecto, por lo que el almacenamiento en caché parece ser persistente. Eliminar el archivo .suo no cambia el hecho de que no se necesita una contraseña para firmar el ensamblaje.

+0

¿Cómo se crea el archivo protegido con contraseña? –

+0

@Lasse: Visual Studio tiene la opción de proteger con contraseña la clave cuando la creas. Verifiqué que está protegido abriendo el archivo .pfx. – Thorarin

+0

Gracias, no lo sabía. –

Respuesta

11

Consulte la documentación del Create Strong Name Key Dialog Box.

La información de la contraseña se almacena en la base de datos de almacenamiento criptográfico de su computadora.

Más información en CLR Inside Out: Using Strong Name Signatures.

Puede instalar la clave privada en un contenedor de claves utilizando listas de control de acceso restrictivo (ACL) para evitar el acceso no autorizado al contenedor de claves. Alternativamente, puede almacenar la clave privada en una tarjeta inteligente u otro dispositivo de hardware por separado. La herramienta sn.exe le permite usar un proveedor de servicios criptográficos (CSP) diferente para la firma. Eche un vistazo a la opción -c en la documentación de sn.exe.

+1

Interesante ... Al principio, no pude encontrar ninguna referencia a lo que es esta "base de datos de almacenamiento criptográfico". Desde entonces descubrí que puedo usar 'sn.exe' para agregar y eliminar claves desde/hacia Strong Name CSP. Un problema que todavía tengo es que Visual Studio parece generar un nombre de contenedor aleatorio para la clave, por lo que no sé cómo eliminar el asociado a mi proyecto. No puede usar sn.exe para listar todos los nombres de los contenedores. – Thorarin

+1

Busque en% AppData% \ Microsoft \ Crypto donde el CSP predeterminado (proveedor de almacenamiento criptográfico) almacena elementos específicos del usuario, o% AllUsersProfile% \ Microsoft \ Crypto para las claves de toda la máquina. – sisve

+1

Nivel bastante bajo, pero logré encontrar la clave (porque era la única). Probé esta herramienta llamada KeyPal, pero parece que ya no funciona. Gracias por la ayuda hasta ahora :) – Thorarin

Cuestiones relacionadas