Mi caso es que tenemos un programa (exe) que iniciará otros programas si se encuentra en una carpeta en particular. Quiero asegurarme de que solo inicie programas firmados con nuestro certificado corporativo (aprobado por Verisign, etc.). Básicamente, solo iniciará los programas con el mismo certificado que él. No quiero enviar el certificado en sí.¿Cómo verificar programáticamente que un ensamble esté firmado con un certificado específico?
He estado buscando en la web y en el espacio de nombres del sistema y no he encontrado un ejemplo claro que lea los datos del certificado de un archivo y también lo valide, y pueda verificar contra otro archivo. Lo más cerca que he encontrado es Signtool y tener esta verificación en un exe por separado es una especie de punto menos. Sé que las cuestiones de Nombramiento fuerte no son útiles porque un archivo firmado digitalmente es diferente y se explica de manera útil aquí (http://blog.codingoutloud.com/2010/03/13/three-ways-to-tell-whether-an-assembly- dl-es-strong-named /) También hay otros ejemplos en SO que muestran el cifrado y la verificación de los datos sin procesar, pero no un ensamblaje donde se empaquetan juntos de alguna manera.
¿Alguna idea o sugerencia?
¿Por qué el voto a favor? _Leer_ la publicación de blog a la que me he vinculado, y verá que de hecho muestra cómo los enlaces de nomenclatura fuerte se unen a la firma de ensamblaje, y que _puede usar eso para verificar si un ensamblado ha sido firmado con un certificado específico. – KristoferA
Sí, esto funciona bien y responde directamente a mi pregunta sobre la verificación de la firma sin lanzar un producto (aunque exhaustivo). Sería bueno si esto pudiera leer los detalles sobre el certificado de cualquier archivo firmado con Signtool y no solo ensamblados .NET. (Por ejemplo, instale Shield setup.exe y MSIs, etc.) Estaba buscando en la clase API de Windows pero no pude encontrar nada para decir con quién estaba firmado. Esto es lo suficientemente bueno sin embargo. Probablemente no necesite verificar al propietario del certificado, si un cliente ha aprobado el certificado o su autoridad, de todos modos está en su cabeza. – Aaron
@Aaron su comprensión de los certificados es defectuosa. Si no valida el certificado, deseche sus cheques y no se moleste en implementarlos. No hay seguridad es mejor que seguridad rota ya que este último da una falsa sensación de seguridad. –