[16.0.0.4 以及更新版本]

在 z/OS 作業系統上配置 TLS 的 SAF 憑證和金鑰環

將現有群體移轉為使用「系統授權機能 (SAF)」來執行安全相關功能,例如要求鑑別、授權或憑證。

開始之前

在用於管理安全的群體憑證上,標示已定義的控制器和成員字串。例如,假設憑證的識別名稱 (DN) 如下:
DN=<hostname>, O=IBM, OU=Collective
server.xml 檔中,使用識別名稱中的 "OU=Collective" 字串來配置 rdn 屬性:
<collectiveCertificate rdn="OU=Collective"></collectiveCertificate>

關於這項作業

個別的憑證管理中心簽章者 (CA) 有利於區別群體控制器與成員。 透過 SAF,控制器會信任成員,成員會信任控制器。

針對下列程序,「主體識別名稱」的「組織單位 (OU)」OU('Collective') 元件定義字串並標示要辨識的憑證。

在隨後的 RACF® 指令範例中,CONTROL 是控制器的 RACF 使用者 ID,MEMBER 是成員的 RACF 使用者 ID。

程序

  1. 建立控制器的 SAF 憑證和金鑰環。
    1. 建立群體控制器 CA (CERTAUTH) 憑證。
      RACDCERT CERTAUTH GENCERT SUBJECTSDN(CN('CONTROLLER ROOT') 
      O('IBM') C('US'))SIZE(2048)WITHLABEL('CONTROLLER ROOT') 
      TRUST NOTAFTER(DATE(2035/12/31))
    1. 建立群體控制器的伺服器憑證,由群體控制器 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))  
               
    2. 建立群體控制器的金鑰環。
      RACDCERT ID(CONTROL) ADDRING(CONTROL.KEYRING)
    3. 將群體控制器 CA 連接至控制器金鑰環。
      RACDCERT CONNECT(CERTAUTH LABEL('CONTROLLER ROOT')  
      RING(CONTROL.KEYRING))ID(CONTROL)
    4. 將控制器伺服器憑證連接至控制器金鑰環。
      RACDCERT CONNECT(ID(CONTROL) LABEL('CONTROLLER') 
      RING(CONTROL.KEYRING)) ID(CONTROL)  
  2. 建立成員的 SAF 憑證和金鑰環。
    1. 建立群體成員 CA (CERTAUTH) 憑證。
      RACDCERT CERTAUTH GENCERT SUBJECTSDN(CN('MEMBER ROOT')  
      O('IBM') C('US'))SIZE(2048)WITHLABEL('MEMBER ROOT')  
      TRUST NOTAFTER(DATE(2035/12/31))
    2. 將群體成員 CA 連接至控制器金鑰環。
      RACDCERT CONNECT(CERTAUTH LABEL('MEMBER ROOT')  
      RING(CONTROL.KEYRING))ID(CONTROL)
    3. 建立群體成員的伺服器憑證,由群體成員 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))
    4. 建立群體成員的金鑰環 MEMBER.KEY
      RACDCERT ID(MEMBER) ADDRING(MEMBER.KEY)
    5. 將群體成員 CA 連接至 MEMBER.KEY 金鑰環。
      RACDCERT CONNECT(CERTAUTH LABEL('MEMBER ROOT') 
      RING(MEMBER.KEY)) ID(MEMBER)    
              
    6. 將成員伺服器憑證連接至 MEMBER.KEY 金鑰環。
      RACDCERT CONNECT(ID(MEMBER) LABEL('MEMBER')   
      RING(MEMBER.KEY)) ID(MEMBER)
    7. 列出成員金鑰環。

      您在金鑰環中應該會看到兩個憑證。

      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       
         
    8. 建立成員的第二個金鑰環 MEMBER.TRUST
      RACDCERT ID(MEMBER) ADDRING(MEMBER.TRUST)
    9. 將群體控制器 CA 連接至 MEMBER.TRUST 金鑰環。
      RACDCERT CONNECT(CERTAUTH LABEL('CONTROLLER ROOT')  
      RING(MEMBER.TRUST))ID(MEMBER)
    10. 列出 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     
         
  3. 列出控制器金鑰環。您在金鑰環中應該會看到三個憑證。
    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     
  4. 授權讓控制器和成員使用他們擁有的金鑰環和憑證。

    您可以使用 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
  5. 將 z/OS® 安全特性新增至控制器和成員 serverl.xml 檔。
    1. 停止控制器和成員。將控制器和成員的每一個 server.xml 檔的副本,儲存至您的備份檔。
    2. 繼續編輯 server.xml 檔。在控制器和成員 server.xml 檔中,將下列特性新增至 featureManager 元素:
      <feature>ssl-1.0</feature>
      <feature>zosSecurity-1.0</feature>
            
    3. 建立伺服器類別設定檔,讓控制器和成員可以存取 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

    4. 在控制器和成員 server.xml 檔中,新增下列這一行來指定 collectiveCertificate 字串:
      <collectiveCertificate rdn="OU=Collective"></collectiveCertificate>
  6. 在控制器的 server.xml 檔中,以 SAF 金鑰環名稱取代金鑰檔名稱。
    1. 找出含有 defaultKeyStore ID 的金鑰儲存庫元素。location="${server.config.dir}/resources/security/key.jks"/> 取代為下列幾行:
      location="safkeyring:///CONTROL.KEYRING"                  
      type="JCERACFKS" fileBased="false" readOnly="true" />
    2. 找出含有 defaultTrustStore ID 的金鑰儲存庫元素。location="${server.config.dir}/resources/security/trust.jks"/> 取代為下列幾行:
      location="safkeyring:///CONTROL.KEYRING"                                 
      type="JCERACFKS" fileBased="false" readOnly="true" />  
    3. 找出含有 serverIdentity ID 的金鑰儲存庫元素。location="${server.config.dir}/resources/collective/serverIdentity.jks"/> 取代為下列幾行:
      location="safkeyring:///CONTROL.KEYRING"                  
      type="JCERACFKS" fileBased="false" readOnly="true" /> 
          
    4. 找出含有 collectiveTrust ID 的金鑰儲存庫元素。location="${server.config.dir}/resources/collective/collectiveTrust.jks"/> 取代為下列幾行:
      location="safkeyring:///CONTROL.KEYRING"                  
      type="JCERACFKS" fileBased="false" readOnly="true" />
          

      請勿變更 collectiveRootKeys 金鑰儲存庫元素。

  7. 在成員 server.xml 檔中,以 SAF 金鑰環名稱取代金鑰檔名稱。
    1. 找出含有 defaultKeyStore ID 的金鑰儲存庫元素。location="${server.config.dir}/resources/security/key.jks"/> 取代為下列幾行:
      location="safkeyring:///MEMBER.KEY"                  
      type="JCERACFKS" fileBased="false" readOnly="true" />
    2. 找出含有 defaultTrustStore ID 的金鑰儲存庫元素。location="${server.config.dir}/resources/security/trust.jks"/> 取代為下列幾行:
      location="safkeyring:///MEMBER.TRUST"                                 
      type="JCERACFKS" fileBased="false" readOnly="true" />  
    3. 找出含有 serverIdentity ID 的金鑰儲存庫元素。location="${server.config.dir}/resources/collective/serverIdentity.jks"/> 取代為下列幾行:
      location="safkeyring:///MEMBER.KEY"                  
      type="JCERACFKS" fileBased="false" readOnly="true" />
          
    4. 找出含有 collectiveTrust ID 的金鑰儲存庫元素。location="${server.config.dir}/resources/collective/collectiveTrust.jks"/> 取代為下列幾行:
      location="safkeyring:///MEMBER.TRUST"                  
      type="JCERACFKS" fileBased="false" readOnly="true" />
          
  8. 啟動控制器和成員。

指示主題類型的圖示 作業主題

檔名:tagt_wlp_collective_zos_tls.html