ttCreateCerts

ttCreateCertsユーティリティは、TimesTenクライアント/サーバーおよびレプリケーション環境でTransport Layer Security (TLS)を構成する際に使用されるOracleウォレットと証明書を作成します。

Transport Layer Security(TLS)について

TLSは、ネットワーク接続を保護するための業界標準プロトコルです。TLSでは、認証、データ暗号化およびデータ整合性が提供されます。TLSプロトコルは、公開キー・インフラストラクチャ(PKI)の基盤となります。TLSでは認証に、X.509v3標準に準拠したデジタル証明書と公開/秘密キー・ペアを使用します。公開/秘密キー・ペアでは、暗号化と復号化に2つの数値のセットが使用されます。一方を秘密キー、もう一方を公開キーと呼びます。公開キーは通常広く入手できるようになりますが、秘密キーはそれぞれの所有者が保持します。数学的に関連してはいますが、一般に公開キーから秘密キーを導出することは計算上不可能であると見なされています。公開キーと秘密キーは、非対称暗号化アルゴリズム(公開キー暗号化アルゴリズムとも呼ばれる)でのみ使用されます。『Oracle Databaseセキュリティ・ガイド』を参照してください。

公開キー・インフラストラクチャ(PKI)について

PKIでは、非対称キー操作(公開キー暗号化とも呼ばれる)の原則を利用します。PKIをサポートするために、TimesTen ttCreateCertsユーティリティは、Oracleウォレットやデジタル証明書など、複数のPKI要素を作成および管理します。

Oracleウォレットは、認証および署名資格証明(TLSが必要とする秘密キーや証明書など)を格納するコンテナです。TLSを介して通信するエンティティ(TimesTenクライアント/サーバーやTimesTenレプリケーションなど)には、1つ以上のOracleウォレットが必要です。各ウォレットには、TLSに必要なキーおよび証明書が含まれています。

ウォレットには様々なタイプがあります。ttCreateCertsユーティリティは、ユーザー・パスワードを必要としない読取り/書込みウォレットを作成します。各ウォレットは、cwallet.ssoというシングル・サインオン(SSO)ファイルで構成され、PKCS#12形式です。ttCreateCertsユーティリティは、ルート・ウォレット、サーバー・ウォレットおよびクライアント・ウォレットを作成します。

証明書(PKIデジタル証明書とも呼ばれる)は、ウォレットを使用する公開キーまたは秘密キー交換で、エンド・エンティティのアイデンティティを検証するウォレット・コンポーネントです。証明書は、アイデンティティを公開キーに安全に紐付ける国際電気通信連合(ITU)のx.509 v3標準データ構造です。信頼できるアイデンティティによってエンティティの公開キーが署名されると作成されます。証明書は、エンティティ内の情報が正しいことと、公開キーがそのエンティティに属することを保証します。

TimesTenでは、自己署名証明書など、複数のタイプの証明書がサポートされています。自己署名証明書は、公的に信頼できるサード・パーティ認証局(CA)ではなく、サーバーによって作成、発行およびデジタル署名されるデジタル証明書です。証明書は、発行者の名前(署名者)とサブジェクトの名前(所有者)が同じ場合、自己署名されます。

ttCreateCertsユーティリティは、自己署名ルート証明書を作成し、それを使用してクライアント/サーバーとレプリケーションの両方のサーバー証明書に署名します。TimesTenは、サーバー証明書および自己署名ルート証明書をサーバー・ウォレットに格納します。TimesTenクライアント/サーバー環境で、クライアントがサーバー証明書を信頼できるようにするには、自己署名ルート証明書のコピーがクライアントに必要です。ttCreateCertsユーティリティは、クライアント・ウォレットを作成し、自己署名ルート証明書をその中に格納します。

TimesTenにおけるPKI要素のサポートについて

TimesTenでは、TLSを構成する際に非対称キー・ペアを使用します。TimesTenでサポートされているのは、次のとおりです:
  • ECDSA (Elliptic Curve Digital Signature Algorithm): 楕円曲線からの数学を使用して強力なデジタル署名を作成する公開キー非対称暗号化アルゴリズム。TimesTenでは、p256p384 (デフォルト)およびp521の楕円曲線と、ecdsasha256ecdsasha384 (デフォルト)およびecdsasha512の楕円曲線署名アルゴリズムがサポートされています。

  • RSA (Rivest-Shamir-Adleman): 大きな数(2つの素数の積)の因数分解が困難であることに依拠する暗号化キーのペア(公開キーと秘密キー)。TimesTenでは、2048および4096のキー・サイズ(ビット単位)がサポートされており、4096がデフォルトです。サポートされている署名アルゴリズムは、sha256sha384およびsha512 (デフォルト)です。

