HTTPS önaláírt tanúsítvánnyal a tavaszi indításkor

1. Áttekintés

Ebben az oktatóanyagban bemutatjuk, hogyan engedélyezhetjük a HTTPS-t a Spring Boot-ban. Erre a célra létrehozunk egy önaláírt tanúsítványt és konfigurálunk egy egyszerű alkalmazást.

A Spring Boot projektekről itt találhatunk egy csomó forrást.

2. Önaláírt tanúsítvány létrehozása

A kezdés előtt létrehozunk egy önaláírt tanúsítványt. A következő tanúsítványformátumok egyikét fogjuk használni:

  • PKCS12: A nyilvános kulcsú titkosítási szabványok egy jelszóval védett formátum, amely több tanúsítványt és kulcsot tartalmazhat; az egész iparágban használt formátum
  • JKS: A Java KeyStore hasonló a PKCS12-hez; ez egy saját formátum, és csak a Java környezetre korlátozódik.

A parancssorból a tanúsítványok előállításához használhatunk kulcseszközöket vagy OpenSSL eszközöket is. A Keytoolhoz Java Runtime Environment tartozik, és az OpenSSL innen letölthető.

Használjuk a kulcstartót a bemutatónkhoz.

2.1. Kulcstár létrehozása

Most létrehozunk egy kriptográfiai kulcs készletet, amelyet egy kulcstárolóban tárolunk.

A következő paranccsal generálhatjuk a PKCS12 kulcstárformátumunkat:

keytool -genkeypair -alias baeldung -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore baeldung.p12 -validity 3650

Annyi kulcspárt tárolhatunk ugyanabban a kulcstárolóban, mindegyiket egyedi álnévvel azonosítva.

A kulcstárunk JKS formátumban történő előállításához a következő parancsot használhatjuk:

keytool -genkeypair -alias baeldung -keyalg RSA -keysize 2048 -keystore baeldung.jks -validity 3650

Javasoljuk a PKCS12 formátum használatát, amely iparági szabvány. Tehát, ha már rendelkezünk JKS kulcstárral, akkor a következő paranccsal konvertálhatjuk PKCS12 formátumra:

keytool -importkeystore -srckeystore baeldung.jks -destkeystore baeldung.p12 -deststoretype pkcs12

Meg kell adnunk a forrás kulcstár jelszavát, és be kell állítanunk egy új kulcstár jelszót is. Az álnévre és a kulcstár jelszóra később lesz szükség.

3. A HTTPS engedélyezése a tavaszi indításkor

A Spring Boot egy deklaratív készletet tartalmaz server.ssl. * tulajdonságok. Ezeket a tulajdonságokat felhasználjuk a mintaalkalmazásban a HTTPS konfigurálásához.

Egy egyszerű Spring Boot alkalmazásból indulunk ki, a Spring Security alkalmazással, amely egy üdvözlő oldalt tartalmaz, amelyet a/Üdvözöljük”Végpont.

Ezután átmásoljuk a “baeldung.p12 ″ generálva az előző lépést a “src / main / resources / kulcstár" Könyvtár.

3.1. Az SSL tulajdonságainak konfigurálása

Most konfiguráljuk az SSL-hez kapcsolódó tulajdonságokat:

# A kulcstárolóhoz használt formátum. Beállítható JKS-re, ha ez egy JKS fájl: server.ssl.key-store-type = PKCS12 # A szerver tanúsítványt tartalmazó kulcstároló elérési útja.ssl.key-store = classpath: keystore / baeldung.p12 # A jelszó a tanúsítvány létrehozásához.

Mivel a Spring Security kompatibilis alkalmazást használjuk, állítsuk be úgy, hogy csak HTTPS kéréseket fogadjon el:

server.ssl.enabled = true

4. HTTPS URL meghívása

Miután engedélyeztük az alkalmazásunkban a HTTPS-t, lépjünk tovább az ügyfélbe, és vizsgáljuk meg, hogyan hívhatunk meg egy HTTPS-végpontot az önaláírt tanúsítvánnyal.

Először létre kell hoznunk egy bizalmi boltot. Mivel létrehoztunk egy PKCS12 fájlt, ugyanazt használhatjuk, mint a trust store. Határozzunk meg új tulajdonságokat a bizalmi bolt részleteihez:

#trust bolt helye trust.store = classpath: keystore / baeldung.p12 #trust store jelszó trust.store.password = jelszó

Most elő kell készítenünk egy SSLContext a bizalmi tárral, és hozzon létre egy testreszabott RestTemplate:

A RestTemplate a restTemplate () kivételt dob ​​{SSLContext sslContext = new SSLContextBuilder () .loadTrustMaterial (trustStore.getURL (), trustStorePassword.toCharArray ()) .build (); SSLConnectionSocketFactory socketFactory = új SSLConnectionSocketFactory (sslContext); HttpClient httpClient = HttpClients.custom () .setSSLSocketFactory (socketFactory) .build (); HttpComponentsClientHttpRequestFactory gyár = new HttpComponentsClientHttpRequestFactory (httpClient); return new RestTemplate (gyári); }

A bemutató érdekében győződjünk meg róla Tavaszi biztonság engedélyezi a beérkező kéréseket:

védett void configure (HttpSecurity http) dobja a {http.authorizeRequests () .antMatchers ("/ **") .permitAll () kivételeket; }

Végül felhívhatjuk a HTTPS végpontot:

@Test public void, amikor a GETanHTTPSResource_thenCorrectResponse () kivételt dob ​​a {ResponseEntity response = restTemplate (). GetForEntity (WELCOME_URL, String.class, Collections.emptyMap ()); assertEquals ("", response.getBody ()); assertEquals (HttpStatus.OK, response.getStatusCode ()); }

5. Következtetés

Az oktatóanyagban először megtanultuk, hogyan kell létrehozni egy önaláírt tanúsítványt a HTTPS engedélyezéséhez a Spring Boot alkalmazásban. Ezenkívül bemutattuk, hogyan lehet HTTPS-kompatibilis végpontot meghívni.

Mint mindig, a teljes forráskódot a GitHub adattáron találjuk meg.

Végül a kódminta futtatásához törölnünk kell a következő start-class tulajdonság megjegyzését a pom.xml:

com.baeldung.ssl.HttpsEnabledApplication