證書準備
這裡使用 JDK自帶的 keytools 來創建證書
- Server 端證書生成
keytool -genkeypair -alias server -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore codesheepserver.p12 -validity 3800
過程如下:
- Client 端證書生成
keytool -genkeypair -alias client -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore codesheepclient.p12 -validity 3800
過程類似,就不再截圖了
- 分別導出 server端和 client端的 p12證書
keytool -export -alias server -file codesheepserver.crt --keystore codesheepserver.p12 會要求你輸入密碼
keytool -export -alias client -file codesheepclient.crt --keystore codesheepclient.p12
導出的證書在此:
- 配置 Client端信任 Server端的證書
keytool -import -alias server -file codesheepserver.crt -keystore codesheepclient.p12
過程如下:
- 配置 Server端信任 Client端的證書
keytool -import -alias client -file codesheepclient.crt -keystore codesheepserver.p12
過程與上面類似,也不截圖展示了
證書文件準備妥當之後,接下來進行項目代碼級別的配置
Eureka Server SSL配置
我們需要在 Eureka Server的 Spring Boot項目中的 application.yml配置文件裡將上文中生成的證書配到項目中去,即下面這段配置中與 server.ssl相關的部分:
Eureka Client SSL配置
類似地,我們也在 Eureka Client的 Spring Boot項目中的 application.yml配置文件裡將上文中生成的證書配到項目中去:
但注意此處的 ssl.key-store 和 ssl.key-store-password只是我們自定義的屬性,我們需要結合自己編寫的 ssl配置類 EurekaClientHttpsCfg來進行使用,代碼如下:
這段代碼的主要意圖就是通過設置一個 SSLContext用於 Eureka Client訪問 Eureka Server。
實驗驗證
- 啟動 Eureka Server,由於其開啟了 https訪問,因此瀏覽器以非 https方式訪問時就不通了
瀏覽器必須以 https方式訪問註冊中心方可:
- 啟動 Eureka Client後,由於其已經加入了對 https的配置,因此可以驗證通過並且註冊到 Eureka Server註冊中心:
如此一番實踐下來,微服務註冊中心的安全性就更進了一步。
喜歡的小夥伴,點個關注吧,每天分享新的內容!
閱讀更多 程序界小哥 的文章