TimesTenでは、OracleウォレットでのPKI資格証明(キーやX.509証明書など)の格納および管理をサポートしています。OracleウォレットはPKCS #12 (Public-Key Cryptography Standards)に準拠し、秘密キーと証明書を安全に格納します。

ttCreateCertsユーティリティには、-asym_alg-sign_alg-keysize-eccurveなどのオプションが用意されており、これらを使用すると、非対称暗号化アルゴリズム、署名アルゴリズム、eccurve (ECDSAの場合)およびキー・サイズ(RSAの場合)を指定できます。

ttCreateCertsによるTLSの構成方法

ttCreateCertsがどのようにOracleウォレットおよび証明書を作成し、TLSの構成に必要なステップを実行するかを見てみましょう。

ノート:

これは、例示のみを目的としています。
  1. 指定したディレクトリにルート・ウォレットを作成します。ウォレットを保持するディレクトリの名前は、rootWalletです。その中に、cwallet.ssoファイルがあります。.lckファイルは無視します。
    $ ls
    rootWallet
    $ ls rootWallet
    cwallet.sso  cwallet.sso.lck
  2. ルートCAウォレット用の自己署名ルート証明書を作成します。サブジェクトと発行者が同じであることに注意してください。
    $ ttCreateCerts -run "wallet display -wallet /wallets/ecc/rootWallet -complete"
    Requested Certificates:
    User Certificates:
    Subject:        CN=ecRoot,C=US
    Issuer:         CN=ecRoot,C=US
    Serial Number:  49:08:C9:CA:D9:C5:6F:E4:22:B7:96:C5:55:E0:96:49
    Key Length      384
    MD5 digest:     77:4A:3C:FF:25:50:3A:6B:E9:D4:12:4F:7F:80:71:DF
    SHA digest:     02:97:A9:A5:D5:8A:A6:C4:1B:9B:17:FE:11:3C:A4:CE:39:0B:27:BF
    
    Trusted Certificates:
    Subject:        CN=ecRoot,C=US
    Issuer:         CN=ecRoot,C=US
    Serial Number:  49:08:C9:CA:D9:C5:6F:E4:22:B7:96:C5:55:E0:96:49
    Key Length      384
    MD5 digest:     77:4A:3C:FF:25:50:3A:6B:E9:D4:12:4F:7F:80:71:DF
    SHA digest:     02:97:A9:A5:D5:8A:A6:C4:1B:9B:17:FE:11:3C:A4:CE:39:0B:27:BF
  3. 信頼できるルート証明書をroot.certというファイルにエクスポートします。証明書では、デフォルトのECCキー、デフォルトのeccurveおよびデフォルトの署名アルゴリズムを使用します。これらのデフォルトは、ttCreateCertsコマンドラインでオーバーライドできます。
    $ ls
    root.cert  rootWallet
    $ openssl x509 -in wallets/ecc/root.cert -noout -text
    Certificate:
        Data:
            Version: 1 (0x0)
            Serial Number:
                49:08:c9:ca:d9:c5:6f:e4:22:b7:96:c5:55:e0:96:49
            Signature Algorithm: ecdsa-with-SHA384
            Issuer: C = US, CN = ecRoot
            Validity
                Not Before: Dec 11 13:49:09 2025 GMT
                Not After : Dec  9 13:49:09 2035 GMT
            Subject: C = US, CN = ecRoot
            Subject Public Key Info:
                Public Key Algorithm: id-ecPublicKey
                    Public-Key: (384 bit)
                    pub:
                        04:18:94:29:eb:a4:0d:b7:0e:db:ce:1b:82:61:d2:
                        dd:c9:d3:d6:c2:a3:25:49:72:67:2b:44:92:cf:db:
                        5c:c5:ce:7d:8d:c4:4d:55:7e:85:de:0f:52:59:08:
                        2e:3d:02:e0:35:14:36:0a:b4:6d:7f:a7:5e:12:0a:
                        49:ba:ff:21:ea:48:2d:9e:a5:6f:55:36:e9:e1:35:
                        a5:c8:da:68:71:35:54:3a:85:6c:29:83:2d:bc:10:
                        ff:70:73:e0:ab:8f:22
                    ASN1 OID: secp384r1
                    NIST CURVE: P-384
        Signature Algorithm: ecdsa-with-SHA384
             30:65:02:30:44:70:ae:0a:b4:fa:9e:fd:42:be:af:b2:1b:48:
             c6:d8:44:95:1b:53:7f:5f:a3:16:0f:6d:1e:43:69:52:46:14:
             cf:c7:a8:99:4c:ee:93:f7:c6:88:48:e6:dd:1a:a8:5a:02:31:
             00:e0:a2:f2:00:9c:d6:16:2a:be:4c:f0:5b:ab:bf:7c:29:21:
             c3:c1:1b:70:33:10:b9:2f:75:ac:fc:51:b7:57:d4:a9:ad:33:
             8a:4f:e9:13:b6:cc:d4:b0:4f:d1:5e:11:78
  4. サーバー・ウォレットを作成します。ウォレットの場所は、serverWalletです。serverWalletには、cwallet.ssoファイルがあります。
    $ ls serverWallet
    cwallet.sso  ...
  5. 信頼できるルート証明書をサーバー・ウォレットに追加します。
    $ ttCreateCerts -run "wallet display -wallet /wallets/ecc/serverWallet -complete"               Requested Certificates:
    User Certificates:
    Trusted Certificates:
    Subject:        CN=ecRoot,C=US
    Issuer:         CN=ecRoot,C=US
    Serial Number:  49:08:C9:CA:D9:C5:6F:E4:22:B7:96:C5:55:E0:96:49
    Key Length      384
    MD5 digest:     77:4A:3C:FF:25:50:3A:6B:E9:D4:12:4F:7F:80:71:DF
    SHA digest:     02:97:A9:A5:D5:8A:A6:C4:1B:9B:17:FE:11:3C:A4:CE:39:0B:27:BF
  6. 同じキーおよび署名アルゴリズムを使用して、秘密キーおよびリクエスト証明書をサーバー・ウォレットに追加します。
    $ ttCreateCerts -run "wallet display -wallet /wallets/ecc/serverWallet -complete"               
    Requested Certificates:
    Subject:        CN=server1,C=US
    Key Length:     384
    
    User Certificates:
    Trusted Certificates:
    Subject:        CN=ecRoot,C=US
    Issuer:         CN=ecRoot,C=US
    Serial Number:  49:08:C9:CA:D9:C5:6F:E4:22:B7:96:C5:55:E0:96:49
    Key Length      384
    MD5 digest:     77:4A:3C:FF:25:50:3A:6B:E9:D4:12:4F:7F:80:71:DF
    SHA digest:     02:97:A9:A5:D5:8A:A6:C4:1B:9B:17:FE:11:3C:A4:CE:39:0B:27:BF
  7. 証明書リクエストをエクスポートして、署名を取得します。リクエストの名前はserver1.requestです。
    $ ls
    root.cert  rootWallet  server1.request  serverWallet
    $ cat wallets/server1.request
    -----BEGIN NEW CERTIFICATE REQUEST-----
    MIIBGDCBngIBADAfMQswCQYDVQQGEwJVUzEQMA4GA1UEAxMHc2VydmVyMTB2MBAG
    ByqGSM49AgEGBSuBBAAiA2IABA9W+6uboRU3BM/pTKjl/EAgW1lGk/2UapgcprCX
    14JC83d6BAV1/uc2VwXdTe/6HffBMa9vSItMOFuYQsOUmfHvcUEd8Ex2jwWphChy
    KjrsPVjF40b6R5ozJHh5NZO3qaAAMAwGCCqGSM49BAMDBQADZwAwZAIwEOuo3KsB
    fIEOKfakjCImAwOjWyoAX+ABTz+9OwjXr2azCfKw8nUSw3MTrbKUfmJOAjAMG6ZU
    royrOkb+yRnLCIf5GW9r2fTXVqmoREddSmGf2mlA2sAy+jURIfeAI2COb0w=
    -----END NEW CERTIFICATE REQUEST-----
  8. 自己署名ルート・ウォレットを使用して証明書リクエストに署名します。server1.cert証明書は、署名付き証明書です。
    $ ls
    root.cert  rootWallet  server1.cert  server1.request  serverWallet
    
    $ cat server1.cert
    -----BEGIN CERTIFICATE-----
    MIIBZjCB6gIBADAMBggqhkjOPQQDAwUAMB4xCzAJBgNVBAYTAlVTMQ8wDQYDVQQD
    EwZlY1Jvb3QwHhcNMjUxMjExMTQyNzQzWhcNMzUxMjA5MTQyNzQzWjAfMQswCQYD
    VQQGEwJVUzEQMA4GA1UEAxMHc2VydmVyMTB2MBAGByqGSM49AgEGBSuBBAAiA2IA
    BA9W+6uboRU3BM/pTKjl/EAgW1lGk/2UapgcprCX14JC83d6BAV1/uc2VwXdTe/6
    HffBMa9vSItMOFuYQsOUmfHvcUEd8Ex2jwWphChyKjrsPVjF40b6R5ozJHh5NZO3
    qTAMBggqhkjOPQQDAwUAA2kAMGYCMQCuew8xBMEcMclUtrH96XVJv4UCexKKQMK6
    BpJks2/sIE4FY3OfkejKh3FmQlkrWZwCMQDMn6ivKd4x7bRDv23VkZ/erkydHMbb
    PUHhEOufQ6/Wwm50VzSATlR9AmTKXmcreOg=
    -----END CERTIFICATE-----
  9. 署名付きサーバー・ユーザー証明書をサーバー・ウォレットにインポートします。サーバー証明書がUser Certificatesの下に表示され、サブジェクトと発行者が異なることに注意してください。
    $ ttCreateCerts -run "wallet display -wallet /wallets/ecc/serverWallet -complete"
    Requested Certificates:
    User Certificates:
    Subject:        CN=server1,C=US
    Issuer:         CN=ecRoot,C=US
    Serial Number:  00
    Key Length      384
    MD5 digest:     2D:07:F1:F8:34:23:92:8F:BD:15:98:A7:5C:B8:CF:EA
    SHA digest:     B5:F9:81:63:F3:C7:39:E0:B8:54:37:42:D4:FE:3F:1C:C6:44:9C:12
    
    Trusted Certificates:
    Subject:        CN=ecRoot,C=US
    Issuer:         CN=ecRoot,C=US
    Serial Number:  49:08:C9:CA:D9:C5:6F:E4:22:B7:96:C5:55:E0:96:49
    Key Length      384
    MD5 digest:     77:4A:3C:FF:25:50:3A:6B:E9:D4:12:4F:7F:80:71:DF
    SHA digest:     02:97:A9:A5:D5:8A:A6:C4:1B:9B:17:FE:11:3C:A4:CE:39:0B:27:BF
  10. クライアント・ウォレットを作成します。ウォレットの場所は、clientWalletです。その中に、cwallet.ssoファイルがあります。
    $ ls clientWallet
    cwallet.sso  ...
  11. 信頼できるルート証明書をウォレットに追加します。
    $ ttCreateCerts -run "wallet display -wallet /wallets/ecc/clientWallet -complete"
    Requested Certificates:
    User Certificates:
    Trusted Certificates:
    Subject:        CN=ecRoot,C=US
    Issuer:         CN=ecRoot,C=US
    Serial Number:  49:08:C9:CA:D9:C5:6F:E4:22:B7:96:C5:55:E0:96:49
    Key Length      384
    MD5 digest:     77:4A:3C:FF:25:50:3A:6B:E9:D4:12:4F:7F:80:71:DF
    SHA digest:     02:97:A9:A5:D5:8A:A6:C4:1B:9B:17:FE:11:3C:A4:CE:39:0B:27:BF
  12. クライアント・ウォレットに秘密キーおよび証明書リクエストを追加します。このステップは、-noclientを指定した場合には発生しません。
    $ ttCreateCerts -run "wallet display -wallet /wallets/ecc/clientWallet -complete"               Requested Certificates:
    Subject:        CN=client1,C=US
    Key Length:     384
    
    User Certificates:
    Trusted Certificates:
    Subject:        CN=ecRoot,C=US
    Issuer:         CN=ecRoot,C=US
    Serial Number:  49:08:C9:CA:D9:C5:6F:E4:22:B7:96:C5:55:E0:96:49
    Key Length      384
    MD5 digest:     77:4A:3C:FF:25:50:3A:6B:E9:D4:12:4F:7F:80:71:DF
    SHA digest:     02:97:A9:A5:D5:8A:A6:C4:1B:9B:17:FE:11:3C:A4:CE:39:0B:27:BF
  13. クライアント証明書リクエストをエクスポートして、署名を取得します。このステップは、-noclientを指定した場合には発生しません。
    $ cat client1.request
    -----BEGIN NEW CERTIFICATE REQUEST-----
    MIIBGjCBngIBADAfMQswCQYDVQQGEwJVUzEQMA4GA1UEAxMHY2xpZW50MTB2MBAG
    ByqGSM49AgEGBSuBBAAiA2IABPHf1llWyhG+1ShYt8TcbCNGP9SERmelcrfJsYtH
    ww6AnCytLG/OlIEijjjJ4OsjZhe4jfWoi9gZRWt3aK99OWYcsaBgcaD9ckI3gLF7
    5izrwejKdugaI65c4ubTeImYwKAAMAwGCCqGSM49BAMDBQADaQAwZgIxAP7sQpiY
    m69xfkrx4bVUl0qvjdDPL6fUpS9DLmNiAhaRa8yc/e7YPcBEk2EX8934cwIxAL64
    bkgHL3qe3WSxu5PGH0sSXVhcm4zC+KHaqhBOajiecjAMzl5PXZdvCLngtLmTcA==
    -----END NEW CERTIFICATE REQUEST-----
  14. 自己署名ルート・ウォレットを使用して証明書に署名し、client1.certというファイルを作成します。
    $ ls
    client1.cert     clientWallet  rootWallet    server1.request
    client1.request  root.cert     server1.cert  serverWallet
    $ ttCreateCerts -run "wallet display -wallet /wallets/ecc/clientWallet -complete"               
    Requested Certificates:
    Subject:        CN=client1,C=US
    Key Length:     384
    
    User Certificates:
    Trusted Certificates:
    Subject:        CN=ecRoot,C=US
    Issuer:         CN=ecRoot,C=US
    Serial Number:  49:08:C9:CA:D9:C5:6F:E4:22:B7:96:C5:55:E0:96:49
    Key Length      384
    MD5 digest:     77:4A:3C:FF:25:50:3A:6B:E9:D4:12:4F:7F:80:71:DF
    SHA digest:     02:97:A9:A5:D5:8A:A6:C4:1B:9B:17:FE:11:3C:A4:CE:39:0B:27:BF
  15. 署名付きクライアント・ユーザー証明書をクライアント・ウォレットにインポートします。これで、クライアント証明書がUser Certificatesの下に表示されます。
    $ ttCreateCerts -run "wallet display -wallet /wallets/ecc/clientWallet -complete"               Requested Certificates:
    User Certificates:
    Subject:        CN=client1,C=US
    Issuer:         CN=ecRoot,C=US
    Serial Number:  00
    Key Length      384
    MD5 digest:     3A:E4:48:40:74:34:90:E6:25:3D:18:5D:76:0E:D1:EF
    SHA digest:     2C:AE:AC:ED:20:0A:9B:8E:6B:EC:2E:45:0E:D6:82:01:27:79:35:44
    
    Trusted Certificates:
    Subject:        CN=ecRoot,C=US
    Issuer:         CN=ecRoot,C=US
    Serial Number:  49:08:C9:CA:D9:C5:6F:E4:22:B7:96:C5:55:E0:96:49
    Key Length      384
    MD5 digest:     77:4A:3C:FF:25:50:3A:6B:E9:D4:12:4F:7F:80:71:DF
    SHA digest:     02:97:A9:A5:D5:8A:A6:C4:1B:9B:17:FE:11:3C:A4:CE:39:0B:27:BF

