Szyfrowanie komunikacji przy pomocy SSL jest obecnie standard. Dlatego też dość często pojawia się potrzeba konfiguracji SSL w aplikacjach webowych. W dzisiejszym wpisie zaprezentuję jak łatwa w SpringBoot jest konfiguracja kanału bezpiecznego HTTPS
1. Przykładowa aplikacja
Aby zaprezentować konfigurację SSL w aplikacji SpringBoot posłużę się poniższym przykładem HelloWorld. Po uruchomieniu i wejściu na http://localhost:8080/ możesz zauważyć, że strona nie jest zabezpieczona(mówi już o tym sam protokół http). Po zmianie protokołu na https strona nie otwiera się.
package com.bettercoding.lab; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication public class WebApp { public static void main(String[] args) { SpringApplication.run(WebApp.class, args); } @RestController public static class HelloController { @RequestMapping("/") public String index() { return "Greetings from Spring Boot!"; } } }
2. Konfiguracja SSL w aplikacji SpringBoot
Cała konfiguracja SSL w aplikacji SpringBoot sprowadza się do przygotowania lub wygenerowania keystore’a z kluczem oraz certyfikatem, a następnie skonfigurowania aplikacji aby przy jego pomocy zaszyfrowała ruch sieciowy.
2.1 Wygenerownaie keystore’a/import do keystore
Do wygenerowania certyfikatu możesz użyć narzędzia keytool dostępnego w JDK. Poniższe polecenie pozwala na wygenerowanie pary klucz/certyfikat, oraz zapisanie ich w keystore tmp_keystore.jks.
keytool -genkey -keyalg RSA -alias selfsigned -keystore tmp_keystore.jks -storepass password -validity 360 -keysize 2048
2.2 Konfiguracja aplikacji SpringBoot
Ostatnim krokiem jest skonfigurowanie odpowiednich ustawień w aplikacji. W ty celu pliku application.properties dodaj poniższe wpisy. Oczywiście plik application.properties, to tylko jedna z metod konfiguracji. Więcej na ten temat znajdziesz na https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
server.port=443 server.ssl.key-alias=selfsigned server.ssl.key-password=password server.ssl.key-store=src/main/resources/tmp_keystore.jks server.ssl.key-store-provider=SUN server.ssl.key-store-password=password server.ssl.key-store-type=JKS
Następnie po uruchomieniu aplikacji oraz wejściu na https://localhost:443 możesz sprawdzić, że strona jest poprawnie zabezpieczona za pomocą SSL.
Na zakończenie mam jeszcze jedną prośbę.
Jeśli pomogłem Ci rozwiązać problem, to udostępnij proszę ten post. Dzięki temu będę miał okazję trafić do szerszej grupy odbiorców. Dziękuję
Leave a Reply