新規インストール用の外部証明書の構成ガイドライン

外部証明書を使用するように新しいストアを構成するには、次のステップを実行します。

ノート:

この手順では、Javaのキーストアおよびトラストストアの設定がすでに存在することを前提としています。詳細は、Javaキーストアの準備を参照してください。

  1. 外部証明書の詳細情報から、識別名を収集します。この例では、これは所有者フィールドの値です。

    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 
  2. 識別名を使用してdnmatch式を準備します。Oracle NoSQL Databaseでは、サーバー・コンポーネント間のSSL接続の確立中に、サーバーとクライアントのIDが検証されます。この検証は、両側のプリンシパル名が、java.util.regex.Patternで指定された正規表現を使用する、指定されたdnmatch式と一致するかどうかをチェックすることで行われます。プリンシパル名は、証明書のサブジェクト名属性で指定されるIDを表し、属性値の正確な順序、大文字表記および空白を使用して、RFC 1779形式の識別名として表されます。RFC 1779は、CN、L、ST O、OU、C、STREETなど、識別名の有効な属性を定義しています。外部証明書の識別名に非標準属性(EMAILADDRESSなど)が含まれている場合、dnmatchに使用する式では、これらの属性名をRFC 1779形式で有効なOIDで置き換えるか、またはこれらの属性のチェックをスキップするために正規表現の特別な構成を使用する必要があります。dnmatch式の形式は、次のとおりです。

    dnmatch(正規表現)

    前述の例で、dnmatch式は次のようになります。
    dnmatch(CN=myhost, OU=TeamA, O=MyCompany, L=Unknown, 
    ST=California, C=US)
    ワイルド・カードを使用して、非標準識別名属性を含む証明書と一致させる場合、dnmatch式は、そのOID形式の属性名と適切に一致する必要があります。たとえば、識別名が次のような場合を考えます。
    EMAILADDRESS=person@example.com, CN=myhost, OU=TeamA, O=MyCompany, 
    L=Unknown, ST=California, C=US
    この場合、ワイルド・カードはEMAILADDRESS属性名全体を表す必要があります。
    dnmatch(.*=person@example.com, CN=myhost, OU=TeamA, O=MyCompany, 
    L=Unknown, ST=California, C=US)
  3. makebootconfigを実行して、セキュアなストアを設定します。また、セキュリティ・パラメータでキーストア・パスワードおよびdnmatch式も指定します。キーストア・パスワードpasswordには、外部証明書のJavaキーストアと同じパスワードを使用する必要があります。次を参照してください。
    java -Xmx64m -Xms64m -jar <KVHOME>/lib/kvstore.jar makebootconfig \
    -root KVROOT -host node01 -port 5000 -harange 5010,5020 -admin 5001 \
    -store-security configure \
    -pwdmgr wallet -kspwd password \
    -security-param client:serverIdentityAllowed="dnmatch
    (CN=myhost, OU=TeamA, O=MyCompany, L=Unknown, ST=California, C=US)" \
    -security-param internal:serverIdentityAllowed="dnmatch
    (CN=myhost, OU=TeamA, O=MyCompany, L=Unknown, ST=California, C=US)" \
    -security-param internal:clientIdentityAllowed="dnmatch
    (CN=myhost, OU=TeamA, O=MyCompany, L=Unknown, ST=California, C=US)" \
    -security-param ha:serverIdentityAllowed="dnmatch
    (CN=myhost, OU=TeamA, O=MyCompany, L=Unknown, ST=California, C=US)" \
    -security-param ha:clientIdentityAllowed="dnmatch
    (CN=myhost, OU=TeamA, O=MyCompany, L=Unknown, ST=California, C=US)"
    

    デフォルトでは、キーストア・エントリはsharedという別名で格納され、トラストストア・エントリはmykeyという別名で格納されます。キーストアおよびトラストストアにカスタマイズされた別名を使用している場合は、makebootconfigコマンドで追加のフラグを指定する必要があります。

    たとえば、カスタマイズしたキーストアの別名がcurrentKeyで、証明書がcurrentCertという別名のトラストストアに格納されている場合、次の追加パラメータをmakebootconfigコマンドに含める必要があります。
    -security-param "client:serverKeyAlias=currentKey"
    -security-param "ha:serverKeyAlias=currentKey"
    -security-param "internal:clientKeyAlias=currentKey"
    -security-param "internal:serverKeyAlias=currentKey"
    -security-param "keystoreSigPrivateKeyAlias=currentKey"
    -security-param "truststoreSigPublicKeyAlias=currentCert"
    これらの追加フラグを指定した変更後のmakebootconfigコマンドを次に示します。
    java -Xmx64m -Xms64m -jar <KVHOME>/lib/kvstore.jar makebootconfig \
    -root KVROOT -host node01 -port 5000 -harange 5010,5020 -admin 5001 \
    -store-security configure \
    -pwdmgr wallet -kspwd password \
    -security-param client:serverIdentityAllowed="dnmatch
    (CN=myhost, OU=TeamA, O=MyCompany, L=Unknown, ST=California, C=US)" \
    -security-param internal:serverIdentityAllowed="dnmatch
    (CN=myhost, OU=TeamA, O=MyCompany, L=Unknown, ST=California, C=US)" \
    -security-param internal:clientIdentityAllowed="dnmatch
    (CN=myhost, OU=TeamA, O=MyCompany, L=Unknown, ST=California, C=US)" \
    -security-param ha:serverIdentityAllowed="dnmatch
    (CN=myhost, OU=TeamA, O=MyCompany, L=Unknown, ST=California, C=US)" \
    -security-param ha:clientIdentityAllowed="dnmatch
    (CN=myhost, OU=TeamA, O=MyCompany, L=Unknown, ST=California, C=US)"
    -security-param "client:serverKeyAlias=currentKey" \
    -security-param "ha:serverKeyAlias=currentKey" \
    -security-param "internal:clientKeyAlias=currentKey" \
    -security-param "internal:serverKeyAlias=currentKey" \
    -security-param "keystoreSigPrivateKeyAlias=currentKey" \
    -security-param "truststoreSigPublicKeyAlias=currentCert"
  4. makebootconfigコマンドは、自己署名証明書を使用して、キーストア、サーバーおよびクライアント・トラストストアのファイルを自動的に生成します。かわりに外部証明書を使用するには、ストレージ・ノードをホストする各サーバーで、キーストアおよびトラストストアのファイルを独自のものに置き換える必要があります。次に例を示します。

    copy store.keys store.trust client.trust KVROOT/security/ 
  5. securityconfigツールを使用して、インストールを検証します。次に例を示します。

    security-> config verify -secdir KVROOT/security
    Security configuration verification passed.

    ノート:

    以前のリリース(4.1より前)では、構成を手動で検証する必要がありました。その場合、証明書の識別名は、security.xmlのdnmatch内のコンテンツと一致する必要があります。また、ユーザー生成のキーストア・パスワードは、ウォレット(store.wallet)またはパスワード・ファイル(store.pwd)に格納されているものと同じである必要があります。最後に、トラストストア(store.trust)には、CA証明書とOracle NoSQL Databaseで使用される証明書が含まれている必要があります。

  6. 最後に、client.trustを配信するか、クライアント・トラストストアにCA証明書をインポートします。