次のステップ:

クライアント/サーバーおよびレプリケーション用にTLSを構成するには、追加のステップを完了する必要があります。これらのステップでは、構成でOracleウォレットの場所を指定し、正しい暗号スイートを指定します。『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』「クライアント/サーバー用のTLSの構成」および「TimesTenレプリケーション用のTransport Layer Security」を参照してください。

ノート:

ttCreateCertsを使用するには、システムにJava JDKまたはJREバージョン1.8以降が必要です。その検索の際に、このユーティリティはJRE_HOMEJAVA_HOMEおよびPATHの設定に従います。

必要な権限

ユーティリティには、権限は必要ありません。ただし、ユーティリティによってディレクトリにファイルが作成および書き込まれる可能性があるため、インスタンス管理者権限が必要な場合があります。

TimesTen ScaleoutおよびTimesTen Classicでの使用

このユーティリティは、TimesTen ClassicとTimesTen Scaleoutの両方でサポートされています。

構文

ttCreateCerts -help
usage: ttCreateCerts [-dir WALLETDIR] [options...]
       ttCreateCerts [-h | -help]
       ttCreateCerts [-V | -version]
       ttCreateCerts [-showWallet WALLETDIR] [-json]
options:
  -f | -force
  -verbose
  -validity DAYS | -valid_from mm/dd/yyyy -valid_until mm/dd/yyyy
  -dryrun
  -fips140_mode
  -client | -noclient
  -sign_alg ALGORITHM (sha256 sha384 sha512 ecdsasha256 ecdsasha384 ecdsasha512)
  -asym_alg ECC -eccurve TYPE  (p256 p384 p521)
  -eccurve TYPE  (p256 p384 p521)
  -asym_alg RSA -keysize SIZE  (2048 4096)
  -keysize SIZE  (2048 4096)

