Se un jar è firmato correttamente, il verificatore (spesso ma non necessariamente un client di rete) ha bisogno solo della root, e se usi una CA pubblica quella root sarà già presente in quel momento.
In particolare, un KeyStore privateKeyEntry deve contenere la catena completa di cert (sebbene se la cert sia autofirmata la catena è solo quella cert). Quando jarsigner
firma usando quella chiave privata (per alias) crea una PKCS # 7 SignedData firma separata, che include la catena di certificazione. Nel caso in cui il keystore non possa fornire la catena, jarsigner
poiché Java7 ha l'opzione -certchain
per aggiungerli, vedere link .
Per verificare una firma del contenitore (o qualsiasi firma contenente una catena di certificati) Java può effettivamente usare qualsiasi certificato nella catena trovata nel truststore locale. Poiché le radici esistono allo scopo di concentrare la fiducia per tutte le catene sotto di esse, è convenzionale e più semplice avere solo le radici nel truststore locale. E JRE include un cacerts
predefinito contenente quasi 100 radici per le CA pubbliche "ben note" come Verisign e GoDaddy.
jarsigner -verify -verbose -certs [-keystore if_not_default] test.jar
ti mostrerà la catena di certificati utilizzata, e contrassegna i certificati (s?) trovati nel truststore con il suo alias tra parentesi alla destra.