2015-09-18 24 views
0

我正在嘗試在兩個虛擬機(用於HA)上set up a secure Docker Registry,並對設置SSL有疑問。根據該文檔鏈接,我需要有一個certs目錄,在這兩個文件:如何將JKS轉換爲Docker Registry cert/key?

  • registry.crt - 將CA證書
  • registry.key - ??? (私鑰?)

我給了一個Java JKS(keystore),其中包含一個可用於這些VM的通配CA證書。我能夠成功導出證書出來的密鑰庫的像這樣:

keytool -export -alias certalias -file registry.crt -keystore mycerts.jks 

到目前爲止好:我有registry.crt。但是一些相關的問題/擔憂阻止我完成這個設置:

  • 什麼*.key文件,它是如何比證書不同,我怎麼從JKS提取呢?
  • Docker/Registry在每個虛擬機上預計這個目錄是certs?也許/home/myuser/?這個位置是否可配置?!?
  • 正如鏈接所解釋的,如果您的CA證書是「中介」證書,則需要採取特殊的附加措施。我怎麼知道我的證書是否是中介?

回答

2

這裏真的有三個問題。你應該提出不同的問題。我不知道你的第二個答案,但會爲其他兩個答案。


簡而言之,在SSL上下文中,客戶端使用證書中包含的公鑰啓動安全連接。只有擁有相應(私人)密鑰的服務器才能應答並因此建立連接。 (還有很多事情要做。)

有關密鑰存儲區的簡短內容是:幫你一個忙,並使用類似KeyStore Explorer的工具。沒有從屬關係,我只是喜歡這個工具。用keytool導出私鑰並不那麼簡單。據我所知,你不能直接導出私鑰。 You can however export to PKCS12 and use other tools like OpenSSL from there

密鑰工具-importkeystore -srckeystore現有-store.jks -destkeystore新store.p12 -deststoretype PKCS12

如果你只有一個自簽名證書(簽名者是一樣的主題),你不需要擔心中介。中間證書意味着由簽名您的證書的CA簽署的證書本身由另一個CA簽署。

CA 0 (signed by CA 0) - well known certificate, self-signed 
\_ CA 1 (signed by CA 0) - intermediate certificate 
    \_ Your Cert (signed by CA 1) 

爲了驗證證書的整個鏈條必須知道客戶端的完整性。通常只有位於頂端的CA分佈在瀏覽器和操作系統(CA 0)中,所以您需要在中間人(CA 1)之間發佈證書。

+0

感謝@musiKk(+1) - 如果您不介意的話,兩個快速跟進:(1)將此「*導出到PKCS12,然後使用OpenSSL導出私鑰*」如果證書不是自簽名? (2)我開始明白什麼是中介證書,但他們有什麼意義?爲什麼不使用CA0簽署的衆所周知的自簽名證書?我想我只是不明白「SSL證書**鏈**」的整個*點*。再次感謝! – smeeb

+0

@smeeb 1.是的,證書的樣子並不重要。 2.坦率地說:不知道。我想這更多是一種組織性的事情,但我不知道。 – musiKk

相關問題