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要素のサポートについて
-
ECDSA (Elliptic Curve Digital Signature Algorithm): 楕円曲線からの数学を使用して強力なデジタル署名を作成する公開キー非対称暗号化アルゴリズム。TimesTenでは、
p256、p384(デフォルト)およびp521の楕円曲線と、ecdsasha256、ecdsasha384(デフォルト)およびecdsasha512の楕円曲線署名アルゴリズムがサポートされています。 -
RSA (Rivest-Shamir-Adleman): 大きな数(2つの素数の積)の因数分解が困難であることに依拠する暗号化キーのペア(公開キーと秘密キー)。TimesTenでは、
2048および4096のキー・サイズ(ビット単位)がサポートされており、4096がデフォルトです。サポートされている署名アルゴリズムは、sha256、sha384および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の構成に必要なステップを実行するかを見てみましょう。
ノート:
これは、例示のみを目的としています。- 指定したディレクトリにルート・ウォレットを作成します。ウォレットを保持するディレクトリの名前は、
rootWalletです。その中に、cwallet.ssoファイルがあります。.lckファイルは無視します。$ ls rootWallet $ ls rootWallet cwallet.sso cwallet.sso.lck - ルート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 - 信頼できるルート証明書を
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 - サーバー・ウォレットを作成します。ウォレットの場所は、
serverWalletです。serverWalletには、cwallet.ssoファイルがあります。$ ls serverWallet cwallet.sso ... - 信頼できるルート証明書をサーバー・ウォレットに追加します。
$ 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 - 同じキーおよび署名アルゴリズムを使用して、秘密キーおよびリクエスト証明書をサーバー・ウォレットに追加します。
$ 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 - 証明書リクエストをエクスポートして、署名を取得します。リクエストの名前は
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----- - 自己署名ルート・ウォレットを使用して証明書リクエストに署名します。
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----- - 署名付きサーバー・ユーザー証明書をサーバー・ウォレットにインポートします。サーバー証明書が
UserCertificatesの下に表示され、サブジェクトと発行者が異なることに注意してください。$ 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 - クライアント・ウォレットを作成します。ウォレットの場所は、
clientWalletです。その中に、cwallet.ssoファイルがあります。$ ls clientWallet cwallet.sso ... - 信頼できるルート証明書をウォレットに追加します。
$ 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 - クライアント・ウォレットに秘密キーおよび証明書リクエストを追加します。このステップは、
-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 - クライアント証明書リクエストをエクスポートして、署名を取得します。このステップは、
-noclientを指定した場合には発生しません。$ cat client1.request -----BEGIN NEW CERTIFICATE REQUEST----- MIIBGjCBngIBADAfMQswCQYDVQQGEwJVUzEQMA4GA1UEAxMHY2xpZW50MTB2MBAG ByqGSM49AgEGBSuBBAAiA2IABPHf1llWyhG+1ShYt8TcbCNGP9SERmelcrfJsYtH ww6AnCytLG/OlIEijjjJ4OsjZhe4jfWoi9gZRWt3aK99OWYcsaBgcaD9ckI3gLF7 5izrwejKdugaI65c4ubTeImYwKAAMAwGCCqGSM49BAMDBQADaQAwZgIxAP7sQpiY m69xfkrx4bVUl0qvjdDPL6fUpS9DLmNiAhaRa8yc/e7YPcBEk2EX8934cwIxAL64 bkgHL3qe3WSxu5PGH0sSXVhcm4zC+KHaqhBOajiecjAMzl5PXZdvCLngtLmTcA== -----END NEW CERTIFICATE REQUEST----- - 自己署名ルート・ウォレットを使用して証明書に署名し、
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 - 署名付きクライアント・ユーザー証明書をクライアント・ウォレットにインポートします。これで、クライアント証明書が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_HOME、JAVA_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のサポート | 説明 |
|---|---|---|
|
|
ECCとRSAの両方でサポート |
ウォレットを配置するディレクトリを絶対パスとして指定します。 指定したディレクトリは、すでに存在している必要があります。また、 |
|
|
ECCとRSAの両方でサポート |
ヘルプを表示します(前述の構文を表示します)。 |
|
|
ECCとRSAの両方でサポート |
TimesTenリリース番号を表示します。 |
|
|
ECCとRSAの両方でサポート |
指定された |
|
|
ECCとRSAの両方でサポート |
以前のウォレットが指定したディレクトリ内にあれば上書きします。 |
|
|
ECCとRSAの両方でサポート |
ユーティリティの実行からの追加出力を表示します。 |
|
|
ECCとRSAの両方でサポート |
作成するウォレットの存続期間を指定する2つの方法のうちの1つで、作成からの日数として期間を表します。 デフォルトは3650日です。これは、 |
|
|
ECCとRSAの両方でサポート |
作成するウォレットの存続期間を指定するもう1つの方法。期間は開始日および終了日としてmm/dd/yyyy形式で表します。 |
|
|
ECCとRSAの両方でサポート |
設定していないオプションについては、これを使用することでデフォルト値を確認できます。 |
|
|
ECCとRSAの両方でサポート |
証明書の生成時にFIPSモードを使用するように TimesTenでは、FIPSモードで |
|
|
ECCとRSAの両方でサポート |
ttCreateCertsがクライアント・ウォレットにクライアント証明書を追加するかどうかを示します。
デフォルトは、 |
|
|
ECCとRSAの両方でサポート |
証明書の署名に使用される署名アルゴリズムを指定します。 有効な値は次のとおりです。
|
|
|
ECCでサポート |
このオプションは、
ECCに固有です:
|
|
|
ECCでサポート |
このオプションは、ECCキーにのみ有効です。 |
|
- |
RSAでサポート |
このオプションは、
RSAに固有です:
|
|
|
RSAでサポート |
このオプションは、RSAキーにのみ有効です。 |
ECCキーとRSAキーの使用ルール
-
-asym_algオプションは、キー・ペアの生成時に使用する非対称暗号化アルゴリズムを指定します。-
アルゴリズムがRSAの場合は、
-keysizeを指定して、生成されるRSAキーのサイズを設定できます。 -
アルゴリズムがECCの場合は、
-eccurveを指定して、キーの生成の基となるECC曲線を設定できます。TimesTenでは、FIPSモードでp521ECC曲線をサポートしません。
-
-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$ 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$ 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$ 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$ 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
ノート:
ウォレットのファイルおよびディレクトリの権限に注意して保持してください。