Eureka Server啟用 https服務,讓微服務註冊更安全

證書準備

這裡使用 JDK自帶的 keytools 來創建證書

  • Server 端證書生成
keytool -genkeypair -alias server -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore codesheepserver.p12 -validity 3800

過程如下:

Eureka Server啟用 https服務,讓微服務註冊更安全

  • 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 會要求你輸入密碼
Eureka Server啟用 https服務,讓微服務註冊更安全

keytool -export -alias client -file codesheepclient.crt --keystore codesheepclient.p12

導出的證書在此:

Eureka Server啟用 https服務,讓微服務註冊更安全

  • 配置 Client端信任 Server端的證書
keytool -import -alias server -file codesheepserver.crt -keystore codesheepclient.p12

過程如下:

Eureka Server啟用 https服務,讓微服務註冊更安全

  • 配置 Server端信任 Client端的證書
keytool -import -alias client -file codesheepclient.crt -keystore codesheepserver.p12

過程與上面類似,也不截圖展示了

證書文件準備妥當之後,接下來進行項目代碼級別的配置

Eureka Server SSL配置

我們需要在 Eureka Server的 Spring Boot項目中的 application.yml配置文件裡將上文中生成的證書配到項目中去,即下面這段配置中與 server.ssl相關的部分:

Eureka Server啟用 https服務,讓微服務註冊更安全

Eureka Client SSL配置

類似地,我們也在 Eureka Client的 Spring Boot項目中的 application.yml配置文件裡將上文中生成的證書配到項目中去:

Eureka Server啟用 https服務,讓微服務註冊更安全

但注意此處的 ssl.key-store 和 ssl.key-store-password只是我們自定義的屬性,我們需要結合自己編寫的 ssl配置類 EurekaClientHttpsCfg來進行使用,代碼如下:

Eureka Server啟用 https服務,讓微服務註冊更安全

這段代碼的主要意圖就是通過設置一個 SSLContext用於 Eureka Client訪問 Eureka Server。


實驗驗證

  • 啟動 Eureka Server,由於其開啟了 https訪問,因此瀏覽器以非 https方式訪問時就不通了
Eureka Server啟用 https服務,讓微服務註冊更安全

瀏覽器必須以 https方式訪問註冊中心方可:

Eureka Server啟用 https服務,讓微服務註冊更安全

  • 啟動 Eureka Client後,由於其已經加入了對 https的配置,因此可以驗證通過並且註冊到 Eureka Server註冊中心:
Eureka Server啟用 https服務,讓微服務註冊更安全

如此一番實踐下來,微服務註冊中心的安全性就更進了一步。

喜歡的小夥伴,點個關注吧,每天分享新的內容!


分享到:


相關文章: