建立和安裝 SSL 憑證
下列各節說明如何建立和安裝
SSL 憑證以搭配 WebSphere Partner Gateway 使用。此外,亦提供 SSL 訊息交換程序的概觀。如果您的社群沒有使用 SSL,
您和您的參與者皆不需要入埠或離埠 SSL 憑證。
SSL 訊息交換
每一個 SSL 階段作業皆從訊息交換開始。
當用戶端(參與者或「社群管理員」)起始訊息交換時,會進行下列步驟:
-
用戶端傳送用戶端 "hello" 訊息;此訊息中列出用戶端的密碼化功能(按用戶端的偏好順序排序),
例如:SSL 版本、用戶端支援的密碼組合,
以及用戶端支援的資料壓縮方法。訊息中亦含有 28 個位元組的亂數。
- 伺服器回以伺服器 "hello done" 訊息,其中含有伺服器所選的密碼化方法(密碼組合)和資料壓縮方法、階段作業 ID,
以及另一個亂數。
註: 用戶端和伺服器至少必須支援一個共通的密碼組合,
否則訊息交換將會失敗。伺服器通常會挑選最強的共通密碼組合。
- 伺服器傳送其數位憑證。
此步驟會進行伺服器鑑別。
-
伺服器傳送 "digital certificate request"(數位憑證要求)訊息。在 "digital certificate request" 訊息中,
伺服器傳送支援的數位憑證類型清單,以及可接受之憑證管理中心的辨識名稱。
- 伺服器傳送伺服器 "hello done" 訊息,並等待用戶端回應。
- 用戶端在收到伺服器的 "hello done" 訊息後,驗證伺服器之數位憑證的真確性,
並檢查伺服器的 "hello" 參數是否為可接受的。
-
如果伺服器要求用戶端提供數位憑證,
用戶端則傳送數位憑證,如果沒有適合的數位憑證可用,
用戶端則送出 "no digital certificate"(沒有數位憑證)警示。此項警示純為警告,但如果必須進行用戶端鑑別,
則伺服器應用程式會讓階段作業執行失敗。
- 用戶端傳送 "client key exchange"(用戶端金鑰交換)訊息。此訊息含有
前置主密鑰、用來產生對稱性加密金鑰的 46 個位元組亂數,
以及以伺服器公開金鑰加密的訊息鑑別碼 (MAC) 金鑰。
-
如果用戶端要傳送數位憑證給伺服器,
則用戶端會傳送簽有用戶端私密金鑰的 "digital certificate verify"(數位憑證驗證)訊息。藉由驗證此訊息的簽章,
伺服器可明確驗證該數位憑證是否屬於用戶端的。
註: 並不需要另外驗證伺服器的數位憑證。如果伺服器沒有隸屬於數位憑證的私密金鑰,
即無法解密前置主密鑰以及建立對稱性加密演算法的正確金鑰,
如此一來訊息交換也無法成功。
-
用戶端採用一系列密碼化作業來將前置主密鑰轉換成主密鑰,
這期間需備有加密所需的所有金鑰資料,並從而衍生訊息鑑別。接著,
用戶端傳送 "change cipher spec"(變更密碼規格)訊息,
讓伺服器切換成新協議出的密碼組合。用戶端所傳的下一則訊息("finished"(已完成)訊息),
會成為第一則使用此密碼方法和金鑰加密的訊息。
- 伺服器回以本身的 "change cipher spec"(變更密碼規格)和 "finished"
(已完成)訊息。
用戶端鑑別需要執行下列步驟:4、7 和9。
SSL 訊息交換結束,而可開始傳送已加密的應用程式資料。
入埠 SSL 憑證
本節說明如何針對參與者所發的入埠連線要求,
來配置伺服器鑑別和用戶端鑑別。
伺服器鑑別
WebSphere Application Server 在接收參與者經由 SSL 傳來的連線要求時,
會使用 SSL 憑證。「接收端」即是使用這份憑證來向參與者識別中心的身分。此伺服器憑證可以是自簽的,
也可以是由 CA 所簽署的。在大部分情況下,
您將使用 CA 憑證來提高安全性。在測試環境中您可使用自簽憑證。請使用 iKeyman 來產生憑證和金鑰組。有關 iKeyman 的使用說明,
請參閱 IBM 所提供的說明文件。
在您產生憑證和金鑰組後,
請在所有參與者進行入埠 SSL 資料傳輸時使用該憑證。如果您有多個「接收端」或「主控台」,
請將產生的金鑰儲存庫複製到每一個實例中。若為自簽憑證,
請提供此憑證給參與者。若要取得此憑證,請使用 iKeyman 將公開憑證擷取到檔案中。
使用自簽憑證
如果您要使用自簽的伺服器憑證,請使用下列程序。
-
啟動位於
/<ProductDir>/was/bin 中的 iKeyman 公用程式。如果您是第一次使用 iKeyman,
請刪除位於金鑰儲存庫中的 『dummy』 憑證。
- 使用 iKeyman 為「接收端」或「主控台」的金鑰儲存庫產生一份自簽憑證和金鑰組。
- 使用 iKeyman 將要含有您公開金鑰的憑證擷取到檔案中。
將金鑰儲存庫儲存成 JKS、PKCS12 或 JCEK 檔。
- 將檔案安裝到相關的「接收端」或「主控台」金鑰儲存庫中。
-
將憑證配送給您的參與者。較好的配送方法是將憑證放在一個有密碼保護的壓縮檔中,
並透過電子郵件傳送。您的參與者必須和您聯絡,並要求取得該壓縮檔的密碼。
使用 CA 產生的憑證
如果您要使用 CA 簽署的憑證,請使用下列程序。
-
啟動位於
/<ProductDir>/was/bin 目錄中的 iKeyman 公用程式。
- 使用 iKeyman 為「接收端」產生一項憑證要求和金鑰組。
- 將「憑證簽署申請 (CSR)」送出給 CA。
- 在您收到 CA 簽署的憑證時,請使用 iKeyman 將已簽署的憑證放到金鑰儲存庫中。
-
將 CA 憑證配送給所有參與者
用戶端鑑別
如果您想鑑別送出文件的參與者,
請執行本節中的步驟。
安裝用戶端憑證
若要進行用戶端鑑別,請使用下列程序:
- 取得您參與者的憑證。
- 使用 iKeyman 將憑證(一或多份)安裝到信任儲存庫中。
- 將相關的 CA 放到相關的金鑰儲存庫中。
註: 當您在中心社群中新增多位參與者時,
您可使用 iKeyman 將他們的憑證新增到信任儲存庫中。若有參與者離開社群,
您可使用 iKeyman 將該參與者的憑證從信任儲存庫中移除。
設定用戶端鑑別
在安裝一或多份憑證後,
請執行公用程式 Script bcgClientAuth.jacl,
將 WebSphere Application Server 配置成使用用戶端鑑別。
- 瀏覽至下列目錄:/<ProductDir>/bin
- 若要開啟用戶端鑑別,請按如下所示來呼叫 Script:
./bcgwsadmin.sh -f /<ProductDir>/scripts/bcgClientAuth.jacl
-conntype NONE set
註: 若要關閉用戶端鑑別,請按如下所示來呼叫 Script:
./bcgwsadmin.sh -f /<ProductDir>/receiver/scripts/bcgClientAuth.jacl
-conntype NONE clear
您必須重新啟動 bcgreceiver 伺服器,以便讓這些變更生效。
驗證用戶端的憑證
另有一種特性可搭配 SSL 用戶端鑑別使用。這種特性是透過「社群主控台」來啟用。以 HTTPS 來說,
WebSphere Partner Gateway 會拿入埠文件中的商業 ID 和憑證相核對。若要使用此特性,請建立參與者的設定檔,匯入用戶端憑證,
並將它的旗標設為 SSL。
- 匯入用戶端憑證。
- 按一下帳戶管理 > 設定檔 > 社群參與者,並搜尋參與者的設定檔。
- 按一下憑證。
- 按一下載入憑證。
- 選取 SSL 用戶端,作為憑證類型。
- (必要)輸入憑證的說明。
- 將狀態改為已啟用。
- 按一下瀏覽,導覽至儲存該憑證的目錄。
- 選取憑證,並按一下開啟。
- 如果您想選取正式作業(預設值)以外的閘道類型,請從清單中選取。
- 按一下上傳,然後按一下儲存。
- 更新用戶端閘道。
- 按一下帳戶管理 > 設定檔 > 社群參與者,並搜尋參與者的設定檔。
- 按一下閘道。
- 選取您先前所建的 HTTPS 閘道。如果您尚未建立 HTTPS 閘道,
請參閱設定 HTTPS 閘道。
- 按一下編輯圖示,以編輯閘道。
- 在驗證 SSL 用戶端憑證方面,選取是。
- 按一下儲存。
離埠 SSL 憑證
如果您的社群沒有使用 SSL,
則不需要入埠或離埠 SSL 憑證。
伺服器鑑別
當您使用 SSL 來傳送離埠文件給參與者時,
WebSphere Partner Gateway 會向參與者要求伺服器端憑證。同一份 CA 憑證可用在多位參與者上。憑證的格式必須是 X.509 DER。
註: 您可以使用 iKeyman 來轉換格式。請遵循下列步驟,
使用 iKeyman 來轉換格式:
- 啟動 iKeyman。
- 新建一個空的金鑰儲存庫,或開啟現有的金鑰儲存庫。
- 在「金鑰資料庫內容」中,選取簽署者憑證。
- 使用新增選項,新增 ARM 憑證。
- 使用擷取選項,
擷取和二進位 DER 資料相同的憑證。
- 關閉 iKeyman。
將參與者的自簽憑證安裝到「中心操作員」設定檔中。
如果憑證是由 CA 所簽,
而屬於憑證鏈一部分的 CA 根憑證和任何其他憑證未安裝在「中心操作員」設定檔中,
請將這些憑證安裝在「中心操作員」設定檔中。
- 按一下憑證。
- 按一下載入憑證。
- 選取根和中繼,作為憑證類型。
- (必要)輸入憑證的說明。
- 將狀態改為已啟用。
- 按一下瀏覽,導覽至儲存該憑證的目錄。
- 選取憑證,並按一下開啟。
- 按一下上傳,然後按一下儲存。
註: 如果 CA 憑證已安裝,則不需執行上述步驟。
用戶端鑑別
如果需要 SSL 用戶端鑑別,
則參與者將轉而向中心要求憑證。請使用「社群主控台」,
將您的憑證匯入至 WebSphere Partner Gateway。您可以使用 iKeyman 來產生憑證。若為自簽憑證,
則必須提供給參與者。若為 CA 簽署的憑證,則必須提供 CA 根憑證給參與者,
讓他們可將之新增到自己的可信憑證中。
您可有一份以上的 SSL 憑證。一份是主要憑證,
依預設,會使用這份憑證。另一份是次要憑證,一旦主要憑證到期或者無法使用時,
便會使用此憑證。
使用自簽憑證
如果您要使用自簽憑證,請使用下列程序。
- 啟動 iKeyman 公用程式。
- 使用 iKeyman 產生一份自簽憑證和金鑰組。
- 使用 iKeyman 將要含有您公開金鑰的憑證擷取到檔案中。
- 將憑證配送給您的參與者。較好的配送方法是將憑證放在一個有密碼保護的壓縮檔中,
並透過電子郵件傳送。您的參與者必須和您聯絡,並要求取得該壓縮檔的密碼。
- 使用 iKeyman 採 PKCS12 檔格式來匯出自簽憑證和私密金鑰對組。
- 透過「社群主控台」安裝自簽憑證和金鑰。
- 按一下帳戶管理 > 設定檔 > 憑證,顯示「憑證清單」頁面。
請確定您是以「中心操作員」身分登入「社群主控台」。
- 按一下載入 PKCS12。
註: 要上傳的 PKCS12 檔應只含有一個私密金鑰和相關聯的憑證。
- 選取 SSL 用戶端,作為憑證類型。
- (必要)輸入憑證的說明。
- 將狀態改為已啟用。
- 按一下瀏覽,導覽至儲存該憑證的目錄。
- 選取憑證,並按一下開啟。
- 輸入密碼。
- 如果您想選取正式作業(預設值)以外的閘道類型,請從清單中選取。
- 如果您有兩份 SSL 憑證,請從憑證用法清單中選取主要或次要,
以指出此為主要或次要憑證。
- 按一下上傳,然後按一下儲存。
如果您要針對 SSL 用戶端和數位簽章兩者上傳主要和次要憑證,
且您將主要憑證上傳成兩個個別的項目,
則相對應的次要憑證也必須上傳成兩個不同的項目。
使用 CA 簽署的憑證
如果您要使用 CA 簽署的憑證,請使用下列程序:
- 使用 iKeyman 為「接收端」產生一項憑證要求和金鑰組。
- 將「憑證簽署申請 (CSR)」送出給 CA。
- 在您收到 CA 簽署的憑證時,請使用 iKeyman 將已簽署的憑證放到金鑰儲存庫中。
- 將簽署的 CA 憑證配送給所有參與者。
新增憑證廢止清冊 (CRL)
WebSphere
Partner Gateway 含有「憑證廢止清冊 (CRL)」特性。「憑證管理中心 (CA)」所發出的 CRL
會指出哪些參與者在其排定的有效日期前即已廢止憑證。已廢止憑證的參與者將被拒絕存取 WebSphere Partner Gateway。
每一份已廢止的憑證會在 CRL 中以其憑證序號指出。「文件管理程式」每隔 60 秒即掃描一次 CRL,
只要有憑證出現在 CRL 清單中即會被拒絕。
CRL 儲存在下列位置中:/<shared_data_directory>/security/crl。WebSphere Partner Gateway 使用 bcg.properties 檔中的
bcg.CRLDir 設定來識別 CRL 目錄的位置。
請建立一個內含已廢止憑證的 .crl 檔,並將它放在 CRL 目錄中。
例如,在 bcg.properties 檔中,使用如下的設定:
bcg.CRLDir=/<shared_data_directory>/security/crl
啟用存取 CRL 發放點
CA 會維護和更新 CRL。這些 CRL 通常儲存在 CRL 發放點中。在執行憑證的廢止檢查,以判斷是否廢止憑證時,
即會用到 CRL。
bcgSetCRLDP.jacl Script 可在執行廢止檢查時用來啟用或停用 CRL 發放點的檢查。當執行某憑證的廢止檢查時,
如果您需要存取 CRL 發放點,
請啟用 CRL 發放點。如果您已安裝的憑證含有 CRL DP
延伸,您可以啟用 CRL 發放點,
以便在執行廢止檢查時存取發放點。如果您已將所有必要的 CRL 下載到
bcg.properties 中之 bcg.CRLDir 內容的目錄集內,
則您可能不需啟用 CRL 發放點。如果 bcg.CRLDir 目錄中可能沒有提供現行 CRL,
則應啟用 CRL 發放點。
系統支援透過 HTTP 和 LDAP 來存取 CRL 發放點。您也可以配置 Proxy 來存取 CRL 發放點。
註: 若為 Windows 安裝環境,在本節所列的指令中,
請使用 bcgwsadmin.bat(而非 ./bcgwsadmin.sh)。
若要啟用 CRL 發放點,請從 <ProductDir>/bin 目錄執行下列指令:
./bcgwsadmin.sh -f <ProductDir>/scripts/bcgSetCRLDP.jacl install
<nodename> <serverName> CRLDP
其中:
- <server_root>
- 伺服器的根目錄(如 /opt/ibm/receiver/was/profiles/bcgreceiver)
- <serverName>
- 可以是 bcgdocmgr、bcgreceiver 或 bcgconsole。指令必須從相對應的 <server_root> 來執行。
若要停用 CRL 發放點,請從 <ProductDir>/bin 目錄執行下列指令:
./bcgwsadmin.sh -f <ProductDir>/scripts/bcgSetCRLDP.jacl uninstall
<nodename> <serverName> CRLDP
若要使用 Proxy 來啟用 CRL 發放點,請從 <ProductDir>/bin 目錄執行下列指令:
./bcgwsadmin.sh -f <ProductDir>/scripts/bcgSetCRLDP.jacl install
<nodename> <serverName> CRLDP <proxyHost> <proxyPort>
若要指定您不想使用 Proxy,請從
<ProductDir>/bin 目錄來執行下列指令:
./bcgwsadmin.sh -f <ProductDir>/scripts/bcgSetCRLDP.jacl
uninstall <nodename> <serverName> PROXY
如果您使用「接收端」使用者跳出程式,且使用者跳出程式採用
SecurityService API,則上述的設定亦適用於 bcgreceiver 伺服器。若要針對「接收端」執行上述指令,
請將 bcgdocmgr 換成 bcgreceiver。
