13.5.2. Directory Server で証明書システムが発行する証明書の使用

証明書システムのインストール時に Directory Server への暗号化された接続を使用するには、外部の認証局 (CA) によって発行された証明書または自己署名証明書のいずれかを使用する必要がありました。ただし、証明書システム CA を設定した後、管理者は、証明書システムが発行した証明書に置き換えることがよくあります。
Directory Server が使用する TLS 証明書を、Certificate System が発行した証明書に置き換えるには、次のコマンドを実行します。
  1. Directory Server ホストで以下を行います。
    1. Directory Server インスタンスを停止します。
      # systemctl stop dirsrv@instance_name
    2. Certificate Signing Request (CSR) を生成します。
      たとえば、2048 ビット RSA 暗号化を使用し、これを ~/ds.csr ファイルに保存する CSR を生成するには、以下を実行します。
      # PKCS10Client -d /etc/dirsrv/slapd-instance_name/ -p password -a rsa -l 2048 -o ~/ds.csr -n "CN=$HOSTNAME"
      PKCS10Client: Debug: got token.
      PKCS10Client: Debug: thread token set.
      PKCS10Client: token Internal Key Storage Token logged in...
      PKCS10Client: key pair generated.
      PKCS10Client: CertificationRequest created.
      PKCS10Client: b64encode completes.
      Keypair private key id: -3387b397ebe254b91c5d6c06dc36618d2ea8b7e6
      
      -----BEGIN CERTIFICATE REQUEST-----
      ...
      -----END CERTIFICATE REQUEST-----
      PKCS10Client: done. Request written to file: ~/ds.csr
    3. Directory Server インスタンスを起動し、CA が要求の処理できるようにします。
      # systemctl start dirsrv@instance_name
    4. CSR を Certificate System の CA に送信します。以下に例を示します。
      # pki -d /etc/dirsrv/slapd-instance_name/ ca-cert-request-submit --profile caServerCert --csr-file ~/ds.csr
      -----------------------------
      Submitted certificate request
      -----------------------------
        Request ID: 13
        Type: enrollment
        Request Status: pending
        Operation Result: success
  2. Certificate System ホストで以下を行います。
    1. CA エージェント証明書を Network Security Services (NSS) データベースにインポートして、CMC フル要求を署名します。
      1. 新しいディレクトリーを作成します。以下に例を示します。
        # mkdir ~/certs_db/
      2. 新たに作成したディレクトリーでデータベースを初期化します。
        # certutil -N -d ~/certs_db/
      3. CA 署名証明書のシリアル番号を表示します。
        # pki -p 8080 ca-cert-find --name "CA Signing Certificate"
        ---------------
        1 entries found
        ---------------
        Serial Number: 0x87bbe2d
        ...
      4. 前の手順のシリアル番号を使用して、CA 署名証明書を ~/certs_db/CA.pem ファイルにダウンロードします。
        # pki -p 8080 ca-cert-show 0x87bbe2d --output ~/certs_db/CA.pem
      5. CA 署名証明書を NSS データベースにインポートします。
        # pki -d ~/certs_db/ -c password client-cert-import "CA Certificate" --ca-cert ~/certs_db/CA.pem
      6. エージェントの証明書をインポートします。
        # pk12util -d ~/certs_db/ -i ~/.dogtag/instance_name/ca_admin_cert.p12
        Enter Password or Pin for "NSS FIPS 140-2 Certificate DB": password
        Enter password for PKCS12 file: password
        pk12util: PKCS12 IMPORT SUCCESSFUL
        
    2. CMS (CMC) 要求で Certificate Management を作成します。
      1. ~/sslserver-cmc-request.cfg などの設定ファイルを以下の内容で作成します。
        # NSS database directory where the CA agent certificate is stored.
        dbdir=~/certs_db/
        
        # NSS database password.
        password=password
        
        # Token name (default is internal).
        tokenname=internal
        
        # Nickname for CA agent certificate.
        nickname=caadmin
        
        # Request format: pkcs10 or crmf.
        format=pkcs10
        
        # Total number of PKCS10/CRMF requests.
        numRequests=1
        
        # Path to the PKCS10/CRMF request.
        # The content must be in Base-64 encoded format.
        # Multiple files are supported. They must be separated by space.
        input=~/ds.csr
        
        # Path for the CMC request.
        output=~/sslserver-cmc-request.bin
      2. CMC 要求を作成します。
        # CMCRequest ~/sslserver-cmc-request.cfg
        ...
        The CMC enrollment request in base-64 encoded format:
        ...
        The CMC enrollment request in binary format is stored in ~/sslserver-cmc-request.bin
    3. CMC 要求を送信します。
      1. ~/sslserver-cmc-submit.cfg などの設定ファイルを以下の内容で作成します。
        # PKI server host name.
        host=server.example.com
        
        # PKI server port number.
        port=8443
        
        # Use secure connection.
        secure=true
        
        # Use client authentication.
        clientmode=true
        
        # NSS database directory where the CA agent certificate is stored.
        dbdir=~/certs_db/
        
        # NSS database password.
        password=password
        
        # Token name (default: internal).
        tokenname=internal
        
        # Nickname of CA agent certificate.
        nickname=caadmin
        
        # CMC servlet path
        servlet=/ca/ee/ca/profileSubmitCMCFull?profileId=caCMCserverCert
        
        # Path for the CMC request.
        input=~/sslserver-cmc-request.bin
        
        # Path for the CMC response.
        output=~/sslserver-cmc-response.bin
      2. 要求を送信します。
        # HttpClient sslserver-cmc-submit.cfg
        ...
        The response in binary format is stored in
        ~/sslserver-cmc-response.bin
      3. 必要に応じて、結果を確認します。
        # CMCResponse -d ~/certs_db/ -i ~/sslserver-cmc-response.bin
        ...
        Number of controls is 1
        Control #0: CMCStatusInfoV2
           OID: {1 3 6 1 5 5 7 7 25}
           BodyList: 1
           Status: SUCCESS
        
    4. Directory Server 証明書のシリアル番号を表示します。
      # pki -p 8080 ca-cert-find --name "DS Certificate"
      ---------------
      1 entries found
      ---------------
      Serial Number: 0xc3eeb0c
      ...
    5. 前の手順でシリアル番号を使用して、証明書をダウンロードします。
      # pki -p 8080 ca-cert-show 0xc3eeb0c --output ~/ds.crt
    6. Directory Server および CA 証明書の証明書を Directory Server ホストにコピーします。以下に例を示します。
      # scp ~/ds.crt ~/certs_db/CA.pem ds.example.com:~/
    7. Certificate System を停止します。
      # systemctl stop pki-tomcatd@instance_name.service
  3. Directory Server ホストで以下を行います。
    1. Directory Server インスタンスを停止します。
      # systemctl stop dirsrv@instance_name
    2. 証明書を置き換えます。詳細は、『Red Hat Directory Server 管理ガイド』 の該当するセクションを参照してください。
      1. 古い証明書および CA 証明書を削除します。『証明書の削除』を参照してください。
      2. Certificate System が発行する CA 証明書をインストールします。『認証局証明書のインストール』を参照してください。
      3. Certificate System が発行する Directory Server の証明書をインストールします。『証明書のインストール』を参照してください。
    3. Directory Server インスタンスを停止します。
      # systemctl start dirsrv@instance_name
  4. Certificate System を開始します。
    # systemctl stop pki-tomcatd@instance_name.service
  5. 必要に応じて、証明書ベースの認証を設定します。詳細は、「内部データベースでの SSL/TLS クライアント認証の有効化」 を参照してください。