HTTPS באמצעות אישור בחתימה עצמית באביב אתחול

1. סקירה כללית

במדריך זה אנו נראה כיצד להפעיל HTTPS באביב אתחול. לצורך כך, ניצור גם אישור בחתימה עצמית ונגדיר יישום פשוט.

לפרטים נוספים על פרויקטים של Spring Boot, אנו יכולים להתייחס לחבורה של משאבים כאן.

2. יצירת תעודה בחתימה עצמית

לפני תחילת העבודה ניצור אישור בחתימה עצמית. נשתמש באחד מתבניות האישור הבאות:

  • PKCS12: תקני הצפנה של מפתח ציבורי הוא פורמט מוגן בסיסמה שיכול להכיל מספר אישורים ומפתחות; זה פורמט משומש בתעשייה
  • JKS: Java KeyStore דומה ל- PKCS12; זהו פורמט קנייני ומוגבל לסביבת Java.

אנו יכולים להשתמש בכלי keytool או OpenSSL כדי ליצור את האישורים משורת הפקודה. Keytool נשלח עם Java Runtime Environment וניתן להוריד את OpenSSL מכאן.

בואו נשתמש בכלי keytool להפגנה שלנו.

2.1. יצירת קייסטור

כעת ניצור קבוצה של מפתחות הצפנה ונאחסן אותה בחנות מפתחות.

אנו יכולים להשתמש בפקודה הבאה כדי ליצור את פורמט חנות המפתח PKCS12 שלנו:

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

אנו יכולים לאחסן כמה שיותר מספרים של צמד מפתחות באותה חנות מפתחות, שכל אחד מהם מזוהה בכינוי ייחודי.

ליצירת מאגר המפתחות שלנו בפורמט JKS, נוכל להשתמש בפקודה הבאה:

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

מומלץ להשתמש בפורמט PKCS12 שהוא פורמט סטנדרטי בתעשייה. אז במקרה שכבר יש לנו חנות מקשים של JKS, נוכל להמיר אותה לפורמט PKCS12 באמצעות הפקודה הבאה:

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

נצטרך לספק את סיסמת מאגר המפתחות וגם להגדיר סיסמת אחסון מפתחות חדשה. כינוי הכינוי וסיסמת המפתח יידרשו בהמשך.

3. הפעלת HTTPS באביב אתחול

Spring Boot מספק סט של הצהרה מאפייני server.ssl. *. נשתמש במאפיינים אלה ביישום הדוגמה שלנו להגדרת תצורה של HTTPS.

נתחיל מיישום פשוט של Spring Boot עם Spring Security המכיל דף קבלת פנים שמטופל על ידי "/ברוך הבאנקודת קצה.

לאחר מכן נעתיק את הקובץ בשם "baeldung.p12 ″ יצר int את הצעד הקודם לתוך "src / main / resources / keystoreספריה.

3.1. קביעת תצורה של מאפייני SSL

כעת, נגדיר את המאפיינים הקשורים ל- SSL:

# הפורמט ששימש למפתח המפתח. ניתן להגדיר את זה ל- JKS במקרה שמדובר בשרת קבצים של JKS. סיסמה המשמשת ליצירת שרת האישורים .ssl.key-store-password = סיסמה # הכינוי שמופה לשרת האישורים .ssl.key-alias = baeldung

מכיוון שאנו משתמשים ביישום שמאפשר אבטחת אביב, בואו להגדיר אותו כך שהוא יקבל רק בקשות HTTPS:

server.ssl.enabled = נכון

4. הפעלת כתובת URL של HTTPS

כעת, לאחר שהפעלנו HTTPS ביישום שלנו, בואו נעבור ללקוח ובואו נבדוק כיצד להפעיל נקודת קצה של HTTPS עם האישור בחתימה עצמית.

ראשית, עלינו ליצור חנות אמון. מאחר שיצרנו קובץ PKCS12, אנו יכולים להשתמש בו כמו בחנות האמון. בואו נגדיר מאפיינים חדשים לפרטי חנות האמון:

#trust מיקום חנות trust.store = classpath: keystore / baeldung.p12 #trust store password trust.store.password = סיסמה

עכשיו אנחנו צריכים להכין SSLContext עם חנות האמון וליצור התאמה אישית RestTemplate:

RestTemplate restTemplate () זורק חריג {SSLContext sslContext = SSLContextBuilder חדש () .loadTrustMaterial (trustStore.getURL (), trustStorePassword.toCharArray ()) .build (); SSLConnectionSocketFactory socketFactory = SSLConnectionSocketFactory חדש (sslContext); HttpClient httpClient = HttpClients.custom () .setSSLSocketFactory (socketFactory) .build (); HttpComponentsClientHttpRequestFactory מפעל = HttpComponentsClientHttpRequestFactory חדש (httpClient); להחזיר RestTemplate חדש (מפעל); }

לצורך ההדגמה, בואו נוודא אביב ביטחון מאפשר בקשות נכנסות:

הגדרת חלל מוגן מוגדרת (HttpSecurity http) זורקת Exception {http.authorizeRequests () .antMatchers ("/ **") .permitAll (); }

לבסוף נוכל להתקשר לנקודת הקצה של HTTPS:

@Test הציבור בטל כאשר GETanHTTPSResource_thenCorrectResponse () זורק Exception {ResponseEntity response = restTemplate (). GetForEntity (WELCOME_URL, String.class, Collections.emptyMap ()); assertEquals ("", response.getBody ()); assertEquals (HttpStatus.OK, response.getStatusCode ()); }

5. מסקנה

במדריך למדנו לראשונה כיצד ליצור אישור בחתימה עצמית כדי לאפשר HTTPS ביישום Spring Boot. בנוסף, הראינו כיצד להפעיל נקודת קצה המותאמת ל- HTTPS.

כמו תמיד, אנו יכולים למצוא את קוד המקור השלם במאגר GitHub.

לבסוף, כדי להפעיל את דוגמת הקוד, עלינו לבטל את ההערה למאפיין המחלקה ההתחלתי הבא ב- pom.xml:

com.baeldung.ssl.HttpsEnabledApplication

$config[zx-auto] not found$config[zx-overlay] not found