2016-08-24 173 views
3

如果我有一個泊塢窗的應用程序(J2EE Web應用程序)滿足下列條件:最佳實踐

  • 有不同的主機上進行部署(從相同的圖像)多個容器由它來通過SSL/TLS相互通信 - 所以容器需要自己的SSL證書,並且需要信任其他容器的證書,這些容器將另外對其他外部URL進行HTTPS調用 - 因此這些服務器的證書也需要被信任。這些外部URL不是在部署時已知的,所以證書必須單獨進口
  • 的應用程序是一個J2EE Web應用程序使用了鑑於此證書

的Java密鑰庫和信任,證書應該如何提供給服務器?

回答

3

更新:2018-02

泊塢羣允許祕密保存。 https://docs.docker.com/engine/swarm/secrets/ 但是,這在非Swarm部署中不受支持。解決這個問題的方法之一就是隻將一個節點部署爲Swarm。

以前的答案:

碼頭工人目前還沒有一種方法來處理機密(這是他們的路線圖)。 Docker上有一段長時間的話題。它列出了許多人用來將容器輸入祕密的方法。 https://github.com/docker/docker/issues/13490

有些人使用HashiCorp的保險櫃,其他人使用主機(env vars)或碼頭工具(這是我的團隊所做的)加密機密。容器可以在啓動時解密它們(入口點/命令)。要在運行時添加祕密,您可以創建一個自定義容器來執行此操作(接受http請求並將其存儲在信任庫中)。只是你會在上面的鏈接中看到許多建議。

0

應用程序應該在內部處理這個問題:

如果您有可以使用Java密鑰庫泊塢窗容器中運行的Java應用程序(只需再添加其他容器PEM公司的應用程序在Dockerfile密鑰庫)

# import my domaincert 
COPY homelinux.org.pem /tmp/homelinux.org.pem 
RUN /usr/bin/keytool -import -alias homelinux.org -keystore ${JAVA_HOME}/jre/lib/security/cacerts -trustcacerts -file /tmp/homelinux.org.pem -storepass changeit -noprompt 

我在〜.homelinux.org上有15個容器通過dyndns和一個 * .homelinux.org自簽名域名證書(dnsname=*.homelinux.org)所以容器可以在它們之間使用ssl罰款。