クライアント側とサーバー側での自己署名証明書の作成と交換
Oracle 19C データベースサーバーでは、任意のディレクトリの場所にウォレットを作成できます。ただし、Oracle はウォレットを ORACLE_HOME データベース環境内に作成することを推奨しています。Oracle サービスが実行しているウォレットディレクトリに対して必要な読み取りアクセス許可を持っていることを確認します。ウォレットは Unix プラットフォームでは SUDO ユーザーを使用して作成でき、Windows プラットフォームでは管理ユーザーを使用して作成できます。
以下のステップを実行して、2 つのウォレット (サーバーウォレットとクライアントウォレット) および自己署名証明書を作成します。
1. すべてのウォレットを保存するためのディレクトリを作成します。このウォレットディレクトリは任意の場所に作成できます。Oracle はウォレットを以下の場所に作成することを推奨しています。
> mkdir wallets
> cd wallets
例: %ORACLE_HOME%\wallets
2. Oracle サーバーに対して有効になっている自動ログインを使用して空のウォレットを作成します。
> orapki wallet create -wallet ./server_wallet -auto_login -pwd server01
例:
orapki wallet create -wallet %ORACLE_HOME%\wallets\server_wallet
-auto_login -pwd server01
server_wallet ディレクトリの下に以下の 2 つのファイルが作成されます。
server_wallet/cwallet.sso
server_wallet/ewallet.p12
3. ウォレットに自己署名証明書を追加します。秘密キーまたは公開キーの新しいペアが作成されます。
> orapki wallet add -wallet ./server_wallet -dn “CN=server”
-keysize 1024 -self_signed -validity 365 -pwd server01
a. server_wallet ディレクトリを表示します。
> orapki wallet display -wallet ./server_wallet
...
Requested Certificates:
Subject: CN=server
...
b. サーバー証明書をエクスポートします。
> orapki wallet export –wallet ./server_wallet -dn “CN=server”
-cert ./server_wallet/cert.txt
Windchill クライアント側に cert.txt ファイルをコピーします。
4. サーバー証明書をクライアントキーストアにインポートします。クライアントでは、Java キーストアを使用してサーバー証明書を保存します。
> keytool -importcert -alias <ALIAS-NAME> -keystore <PATH-TO-KEYSTORE>
-file <FILE-PATH-TO-SERVER-CERTIFICATE>
例:
keytool -importcert -alias oraclessl
-keystore JAVA_HOME\jre\lib\security\cacerts
-file JAVA_HOME\bin\cert.txt
以下のパラメータを使用します。
◦ <ALIAS-NAME> - サーバー証明書ファイルをキーストアに保存するときに使用するエイリアス名。
◦ <PATH-TO-KEYSTORE> - サーバー証明書のインポート先となるキーストアの場所。Windchill のデフォルトの Java キーストアを使用する場合、これは {wt.jdk}/jre/lib/security に cacerts という名前で存在します。wt.jdk の値は WT_HOME/codebase/wt.properties ファイルで見つけることができます。
◦ <FILE-PATH-TO-SERVER-CERTIFICATE> - サーバー証明書が保存されているディレクトリの場所。この例では、ファイル cert.txt です。
5. クライアントキーストア内に自己署名クライアント証明書を作成します。
keytool -genkeypair -alias "<ALIAS-OF-YOUR-CLIENT-SSL-CERT>" -keyalg RSA
-validity 365 -keysize 2048 -keystore <PATH-TO-KEYSTORE>
例:
keytool -genkeypair -alias ClientCerts -keyalg RSA -validity 365
-keysize 2048 -keystore JAVA_HOME\jre\lib\security\cacerts
キーストアパスワードを入力するよう求められます。デフォルトのキーストアパスワードは changeit です。
以下のパラメータを使用します。
◦ <ALIAS-OF-YOUR-CLIENT-SSL-CERT> - 自己署名証明書を作成するときに使用する証明書のエイリアス。
◦ <PATH-TO-KEYSTORE> - サーバー証明書のインポート先となるキーストアの場所。
6. server_wallet ディレクトリからインポート可能なファイルにクライアント証明書をエクスポートします。
keytool -export -alias <ALIAS-OF-YOUR-CLIENT-SSL-CERT>
-keystore <PATH-TO-KEYSTORE> -rfc -file <PATH-TO-OUTPUT-FILE>
例:
keytool -export -alias CLientCerts
-keystore JAVA_HOME\jre\lib\security\cacerts
-rfc -file JAVA_HOME\bin\ClientCertificate.txt
Oracle データベースサーバーに ClientCertificate.txt ファイルをコピーします。
以下のパラメータを使用します。
◦ <ALIAS-OF-YOUR-CLIENT-SSL-CERT> - クライアントのアイデンティティを認証するために、ファイルにエクスポートして、サーバーウォレットからインポートする際に使用可能な証明書のエイリアス。
◦ <PATH-TO-KEYSTORE> - サーバー証明書のインポート先となるキーストアの場所。
◦ <PATH-TO-OUTPUT-FILE> - クライアントキーのエクスポート先となるファイルの場所。
7. クライアント証明書をサーバーウォレットにインポートします。
> orapki wallet add –wallet ./server_wallet -trusted_cert
-cert ./client_wallet/cert.txt -pwd server01
例:
orapki wallet add -wallet Oracle_Home\wallets\server_wallet
-trusted_cert -cert Oracle_Home\wallets\client_wallet\ClientCertificate.txt
-pwd server01
コマンド client_wallet/cert.txt は、エクスポートされたクライアント証明書を参照します。
|
クライアントの認証が必要な場合、クライアント証明書をサーバーウォレットにインポートする必要があります。暗号化とサーバー認証のみを必要とする場合、このステップはスキップできます。
|
8. サーバーウォレットとクライアントキーストアの結果を表示します。サーバーウォレットにクライアントキーのエントリがあり、クライアントキーストアにサーバーキーのエントリがあることを確認します。
◦ User Certificates の下:
Subject: CN=server
◦ Trusted Certificates の下:
Subject: CN=sam,OU=ptc,O=isg,L=pune,ST=mh,C=in
◦ Client Keystore Output の下:
Owner: CN=server
Issuer: CN=server
◦ Certificate[1] の下:
Owner: CN=sam, OU=ptc, O=isg, L=pune, ST=mh, C=in
Issuer: CN=sam, OU=ptc, O=isg, L=pune, ST=mh, C=in
Server Wallet Output -
> orapki wallet display -wallet .
Oracle PKI Tool : Version 12.1.0.2
Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.
Requested Certificates:
User Certificates:
Subject: CN=server
Trusted Certificates:
Subject: CN=client
Subject: CN=VAGRANT
Subject: CN=VAGRANT_CLIENT
Subject: CN=server
Subject: CN=sam,OU=ptc,O=isg,L=pune,ST=mh,C=in
Client Keystore Output –
> keytool -list -v -keystore selfsigned3.jks
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 3 entries
.
.
.
*******************************************
*******************************************
Alias name: stepde-cert
Creation date: 24 Aug, 2017
Entry type: trustedCertEntry
Owner: CN=server
Issuer: CN=server
Serial number: 0
Valid from: Wed Jun 28 15:17:33 IST 2017 until: Thu Jun 28 15:17:33 IST 2018
Certificate fingerprints:
MD5: F3:46:9C:70:74:93:75:EA:08:F6:35:D9:EC:A5:20:F0
SHA1: 5D:43:23:4F:FA:C8:5B:48:C5:61:A5:CB:02:66:E7:CD:F4:47:4E:95
SHA256: BE:26:3F:88:E8:DD:F2:57:F3:D4:5F:4C:70:4A:0F:D2:99:10:D5:
27:18:BA:29:E5:00:AD:00:41:78:1E:CE:92
Signature algorithm name: MD5withRSA
Version: 1
*******************************************
*******************************************
Alias name: smandaokar2l_selfsigned3
Creation date: 24 Aug, 2017
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=sam, OU=ptc, O=isg, L=pune, ST=mh, C=in
Issuer: CN=sam, OU=ptc, O=isg, L=pune, ST=mh, C=in
Serial number: dccd23b
Valid from: Thu Aug 24 18:49:15 IST 2017 until: Fri Aug 24 18:49:15 IST 2018
Certificate fingerprints:
MD5: 5A:39:55:EA:29:0C:46:C7:86:92:DF:98:4B:C9:E5:93
SHA1: 9D:75:AE:C8:F0:EE:B9:E1:9B:E5:98:10:47:7F:3D:CE:C9:D9:47:18
SHA256: F0:78:81:AA:C4:AC:17:1C:3B:10:87:9B:A7:DF:CE:0F:BE:A0:B6:42:08:90:D9:
BC:59:23:91:BA:03:02:44:1D
Signature algorithm name: SHA256withRSA
Version: 3
Extensions:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: D3 CF 0B 8B 41 B6 63 13 B8 D3 59 57 DB E2 75 7F ....A.c...YW..u.
0010: C5 50 DE 88 .P..
]
]
*******************************************
*******************************************