Validación de certificado de firma de código por Java

1

A pesar de varias búsquedas en la web, no puedo encontrar una explicación precisa sobre la validación de certificados de firma de código por parte de Java.

Me pregunto si el certificado de firma de código (el "certificado final") ya debe estar en el almacén de confianza de Java del cliente, o si el cliente solo necesita la CA raíz (y su cadena) en el almacén de confianza de Java para validarlo.

No puedo encontrar documentos Java que sean realmente explícitos al respecto, por lo que necesito detalles técnicos sobre la validación del certificado de firma de código (de donde se obtiene el certificado, lo que se necesita), no sobre el proceso de firma.

    
pregunta crypto-learner 22.09.2015 - 14:23
fuente

1 respuesta

1

Si un jar está firmado correctamente, el verificador (a menudo, pero no necesariamente, un cliente de red) necesita solo la raíz, y si usa una CA pública, esa raíz generalmente ya estará allí.

Específicamente, se supone que KeyStore privateKeyEntry debe contener la cadena de certificados completa (aunque si el certificado es autofirmado, la cadena es solo ese certificado). Cuando jarsigner firma con esa clave privada (por alias) crea una firma separada, PKCS # 7 SignedData que incluye la cadena cert. Para el caso donde el almacén de claves no puede proporcionar la cadena, jarsigner ya que Java7 tiene la opción -certchain para agregarlos, consulte enlace .

Para verificar una firma jar (o cualquier firma que contenga una cadena de certificados), Java puede utilizar cualquier cert en la cadena que se encuentra en el almacén de confianza local. Dado que las raíces existen con el propósito de concentrar la confianza para todas las cadenas debajo de ellas, es convencional y más fácil tener solo raíces en el almacén de confianza local. Y JRE incluye un cacerts predeterminado que contiene casi 100 raíces para CA públicas "conocidas" como Verisign y GoDaddy.

jarsigner -verify -verbose -certs [-keystore if_not_default] test.jar le mostrará la cadena de certificados utilizada y marcará los certificados (s) que se encuentran en el almacén de confianza con su alias entre paréntesis a la derecha.

    
respondido por el dave_thompson_085 22.09.2015 - 23:03
fuente