Oltre a ciò che @Tom Leek ha detto sull'API del percorso di certificazione, sembra che tu stia parlando di "certificati TLS", che presumo implichi che potresti utilizzare il tuo certificato X.509 nell'ambito di TLS.
Per fare ciò come parte dello stack TLS di Java (JSSE), puoi utilizzare l'infrastruttura X509TrustManager
esistente. Devo ammettere che non sono sicuro che verifichi con RFC 5280 o RFC 3280 , la sua specifica precedente (probabilmente dipende dalla versione di Java che stai utilizzando). Sto assumendo Sun / Oracle JRE 6, ma l'implementazione varierà a seconda del provider di sicurezza installati.
Questo è un wrapper in cima all'API del percorso di certificazione già menzionato.
Ecco un esempio che inizializza un TrustManagerFactory
con null
: utilizzerà valori predefiniti per gli ancoraggi attendibili . Quanto segue ti darà i gestori della fiducia:
TrustManagerFactory factory = TrustManagerFactory.getInstance("PKIX");
factory.init((KeyStore)null);
TrustManager[] trustManagers = factory.getTrustManagers();
I metodi check*
del gestore di fiducia generano un CertificateException
quando qualcosa è fallito. Controlla anche la validità della data.
I trust manager possono essere utilizzati per inizializzare un SSLContext
, che può quindi essere utilizzato per inizializzare un SSLSocket
(tramite la fabbrica) o SSLEngine
. Per impostazione predefinita, SSLSocketFactory
utilizza il SSLContext
predefinito, inizializzato con un numero di valori predefiniti .
Puoi anche creare il tuo TrustManager
se devi controllare ulteriori estensioni per la tua applicazione e / o rilassare determinate regole.
(Ad esempio, ho scritto una piccola libreria per racchiudere gestori di fondi esistenti e accetta altre forme di certificati, come i certificati proxy ( RFC 3820 - non 3280).)
Per verificare estensioni specifiche, ti consigliamo di utilizzare BouncyCastle , poiché fornisce strutture di dati per gestire ASN.1 e così via.