オプション

次の表に、ttCreateCertsでサポートされるオプションを示します。2列目は、そのオプションがECCキーまたはRSAキー、あるいはその両方でサポートされているかどうかを示しています。

オプション ECCまたはRSAのサポート 説明

-dir

ECCとRSAの両方でサポート

ウォレットを配置するディレクトリを絶対パスとして指定します。

指定したディレクトリは、すでに存在している必要があります。また、-forceオプションを使用する場合を除いて、ttCreateCertsによって生成されたウォレットが含まれていない必要があります。デフォルトは、timesten_home/confです。

-h

-help

ECCとRSAの両方でサポート

ヘルプを表示します(前述の構文を表示します)。

-v

-V

-version

ECCとRSAの両方でサポート

TimesTenリリース番号を表示します。

-showWallet WALLETDIR [-json]

ECCとRSAの両方でサポート

指定されたWALLETDIRディレクトリ内の証明書に関する情報を表示します。オプションの-jsonパラメータが指定されている場合、ttCreateCertsは出力をJSON形式で表示します。

-f

-force

ECCとRSAの両方でサポート

以前のウォレットが指定したディレクトリ内にあれば上書きします。

-verbose

ECCとRSAの両方でサポート

ユーティリティの実行からの追加出力を表示します。

-validity

