Szerezzen be megbízható tanúsítványokat a Java-ban

Java Top

Most jelentettem be az újat Tanulj tavaszt tanfolyam, amelynek középpontjában az 5. tavasz és a tavaszi bakancs 2 alapjai állnak:

>> ELLENŐRIZZE A FOLYAMATOT

1. Áttekintés

Ebben a gyors bemutatóban megtanulhatjuk, hogyan kell gyors és praktikus példákon keresztül elolvasni a Java megbízható tanúsítványainak listáját.

2. A KeyStore

A Java a megbízható tanúsítványokat egy speciális fájlban tárolja kaktuszok amely a Java telepítési mappánkban lakik.

Kezdjük azzal, hogy elolvassuk ezt a fájlt, és betöltjük a KeyStore:

privát KeyStore loadKeyStore () {String relativeCacertsPath = "/lib/security/cacerts".replace("/", File.separator); Karakterlánc fájlnév = System.getProperty ("java.home") + relatívCacertsPath; A FileInputStream = új FileInputStream (fájlnév); KeyStore kulcstár = KeyStore.getInstance (KeyStore.getDefaultType ()); Karakterlánc jelszó = "changeit"; keystore.load (is, jelszó.toCharArray ()); return kulcstár; }

Ehhez az alapértelmezett jelszó KeyStore van "változtasd meg", de más is lehet, ha korábban megváltoztatták a rendszerünkben.

A betöltés után a KeyStore megtartja megbízható tanúsítványainkat, majd megtudjuk, hogyan olvassuk el őket.

3. Tanúsítványok elolvasása megadottól KeyStore

Használni fogjuk a PKIXParaméterek osztály, amely a KeyStore mint konstruktor paraméter:

@Test public void whenLoadingCacertsKeyStore_thenCertificatesArePresent () {KeyStore keyStore = loadKeyStore (); PKIXParameters params = új PKIXParameters (keyStore); Set trustAnchors = params.getTrustAnchors (); Listázza a tanúsítványokat = trustAnchors.stream () .map (TrustAnchor :: getTrustedCert) .collect (Collectors.toList ()); assertFalse (certificate.isEmpty ()); }

A PKIXParaméterek osztály általában egy tanúsítvány érvényesítésére szolgál, de a példánkban egyszerűen arra használtuk, hogy a tanúsítványokat a mi tanúsítványunkból lekérdezzük KeyStore.

A .példány létrehozásakor PKIXParametrs, összeállítja a TrustAnchor amely tartalmazza a megbízható tanúsítványokat KeyStore.

A TrustAnchor példány egyszerűen egy megbízható tanúsítványt képvisel.

4. Tanúsítványok olvasása alapértelmezés szerint KeyStore

A rendszerünkben található megbízható tanúsítványok listáját is elérhetjük használni a TrustManagerFactory osztály és inicializálása a nélkül KeyStore, amely az alapértelmezettet fogja használni KeyStore.

Ha nem adjuk meg a KeyStore kifejezetten ugyanaz az előző fejezet lesz használva alapértelmezés szerint:

@Test public void whenLoadingDefaultKeyStore_thenCertificatesArePresent () {TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance (TrustManagerFactory.getDefaultAlgorithm ()); trustManagerFactory.init ((KeyStore) null); List trustManagers = Arrays.asList (trustManagerFactory.getTrustManagers ()); Listázza a tanúsítványokat = trustManagers.stream () .filter (X509TrustManager.class :: isInstance) .map (X509TrustManager.class :: cast) .map (trustManager -> Arrays.asList (trustManager.getAcceptedIssuers ())) .flatMap (Gyűjtemény: : stream) .collect (Collectors.toList ()); assertFalse (certificate.isEmpty ()); }

A fenti példában használtuk X509TrustManager, amely egy speciális TrustManager SSL-kapcsolat távoli részének hitelesítésére használják.

Ne feledje, hogy ez a viselkedés függhet a JDK konkrét megvalósításától, mivel a specifikáció nem határozza meg, hogy mi történjen abban az esetben, ha benne()KeyStore paraméter az nulla.

5. Tanúsító álnevek

A tanúsítvány alias egyszerűen a Húr amely egyedileg azonosítja a tanúsítványt.

A Java által importált alapértelmezett tanúsítványok között van egy jól ismert tanúsítvány is, amelyet a nyilvános internetes domain-regisztrátor, a GoDaddy adott ki, és amelyet tesztjeink során használunk:

Karakterlánc GODADDY_CA_ALIAS = "godaddyrootg2ca [jdk]";

Lássuk, hogyan olvashatjuk el az összes tanúsító álnevet KeyStore:

@Test public void whenLoadingKeyStore_thenGoDaddyCALabelIsPresent () {KeyStore keyStore = loadKeyStore (); Számlálás aliasEnumeration = keyStore.aliases (); Lista álnevek = Gyűjtemények.lista (aliasEnumeration); assertTrue (aliases.contains (GODADDY_CA_ALIAS)); }

A következő példában meglátjuk, hogyan lehet egy tanúsítványt az álnevével lekérni:

@Test public void whenLoadingKeyStore_thenGoDaddyCertificateIsPresent () {KeyStore keyStore = loadKeyStore (); Tanúsítvány goDaddyCertificate = keyStore.getCertificate (GODADDY_CA_ALIAS); assertNotNull (goDaddyCertificate); }

6. Következtetés

Ebben a rövid cikkben gyors és praktikus példákon keresztül megvizsgáltuk a megbízható tanúsítványok Java-ba történő felsorolásának különböző módjait.

Mint mindig, a kódrészletek is megtalálhatók a GitHubon.

Java alsó

Most jelentettem be az újat Tanulj tavaszt tanfolyam, amelynek középpontjában az 5. tavasz és a tavaszi bakancs 2 alapjai állnak:

>> ELLENŐRIZZE A FOLYAMATOT