
![[16.0.0.4 以及更新版本]](../ng_v16004plus.gif)
在 z/OS 作業系統上配置 TLS 的 SAF 憑證和金鑰環
將現有群體移轉為使用「系統授權機能 (SAF)」來執行安全相關功能,例如要求鑑別、授權或憑證。
開始之前
在用於管理安全的群體憑證上,標示已定義的控制器和成員字串。例如,假設憑證的識別名稱 (DN) 如下:
DN=<hostname>, O=IBM, OU=Collective
在 server.xml 檔中,使用識別名稱中的 "OU=Collective" 字串來配置 rdn 屬性:
<collectiveCertificate rdn="OU=Collective"></collectiveCertificate>
關於這項作業
針對下列程序,「主體識別名稱」的「組織單位 (OU)」OU('Collective') 元件定義字串並標示要辨識的憑證。
在隨後的 RACF® 指令範例中,CONTROL 是控制器的 RACF 使用者 ID,MEMBER 是成員的 RACF 使用者 ID。
程序
- 建立控制器的 SAF 憑證和金鑰環。
- 建立群體控制器 CA (CERTAUTH) 憑證。
RACDCERT CERTAUTH GENCERT SUBJECTSDN(CN('CONTROLLER ROOT') O('IBM') C('US'))SIZE(2048)WITHLABEL('CONTROLLER ROOT') TRUST NOTAFTER(DATE(2035/12/31))
- 建立群體控制器的伺服器憑證,由群體控制器 CA 簽署。 重要: 請以控制器主機名稱取代 controller.host.name 文字,以避免主機名稱與瀏覽器 URL 不符。
RACDCERT ID(CONTROL) GENCERT SUBJECTSDN(CN('controller.host.name') O('IBM') OU('Collective')) WITHLABEL('CONTROLLER') SIGNWITH(CERTAUTH LABEL('CONTROLLER ROOT')) SIZE(2048) NOTAFTER(DATE(2020/12/30))
- 建立群體控制器的金鑰環。
RACDCERT ID(CONTROL) ADDRING(CONTROL.KEYRING)
- 將群體控制器 CA 連接至控制器金鑰環。
RACDCERT CONNECT(CERTAUTH LABEL('CONTROLLER ROOT') RING(CONTROL.KEYRING))ID(CONTROL)
- 將控制器伺服器憑證連接至控制器金鑰環。
RACDCERT CONNECT(ID(CONTROL) LABEL('CONTROLLER') RING(CONTROL.KEYRING)) ID(CONTROL)
- 建立群體控制器 CA (CERTAUTH) 憑證。
- 建立成員的 SAF 憑證和金鑰環。
- 建立群體成員 CA (CERTAUTH) 憑證。
RACDCERT CERTAUTH GENCERT SUBJECTSDN(CN('MEMBER ROOT') O('IBM') C('US'))SIZE(2048)WITHLABEL('MEMBER ROOT') TRUST NOTAFTER(DATE(2035/12/31))
- 將群體成員 CA 連接至控制器金鑰環。
RACDCERT CONNECT(CERTAUTH LABEL('MEMBER ROOT') RING(CONTROL.KEYRING))ID(CONTROL)
- 建立群體成員的伺服器憑證,由群體成員 CA 簽署。 重要: 請以成員主機名稱取代 member.host.name 文字,以避免主機名稱與瀏覽器 URL 不符。
RACDCERT ID(MEMBER) GENCERT SUBJECTSDN(CN('member.host.name') O('IBM') OU('Collective')) WITHLABEL('MEMBER') SIGNWITH(CERTAUTH LABEL('MEMBER ROOT')) SIZE(2048) NOTAFTER(DATE(2020/12/30))
- 建立群體成員的金鑰環 MEMBER.KEY。
RACDCERT ID(MEMBER) ADDRING(MEMBER.KEY)
- 將群體成員 CA 連接至 MEMBER.KEY 金鑰環。
RACDCERT CONNECT(CERTAUTH LABEL('MEMBER ROOT') RING(MEMBER.KEY)) ID(MEMBER)
- 將成員伺服器憑證連接至 MEMBER.KEY 金鑰環。
RACDCERT CONNECT(ID(MEMBER) LABEL('MEMBER') RING(MEMBER.KEY)) ID(MEMBER)
- 列出成員金鑰環。
您在金鑰環中應該會看到兩個憑證。
RACDCERT ID(MEMBER) LISTRING(MEMBER.KEY)
Digital ring information for user MEMBER: >MEMBER.KEY< Certificate Label Name Cert Owner USAGE DEFAULT -------------------------------- ------------ -------- ------- MEMBER ROOT CERTAUTH CERTAUTH NO MEMBER ID(MEMBER) PERSONAL NO
- 建立成員的第二個金鑰環 MEMBER.TRUST。
RACDCERT ID(MEMBER) ADDRING(MEMBER.TRUST)
- 將群體控制器 CA 連接至 MEMBER.TRUST 金鑰環。
RACDCERT CONNECT(CERTAUTH LABEL('CONTROLLER ROOT') RING(MEMBER.TRUST))ID(MEMBER)
- 列出 MEMBER.TRUST 金鑰環。您在金鑰環中應該會看到一個憑證。
RACDCERT ID(MEMBER) LISTRING(MEMBER.TRUST)
Digital ring information for user MEMBER: Ring: >MEMBER.TRUST< Certificate Label Name Cert Owner USAGE DEFAULT -------------------------------- ------------ -------- ------- CONTROLLER ROOT CERTAUTH CERTAUTH NO
- 建立群體成員 CA (CERTAUTH) 憑證。
- 列出控制器金鑰環。您在金鑰環中應該會看到三個憑證。
RACDCERT ID(CONTROL)LISTRING(CONTROL.KEYRING)
Ring: >CONTROL.KEYRING< Certificate Label Name Cert Owner USAGE DEFAULT -------------------------------- ------------ -------- ------- MEMBER ROOT CERTAUTH CERTAUTH NO CONTROLLER ROOT CERTAUTH CERTAUTH NO CONTROLLER ID(CONTROL) PERSONAL NO
- 授權讓控制器和成員使用他們擁有的金鑰環和憑證。
您可以使用 FACILITY 類別設定檔或 RDATALIB 設定檔。
下列範例使用 FACILITY 類別許可權來授權 CONTROL 和 MEMBER 使用者:
PERMIT IRR.DIGTCERT.LIST CLASS(FACILITY) ID(CONTROL MEMBER) ACCESS(READ) PERMIT IRR.DIGTCERT.LISTRING CLASS(FACILITY) ID(CONTROL MEMBER) ACCESS(READ) SETR RACLIST(FACILITY) REFRESH
下列範例使用 RDATALIB 類別許可權來授權 CONTROL 和 MEMBER 使用者:
PERMIT CONTROL.**.LST CLASS(RDATALIB) ID(CONTROL) ACCESS(READ) PERMIT MEMBER.**.LST CLASS(RDATALIB) ID(MEMBER) ACCESS(READ) SETR RACLIST(RDATALIB) REFRESH
- 將 z/OS® 安全特性新增至控制器和成員 serverl.xml 檔。
- 停止控制器和成員。將控制器和成員的每一個 server.xml 檔的副本,儲存至您的備份檔。
- 繼續編輯 server.xml 檔。在控制器和成員 server.xml 檔中,將下列特性新增至 featureManager 元素:
<feature>ssl-1.0</feature> <feature>zosSecurity-1.0</feature>
- 建立伺服器類別設定檔,讓控制器和成員可以存取 SAF 服務。請參閱產品說明文件中的在 Liberty for z/OS 上啟用 z/OS 授權服務。
然後,在控制器和成員 server.xml 檔中,將下列這一行:
換成下列五行:<quickStartSecurity userName="admin" userPassword="adminpw" />
<safAuthorization id="saf" racRouteLog="ASIS" /> <safCredentials profilePrefix="BBGZDFLT" unauthenticatedUser="WSGUEST"/> <safRegistry id="saf" realm="WASRealm" /> <safRoleMapper profilePattern="%profilePrefix%.%role%" /> <zosLogging enableLogToMVS="true"></zosLogging>
控制存取「管理中心」的 EJBROLE 設定檔是 BBGZDFLT.Administrator。
- 在控制器和成員 server.xml 檔中,新增下列這一行來指定 collectiveCertificate 字串:
<collectiveCertificate rdn="OU=Collective"></collectiveCertificate>
- 在控制器的 server.xml 檔中,以 SAF 金鑰環名稱取代金鑰檔名稱。
- 找出含有 defaultKeyStore ID 的金鑰儲存庫元素。 將 location="${server.config.dir}/resources/security/key.jks"/> 取代為下列幾行:
location="safkeyring:///CONTROL.KEYRING" type="JCERACFKS" fileBased="false" readOnly="true" />
- 找出含有 defaultTrustStore ID 的金鑰儲存庫元素。 將 location="${server.config.dir}/resources/security/trust.jks"/> 取代為下列幾行:
location="safkeyring:///CONTROL.KEYRING" type="JCERACFKS" fileBased="false" readOnly="true" />
- 找出含有 serverIdentity ID 的金鑰儲存庫元素。 將 location="${server.config.dir}/resources/collective/serverIdentity.jks"/> 取代為下列幾行:
location="safkeyring:///CONTROL.KEYRING" type="JCERACFKS" fileBased="false" readOnly="true" />
- 找出含有 collectiveTrust ID 的金鑰儲存庫元素。 將 location="${server.config.dir}/resources/collective/collectiveTrust.jks"/> 取代為下列幾行:
location="safkeyring:///CONTROL.KEYRING" type="JCERACFKS" fileBased="false" readOnly="true" />
請勿變更 collectiveRootKeys 金鑰儲存庫元素。
- 找出含有 defaultKeyStore ID 的金鑰儲存庫元素。 將 location="${server.config.dir}/resources/security/key.jks"/> 取代為下列幾行:
- 在成員 server.xml 檔中,以 SAF 金鑰環名稱取代金鑰檔名稱。
- 找出含有 defaultKeyStore ID 的金鑰儲存庫元素。 將 location="${server.config.dir}/resources/security/key.jks"/> 取代為下列幾行:
location="safkeyring:///MEMBER.KEY" type="JCERACFKS" fileBased="false" readOnly="true" />
- 找出含有 defaultTrustStore ID 的金鑰儲存庫元素。 將 location="${server.config.dir}/resources/security/trust.jks"/> 取代為下列幾行:
location="safkeyring:///MEMBER.TRUST" type="JCERACFKS" fileBased="false" readOnly="true" />
- 找出含有 serverIdentity ID 的金鑰儲存庫元素。 將 location="${server.config.dir}/resources/collective/serverIdentity.jks"/> 取代為下列幾行:
location="safkeyring:///MEMBER.KEY" type="JCERACFKS" fileBased="false" readOnly="true" />
- 找出含有 collectiveTrust ID 的金鑰儲存庫元素。 將 location="${server.config.dir}/resources/collective/collectiveTrust.jks"/> 取代為下列幾行:
location="safkeyring:///MEMBER.TRUST" type="JCERACFKS" fileBased="false" readOnly="true" />
- 找出含有 defaultKeyStore ID 的金鑰儲存庫元素。 將 location="${server.config.dir}/resources/security/key.jks"/> 取代為下列幾行:
- 啟動控制器和成員。
次主題
- 避免群體中發生 SSH 的問題
瞭解如何避免群體中發生 SSH 的問題。安全問題通常是關於使用者因為安全限制太嚴格而無法存取資源。 SSH 配置選項 StrictModes 是針對相反的問題(安全太寬鬆時)來保護公開和私密金鑰檔。 SSH 讓系統之間不經過密碼鑑別也可進行安全通訊,但如果某些目錄和檔案的許可權不夠嚴格,SSL 就無法運作。
上層主題: 配置 Liberty 群體的安全性

檔名:tagt_wlp_collective_zos_tls.html