簡體   English   中英

Web服務提供者和消費者之間的證書機制

[英]certificate mechanism between webservice provider and consumer

服務器和客戶端在Web服務調用中放置ssl證書機制的確切步驟是什么? 誰(客戶端/服務器/兩者)將生成.keystore,.p7b / .cer文件? 我google了很多但找不到答案。 就我而言,我是運行java應用程序的客戶端,它使用soap webservice調用。 我有一個由WebService提供者提供的.p7b文件。 我知道在哪里放置文件(.keystore,.cer)以及如何在應用程序中使用它。

但是,我的問題是

  1. 我是否需要生成密鑰庫文件,還是應該從Web服務提供商處獲取? 如果我需要生成,怎么樣? 我需要私鑰/密碼嗎?
  2. 我需要一個.cer文件,那么如何使用keytool將.p7b轉換為.cer文件?

提前謝謝你的幫助。

看起來您正在使用X509證書調用HTTP連接受TLS / SSL保護的Web服務。 這意味着服務器已經設置了具有這些證書的密鑰庫以及相應的私鑰。 當您調用Web服務時,服務器將從其密鑰庫中檢索用於信任建立的證書(即,保護與Web服務的TLS連接)並將其發送到客戶端。 當客戶端從服務器收到響應時,它將檢查該證書的信任。 現在我們有兩種情況:

  1. 如果服務器使用自簽名證書(可用於開發和測試,但不用於生產),則客戶端將不會將其識別為受信任,因為它未存儲在客戶端的信任庫中。 默認情況下,在Java環境中,在以下兩個位置搜索信任庫(按順序): $JAVA_HOME/lib/security/jssecacerts$JAVA_HOME/lib/security/cacerts 通過使用-Djavax.net.ssl.trustStore-Djavax.net.ssl.trustStorePassword或使用自定義TrustManager運行客戶端,也可以使用自定義信任庫。 因此,如果服務器自簽名證書未存儲在其中一個位置,則安全連接將失敗。 因此,客戶端必須將證書導入其信任庫。 為了避免將自簽名證書導入客戶端的信任庫,您可以按照此處的說明創建自定義X509TrustManager

  2. 如果服務器使用由其中一個已識別的根CA權限簽名的證書,則它將自動驗證,因為這些CA的證書已安裝在Java的默認信任庫中。 因此,可信賴的TLS連接將成功。

在服務器不需要客戶端身份驗證的情況下,該過程結束(當您通過瀏覽器連接到大多數HTTPS網站時會發生這種情況)。

如果服務器需要客戶端身份驗證,則客戶端需要將其自己的證書從其密鑰庫提供給服務器,並且服務器需要將其安裝在其信任庫中。 Web服務提供者必須向客戶端提供客戶端應使用的證書配置文件的規范。

在這里,您可以找到對密鑰庫和信任庫術語的一個很好的說明。

默認情況下,在Java環境中,密鑰庫和信任庫是JKS文件

所以你說你有一個由Web服務提供商提供的.p7b文件。 引用頁面:

PKCS#7 / P7B格式

PKCS#7或P7B格式通常以Base64 ASCII格式存儲,文件擴展名為.p7b或.p7c。 P7B證書包含“----- BEGIN PKCS7 -----”和“----- END PKCS7 -----”語句。 P7B文件僅包含證書和鏈證書,而不包含私鑰。 多個平台支持P7B文件,包括Microsoft Windows和Java Tomcat。

因此P7B文件包含服務器證書或證書鏈( 此處更多內容)。

我相信你是在一個沒有客戶端認證的場景中。 因此,您不需要自己的密鑰庫。 您只需要將服務器的證書(P7B文件)導入到您正在使用的信任庫中。 您可以直接導入P7B文件而無需將其轉換為CER格式:

keytool -import -trustcacerts -alias web_service -keystore my_truststore.jks -file web_service.p7b

如果你仍然需要CER格式的證書,你可以像這樣從P7B轉換為CER(回答你的第二個問題):

openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer

如果實際上需要客戶端身份驗證,那么您需要使用私鑰和公共證書創建密鑰庫,並通過-Djavax.net.ssl.keyStore-Djavax.net.ssl.keyStorePassword將其提供給連接。 參數或通過KeyManager 之前解釋的相同工作流現在適用於相反的方向。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM