C Javaキーストアの準備

次の例では、keytoolを使用して、キーストアおよびトラストストアを外部証明書で準備する方法を示します。外部ツールによって生成された既存の秘密/公開キーのペアをインポートする場合は、Javaキーストアへのキー・ペアのインポートを参照してください。

  1. キー・ペアを生成してstore.keysに格納します

    keytool -genkeypair -keystore store.keys \
    -alias shared -keyAlg RSA -keysize 2048 \
    -validity 365  -dname \
    "CN=my-nosql-cluster.example.com, \
    OU=My Company, O=IT, L=San Francisco, ST=CA, C=US" \
    -storepass <passwd> -keypass <passwd> 
    
    Enter key password for <shared>
    (RETURN if same as keystore password): 

    ノート:

    Store.keysOracle NoSQL Databaseキーストアのデフォルト名で、sharedOracle NoSQL Database証明書のデフォルトの別名です。makebootconfigコマンドまたはsecurityconfigユーティリティでセキュリティ・パラメータを指定して、名前をカスタマイズできます。また、アルゴリズムおよびキーのサイズと有効性を指定できます。

    キー・ペアをエクスポートするには、keytool -exportコマンドを使用します。
    keytool -export \
    -file <temp file> \
    -keystore store.keys \
    -storepass <passwd> \
    -alias shared 
  2. 証明書リクエストを生成してCAに送信します。

    keytool -certreq -keystore store.keys -alias \
    shared -file myhost.csr
    Enter keystore password: 
  3. 通常、公開された信頼できるCAは、csrファイルを受け取った後、証明書に署名します。pemファイル(myhost.cert.pem)が生成されます。

  4. 証明書チェーンに含まれている証明書を順番にインポートします。複数の中間証明書が存在する場合は、それらも順番にインポートする必要があります。

    keytool -import -file ca.cert.pem \
    -keystore store.keys -alias root
    
    keytool -import -file intermediate.cert.pem -keystore store.keys \
    -alias intermediate
    # After importing the root and intermediate certificates,
    # install the signed certificate for this server. The alias name
    # must be specified.
    keytool -import -file myhost.cert.pem -keystore store.keys \
    -alias shared
    
    Certificate reply was installed in keystore 
  5. store.keysの証明書コンテンツを確認して、インストールを検証します。

    keytool -list -v -keystore store.keys -alias shared
    Certificate chain length: 3
    Certificate[1]:
    Owner: CN=myhost, OU=TeamA, O=MyCompany, L=Unknown, 
    ST=California, C=US
    Issuer: CN=intermediate CA, OU=CA, O=MyCompany, 
    ST=California, C=US 

    証明書チェーンの長さは、インポートされたチェーン内の証明書の数(この場合は3)と一致する必要があります。

  6. サーバー・トラストストア(store.trust)を作成します。サーバー・トラストストアには、署名付き証明書、ルート証明書および中間証明書が含まれている必要があります。サーバー・トラストストアおよびクライアント・トラストストアでは、キーストアと同じパスワードを使用する必要があることに注意してください。

    keytool -export -file store.tmp -keystore store.keys -alias shared
    
    keytool -import -keystore store.trust -file store.tmp
    
    keytool -import -keystore store.trust -file ca.cert.pem -alias root
    
    keytool -import -keystore store.trust -file intermediate.cert.pem -alias intermediate 
  7. クライアント・トラストストア(client.trust)を作成します。この場合、クライアント・トラストストアにルート証明書と中間証明書をインポートします。

    client.trustファイルは、サーバーの証明書を検証するためにクライアント・アプリケーションによって使用されるトラストストアです。設定に応じて、パスワードなしのPKCS12形式またはパスワードで保護された形式で作成できます。デフォルトでは、NoSQL securityconfigユーティリティを使用すると、トラストストアはパスワードなしのPKCS12形式で作成されます。標準のJavaトラストストアのデフォルトの動作では、パスワードが必要です。

    1. パスワードなしのPKCS12トラストストア

      Oracle NoSQL Databaseリリース22.1以降では、パスワードなしのclient.trustがJavaバージョンでサポートされている場合、securityconfigユーティリティによってパスワードなしで作成されます。

      サポートされているJavaバージョンは次のとおりです。
      • Java 8の場合、JDK 8u301以上
      • Java 11の場合、JDK 11.0.12以上
      • JDK 17以上
      mkdir tmp_root
      
      java -jar $KVHOME/lib/kvstore.jar securityconfig config create -root tmp_root -kspwd <store-password>

      これにより、パスワードなしでtmp_root/security/client.trustが生成されます。

      CAルート証明書と中間証明書をインポートします:

      keytool -importcert -keystore client.trust -storetype PKCS12 -file ca.cert.pem -alias root -noprompt
      
      keytool -importcert -keystore client.trust -storetype PKCS12 -file intermediate.cert.pem -alias intermediate -noprompt

      未使用のデフォルトの別名を削除します:

      keytool -delete -keystore tmp_root/security/client.trust -alias mykey

      ノート:

      サポートされていないJavaバージョンでパスワードなしのPKCS12トラストストアを作成しようとすると、エラーが表示されることがあります。この場合、パスワードで保護されたトラストストアを使用するか、次のようにJKSトラストストアを作成します:
      keytool -importcert -keystore client.trust -storetype JKS -storepass <password> -file ca.cert.pem -alias root -noprompt
      
      keytool -importcert -keystore client.trust -storetype JKS -storepass <password> -file intermediate.cert.pem -alias intermediate -noprompt
    2. パスワードで保護されたトラストストアの作成
      keytool -importcert -keystore client.trust -storetype PKCS12 -storepass <password> -file ca.cert.pem -alias root -noprompt
      
      keytool -importcert -keystore client.trust -storetype PKCS12 -storepass <password> -file intermediate.cert.pem -alias intermediate -noprompt

      クライアント・アプリケーションは、「デフォルトのセキュリティ構成」に従って、次のログイン・プロパティを設定する必要があります。

      oracle.kv.ssl.trustStorePassword=<password>
      
      oracle.kv.ssl.trustStorePasswordAlias=<aliasName>

      詳細は、「PKCS12のJavaキーストアの使用に関するガイドライン」を参照してください。