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