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.