2017-09-08 72 views
1

爲了使用https所有春雲微服務實例之間我們可以生成Java密鑰存儲和配置每個實例有這樣的:使用HTTPS只有春天的雲微服務實例

server.ssl.key-store=server.jks 
server.ssl.key-store-password=<pw> 
server.ssl.keyStoreType=jks 
server.ssl.keyAlias=tomcat 
server.ssl.key-password=<pw> 

IIUC儘可能設置ssl傳輸層這就是我們需要做的事情?在相同的微服務類型的所有實例中使用相同的密鑰庫可以嗎?例如,邊緣服務器可以使用絲帶負載平衡microserviceA - instance3之間microserviceA - instance1microserviceA - instance2,並且,這些可能都具有相同的密鑰存儲在出爐。

如果我們也有一個microserviceB,可能也使用相同的密鑰庫,而不危及安全?

從管理/ devOps的角度來看,這是最簡單的方法嗎?

回答

2

SSL證書對於同一個微服務的每個運行實例應該是相同的,並且對於每個微服務(您的microserviceA與microserviceB)都是唯一的。如果您將服務移到硬件負載平衡器後面,那麼它會變得很明顯。

當/如果您爲服務服務調用進行X.509客戶端證書認證,則需要根據它們提供的證書對服務進行認證和授權。如果他們都提交相同的證書,那麼你不能這樣做。

從devOps的角度來看,您可以通過集中存儲證書來節省自己的頭痛 - 我們使用Spring Cloud Config Server與網站後端 - 並設置一項工作來檢查證書的到期日期所以在部署後一年左右你不會感到不愉快的驚喜。

我們對每個服務使用單獨的密鑰庫/信任庫,因爲它符合我們的部署模型,但您可能能夠使用具有多個服務別名的單個密鑰庫,因爲其中的私鑰可以具有唯一密碼。但要小心,並非所有的java http框架都能夠通過別名來選擇密鑰或支持不同的密鑰存儲庫/密鑰密碼...

+0

感謝Andy - 很高興知道 - 我也在研究將所有服務包裝在Docker容器中運行docker swarm - 現在看起來好像我們可以用一個命令創建一個安全的覆蓋網絡並允許它管理ssl。在這裏發佈一個後續:https://stackoverflow.com/questions/46119863/is-ssl-security-provided-by-default-in-docker-swarm-mode – Ole