ECCとRSAの両方でサポート

作成するウォレットの存続期間を指定する2つの方法のうちの1つで、作成からの日数として期間を表します。

デフォルトは3650日です。これは、-validityを設定するか、-valid_from-valid_untilを設定することで上書きできます。

-valid_from

-valid_until

ECCとRSAの両方でサポート

作成するウォレットの存続期間を指定するもう1つの方法。期間は開始日および終了日としてmm/dd/yyyy形式で表します。

-dryrun

ECCとRSAの両方でサポート

ttCreateCertsで指定したとおりの証明書を作成するために実行されるすべてのコマンドをエコーしますが、それらのコマンドを実行しません。

設定していないオプションについては、これを使用することでデフォルト値を確認できます。

-fips140_mode

ECCとRSAの両方でサポート

証明書の生成時にFIPSモードを使用するようにttCreateCertsに指示します。デフォルトでは、ttCreateCertsはFIPSモードで実行されません。

TimesTenでは、FIPSモードで-eccurve p521オプションをサポートしません。

-client | -noclient

ECCとRSAの両方でサポート

ttCreateCertsがクライアント・ウォレットにクライアント証明書を追加するかどうかを示します。
  • -clientが指定されている場合、ttCreateCertsはクライアント・ウォレットにクライアント証明書を追加します。

  • -clientが指定されている場合、ttCreateCertsはクライアント・ウォレットにクライアント証明書を追加しません。

デフォルトは、-clientです。

-sign_alg sha256 |sha384 | sha512 |ecdsasha256 | ecdsasha384 | ecdsasha512

ECCとRSAの両方でサポート

証明書の署名に使用される署名アルゴリズムを指定します。

有効な値は次のとおりです。
  • ECCキーの場合、次の楕円曲線署名アルゴリズムのいずれかを使用する必要があります:
    • ecdsasha256

    • ecdsasha384 (ECCキーのデフォルト)

    • ecdsasha512
  • RSAキーの場合、次のRSA署名アルゴリズムのいずれかを使用する必要があります:
    • sha256

    • sha384
    • sha512 (RSAキーのデフォルト)

-asym_alg ECC -eccurve p256 | p384 | p521

ECCでサポート

-asym_algオプションは、キー・ペアの生成時に使用する非対称暗号化アルゴリズムを示します。有効な値は、ECCおよびRSAです。必ず大文字(たとえば、ECCRSA)を使用してください。

このオプションは、ECCに固有です:
  • ECDSA (Elliptic Curve Digital Signature Algorithm)を指します。これは、楕円曲線からの数学を使用して強力なデジタル署名を作成する公開キー非対称暗号化アルゴリズムです。

  • ECCキーとECC非対称暗号化アルゴリズムが証明書の生成に使用される場合、-eccurveオプションが有効になります。-eccurveオプションは、ECCキーの生成の基となる曲線を指定します。

  • -eccurveの有効な値は、p256p384 (デフォルト)またはp521です。

-asym_algオプションの使用方法の詳細は、使用ルールの項を参照してください。

-eccurve p256 | p384 | p521

ECCでサポート

-eccurveオプションは、ECCキーの生成の基となる曲線を指定します。-eccurveの有効な値は、p256p384 (デフォルト)またはp521です。

このオプションは、ECCキーにのみ有効です。

-asym_alg RSA -keysize 2048 | 4096

RSAでサポート

-asym_algオプションは、キー・ペアの生成時に使用する非対称暗号化アルゴリズムを示します。有効な値は、ECCおよびRSAです。必ず大文字(たとえば、ECCRSA)を使用してください。

このオプションは、RSAに固有です:
  • RSAとは、公開キーの暗号化およびデジタル署名に使用される暗号化キーのペア(公開キーと秘密キー)を指します。

  • RSAキーとRSA非対称暗号化アルゴリズムが証明書の生成に使用される場合、-keysizeオプションが有効になります。-keysizeオプションは、RSAキーのキー・サイズ(ビット単位)を設定します。サポートされているキー・サイズは、2048または4096 (デフォルト)です。

-keysize 2048 | 4096

RSAでサポート

-keysizeオプションは、RSAキーのキー・サイズ(ビット単位)を設定します。サポートされているキー・サイズは、2048または4096 (デフォルト)です。

このオプションは、RSAキーにのみ有効です。

ECCキーとRSAキーの使用ルール

次の使用ルールに注意してください:
  • -asym_algオプションは、キー・ペアの生成時に使用する非対称暗号化アルゴリズムを指定します。
    • アルゴリズムがRSAの場合は、-keysizeを指定して、生成されるRSAキーのサイズを設定できます。

    • アルゴリズムがECCの場合は、-eccurveを指定して、キーの生成の基となるECC曲線を設定できます。TimesTenでは、FIPSモードでp521 ECC曲線をサポートしません。

  • -asym_algを指定しない場合、次のルールが適用されます:
    • -eccurve-keysizeを指定した場合、ttCreateCertsユーティリティはエラーを返します。

    • -eccurveのみを指定した場合、ttCreateCertsはECCアルゴリズムを使用します。

    • -keysizeのみを指定した場合、ttCreateCertsはRSAアルゴリズムを使用します。

    • -eccurve-keysizeも指定しない場合、ttCreateCertsはECCアルゴリズムを使用します。

その他の考慮事項

ttCreateCertsユーティリティには、Oracle orapkiユーティリティのコマンドを実行して公開キー・インフラストラクチャ(PKI)要素を管理できる-runオプションもあります。次の例のように、orapkiコマンドを引用符で囲みます:

% ttCreateCerts -run "wallet create -wallet serverWallet -auto_login_only"

認証局によって署名された証明書の使用の詳細は、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』「サーバー・ウォレットの作成」「クライアント・ウォレットの作成」を参照してください。

orapkiの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

ttCreateCertsを手動で使用する他に、TimesTenインスタンスをTLS用に構成できます。これを行うと、TimesTenはttCreateCertsを実行して、インスタンス・レベルで使用するOracleウォレットおよび証明書を作成します。「ttInstanceCreate」を参照してください。

ttCreateCertsユーティリティは、TimesTenインスタンスのbinディレクトリにあります。フルパスの指定を回避するには、ttCreateCertsを実行する前にTIMESTEN_HOMEを設定します。これを行うには、インスタンスのbinディレクトリからttenv.shまたはttenv.cshスクリプトをソーシングします。

ECCおよびRSAの使用例

例1:

ttCreateCertsユーティリティを使用し、キー・サイズが2048かつ署名アルゴリズムがsha384のRSA非対称暗号化アルゴリズムを使用して、Oracleウォレットおよび証明書を作成します。この例では、任意のディレクトリからwallets/rsaサブディレクトリをすでに作成済であることを前提としています。
$ ttCreateCerts -dir wallets/rsa -asym_alg RSA -keysize 2048 -sign_alg sha384
ttCreateCerts : certificates created in wallets/rsa
ディレクトリを確認します。
$ ls wallets/rsa
client1.cert  clientWallet  root.cert  rootWallet  server1.cert  serverWallet
Oracleウォレットの情報を表示します。
$ ttCreateCerts -showWallet wallets/rsa/rootWallet
NAME                                                        HOLDER          EXPIRATION
wallets/rsa/rootWallet/cwallet.sso                          CN=ecRoot,C=US  Sun Dec 09 12:27:23 UTC 2035
$ ttCreateCerts -showWallet wallets/rsa/serverWallet
NAME                                                          HOLDER           EXPIRATION
wallets/rsa/serverWallet/cwallet.sso                          CN=server1,C=US  Sun Dec 09 12:27:32 UTC 2035
$ ttCreateCerts -showWallet wallets/rsa/clientWallet
NAME                                                          HOLDER           EXPIRATION
wallets/rsa/clientWallet/cwallet.sso                          CN=client1,C=US  Sun Dec 09 12:27:40 UTC 2035
ルートおよびサーバー証明書の生成に使用されるキーがRSAであることを確認します。
$ openssl x509 -in wallets/rsa/root.cert -noout -text | grep "Public Key Algorithm"
            Public Key Algorithm: rsaEncryption
$ openssl x509 -in wallets/rsa/server1.cert -noout -text | grep "Public Key Algorithm"
            Public Key Algorithm: rsaEncryption

例2:

ttCreateCertsユーティリティを使用し、楕円曲線がp521かつ署名アルゴリズムがecdsasha512のECDSA (ECC)非対称暗号化アルゴリズムを使用して、Oracleウォレットおよび証明書を作成します。この例では、任意のディレクトリからwallets/eccサブディレクトリをすでに作成済であることを前提としています。
$ ttCreateCerts -dir wallets/ecc -asym_alg ECC -eccurve p521 -sign_alg ecdsasha512
ttCreateCerts : certificates created in wallets/ecc
ディレクトリを確認します。
$ ls wallets/ecc
client1.cert  clientWallet  root.cert  rootWallet  server1.cert  serverWallet
Oracleウォレットの情報を表示します。
$ ttCreateCerts -showWallet wallets/ecc/rootWallet
NAME                                                        HOLDER          EXPIRATION
wallets/ecc/rootWallet/cwallet.sso                          CN=ecRoot,C=US  Sun Dec 09 12:50:08 UTC 2035
$ ttCreateCerts -showWallet wallets/ecc/serverWallet
NAME                                                          HOLDER           EXPIRATION
wallets/ecc/serverWallet/cwallet.sso                          CN=server1,C=US  Sun Dec 09 12:50:17 UTC 2035
 ttCreateCerts -showWallet wallets/ecc/clientWallet
NAME                                                          HOLDER           EXPIRATION
wallets/ecc/clientWallet/cwallet.sso                          CN=client1,C=US  Sun Dec 09 12:50:26 UTC 2035
ルートおよびサーバー証明書の生成に使用されるキーがECCであることを確認します。
$ openssl x509 -in wallets/ecc/root.cert -noout -text | grep "Public Key Algorithm"
            Public Key Algorithm: id-ecPublicKey
$ openssl x509 -in wallets/ecc/server1.cert -noout -text | grep "Public Key Algorithm"
            Public Key Algorithm: id-ecPublicKey

その他の例

この項では、timesten_home/conf内のwalletsサブディレクトリにウォレットを配置するttCreateCertsの例を示します。このtimesten_homeは、TimesTenインスタンス・ホーム・ディレクトリへのフルパスです。

次の例には、詳細出力が含まれています。(-verboseオプションがない場合は、最後の行のみが表示されます。)

% ttCreateCerts -verbose -dir timesten_home/conf/wallets
Requested Certificates:
User Certificates:
Subject:        CN=server1,C=US
Trusted Certificates:
Subject:        CN=ecRoot,C=US
Requested Certificates:
User Certificates:
Subject:        CN=client1,C=US
Trusted Certificates:
Subject:        CN=ecRoot,C=US
ttCreateCerts : certificates created in timesten_home/conf/wallets

結果を次に示します。clientWalletおよびserverWallet以外はすべて無視できます。

% ls timesten_home/conf/wallets
client1.cert  clientWallet  root.cert  rootWallet  server1.cert  serverWallet
% ls timesten_home/conf/wallets/clientWallet
cwallet.sso
% ls timesten_home/conf/wallets/serverWallet
cwallet.sso

次の例は、ドライ・ランです。証明書は作成されません(最終行の表示にかかわらず作成されません)。これは出力の一部のみを示しています。

% ttCreateCerts -dir timesten_home/conf/wallets -dryrun
...
+ /bin/java -Djava.security.egd=file:///dev/./urandom -Xms64m -Xmx512m -cp 
/scratch/classic221110/instances/tt221/install/lib/cryptoj_5_0.jar:
/scratch/classic221110/instances/tt221/install/lib/oraclepki.jar:
/scratch/classic221110/instances/tt221/install/lib/osdt_cert.jar:
/scratch/classic221110/instances/tt221/install/lib/osdt_core.jar 
oracle.security.pki.textui.OraclePKITextUI wallet add -wallet rootWallet -dn 
CN=ecRoot,C=US -sign_alg ecdsasha384 -self_signed -asym_alg ECC -eccurve p384 
-jsafe -validity 3650 -auto_login_only -nologo
...
ttCreateCerts : certificates created in timesten_home/conf/wallets

ここから、デフォルト設定が-sign_alg ecdsasha384-eccurve p384および-validity 3650 (日)になっていることがわかります。

次に、別の例を示します。この例では、楕円曲線の署名アルゴリズムとサイズを設定します。

% ttCreateCerts -dir timesten_home/conf/wallets -sign_alg ecdsasha256 
-eccurve p256
ttCreateCerts : certificates created in timesten_home/conf/wallets

この例では、証明書が作成されてから1年後に期限切れになることを指定しています。

% ttCreateCerts -dir timesten_home/conf/wallets -validity 365
ttCreateCerts : certificates created in timesten_home/conf/wallets

または、次のように指定します:

% ttCreateCerts -dir timesten_home/conf/wallets -valid_from 10/28/2022 
-valid_until 10/28/2025
ttCreateCerts : certificates created in timesten_home/conf/wallets

次の例は、ウォレットがすでに存在している場所にウォレットを作成しようとしています。

% ttCreateCerts -dir timesten_home/conf/wallets
ttCreateCerts: rootWallet is not empty, use -force to overwrite

この例では、-forceオプションを使用して再試行します。

% ttCreateCerts -dir timesten_home/conf/wallets -f
ttCreateCerts : certificates created in timesten_home/conf/wallets

結果のウォレットをリコールします:

% ls -F timesten_home/conf/wallets
client1.cert   root.cert    server1.cert
clientWallet/  rootWallet/  serverWallet/
% ls timesten_home/conf/wallets/clientWallet
cwallet.sso
% ls timesten_home/conf/wallets/serverWallet
cwallet.sso

ルート証明書を含むclientWalletディレクトリを目的の場所にコピーします。これは、各クライアントのインスタンスで同じ場所にすることをお薦めします。

% mkdir timesten_home/conf/wallets
[...Copy clientWallet from the server...]
% cd timesten_home/conf/wallets
% ls
clientWallet
% ls clientWallet
cwallet.sso

ノート:

ウォレットのファイルおよびディレクトリの権限に注意して保持してください。