Oracle Cloud Infrastructureドキュメント

クライアント認証が有効なターゲット・データベースに自己署名付き証明書を作成

この例では、クライアント認証が有効なターゲット・データベースの自己署名証明書を作成する方法を示します。 TLS接続を構成するとき、ターゲット・データベース登録の間に証明書をアップロードできます。 この情報はDBシステムにのみ適用されます。 自己署名証明書は、テスト目的で使用することは可能です。 ただし、本番システムの場合、Oracleは、信頼できる認証局または内部認証局(CA)によって署名された証明書を使用することをお薦めします。

パート1: サーバーのWalletおよび証明書の作成

この操作を完了する前に、ターゲット・データベースでSSL/TLS暗号化が有効になっていることを確認します。

サーバー・ウォレットおよび証明書を作成するには:
  1. 自動ログイン・ウォレットを作成します。
    mkdir -p <wallet path>
    orapki wallet create -wallet "<wallet path>" -pwd <wallet password> -auto_login

    例えば:

    orapki wallet create -wallet "/u01/app/oracle/myserverwallet" -pwd welcome_1 -auto_login
  2. 自己署名証明書を作成し、ウォレットにロードします。
    orapki wallet add -wallet "<wallet path>" -pwd <wallet password> -dn "CN=`hostname`" -keysize 1024 -self_signed -validity 3650

    例えば:

    orapki wallet add -wallet "/u01/app/oracle/myserverwallet" -pwd welcome_1 -dn "CN=CloudST2.debdev19.oraclecloud.internal" -keysize 1024 -self_signed -validity 3650
  3. ウォレットの内容を確認してください。 自己署名証明書はユーザー証明書と信頼できる証明書の両方であることに注意してください。
    orapki wallet display -wallet "<wallet path>" -pwd <wallet password>

    例えば:

    orapki wallet display -wallet "/u01/app/oracle/myserverwallet" -pwd welcome_1
     
    ... 
    Requested Certificates:
    User Certificates:
    Subject:        CN=CloudST2.debdev19.oraclecloud.internal
    Trusted Certificates:
    Subject:        CN=CloudST2.debdev19.oraclecloud.internal
  4. 後でクライアント・ウォレットにロードできるように、証明書をエクスポートします。
    orapki wallet export -wallet "<wallet path>" -pwd <wallet password>  -dn "CN=`hostname`" -cert <certificate file name>.crt

    例えば:

    orapki wallet export -wallet "/u01/app/oracle/myserverwallet" -pwd welcome_1 -dn "CN=CloudST2.debdev19.oraclecloud.internal" -cert CloudST2-certificate.crt 
  5. 証明書が予期したとおりにエクスポートされたことを確認します。
    cat <certificate file name>.crt

    例えば:

    cat CloudST2-certificate.crt
    -----BEGIN CERTIFICATE-----
    MIIB0TCCAToCAQAwDQYJKoZIhvcNAQEEBQAwMTEvMC0GA1UEAxMmQ2xvdWRTVDIuZGViZGV2MTku
    b3JhY2xlY2xvdWQuaW50ZXJuYWwwHhcNMTYwNTExMTEyMDI2WhcNMjYwNTA5MTEyMDI2WjAxMS8w
    LQYDVQQDEyZDbG91ZFNUMi5kZWJkZXYxOS5vcmFjbGVjbG91ZC5pbnRlcm5hbDCBnzANBgkqhkiG
    9w0BAQEFAAOBjQAwgYkCgYEAr6fhuQly2t3i8gugLVzgP2kFGVXVOzqbggEIC+Qazb15JuKs0ntk
    En9ERGvA0fxHkAkCtIPjCzQD5WYRU9C8AQQOWe7UFHae7PsQX8jsmEtecpr5Wkq3818+26qU3Jyi
    XxxK/rRydwBO526G5Tn5XPsovaw/PYJxF/fIKMG7fzMCAwEAATANBgkqhkiG9w0BAQQFAAOBgQCu
    fBYJj4wQYriZIfjij4eac/jnO85EifF3L3DU8qCHJxOxRgK97GJzD73TiY20xpzQjWKougX73YKV
    Tp9yusAx/T/qXbpAD9JKyHlKj16wPeeMcS06pmDDXtJ2CYqOUwMIk53cK7mLaAHCbYGGM6btqP4V
    KYIjP48GrsQ5MOqd0w==
    -----END CERTIFICATE-----

パート2: クライアントのWalletおよび証明書の作成

クライアント・ウォレットおよび証明書を作成するには:
  1. 別の自動ログイン・ウォレットを作成します。
    c:\>mkdir -p <client wallet dir> 
    c:\>orapki wallet create -wallet "<wallet path>" -pwd <wallet password> -auto_login

    例えば:

    C:\Work\CloudWallet>orapki wallet create -wallet "C:\work\myclientwallet" -pwd welcome_1 -auto_login
  2. 自己署名証明書を作成し、ウォレットにロードします。
    C:\>orapki wallet add -wallet "<client wallet path>" -pwd <wallet password> -dn "CN=%client computer name%" -keysize 1024 -self_signed -validity 3650

    例えば:

    C:\work\myclientwallet>orapki wallet add -wallet "C:\work\myclientwallet" -pwd welcome_1 -dn "CN=gbr30139.example.com" -keysize 1024 -self_signed -validity 3650
  3. ウォレットの内容を確認してください。 自己署名証明書はユーザー証明書と信頼できる証明書の両方であることに注意してください。
    orapki wallet display -wallet "<client wallet path>" -pwd <wallet password>

    例えば:

    C:\work\myclientwallet>orapki wallet display -wallet "C:\work\myclientwallet" -pwd welcome_1
    
    ...
    Requested Certificates:
    User Certificates:
    Subject:        CN=gbr30139.example.com
    Trusted Certificates:
    Subject:        OU=Class 3 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
    Subject:        CN=GTE CyberTrust Global Root,OU=GTE CyberTrust Solutions\, Inc.,O=GTE Corporation,C=US
    Subject:        OU=Class 2 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
    Subject:        OU=Class 1 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
    Subject:        CN=gbr30139.example.com
  4. 後でサーバーにロードできるように証明書をエクスポートします。
    orapki wallet export -wallet "<client wallet path>" -pwd <wallet password> -dn "CN=<client computer name>" -cert <clent computer name>-certificate.crt

    例えば:

    C:\work\myclientwallet>orapki wallet export -wallet "C:\work\myclientwallet" -pwd welcome_1 -dn "CN=gbr30139.example.com" -cert gbr30139-certificate.crt
  5. 証明書を確認してください。
    more c:\%computername%-certificate.crt

    例えば:

    C:\work\myclientwallet>more gbr30139-certificate.crt
    
    -----BEGIN CERTIFICATE-----
    MIIBsTCCARoCAQAwDQYJKoZIhvcNAQEEBQAwITEfMB0GA1UEAxMWZ2JyMzAxMzkudWsub3JhY2xl
    LmNvbTAeFw0xNjA1MTExMTQzMzFaFw0yNjA1MDkxMTQzMzFaMCExHzAdBgNVBAMTFmdicjMwMTM5
    LnVrLm9yYWNsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKH8G8sFS6l0llu+RMfl
    7Yt+Ppw8J0PfDEDbTGP5wtsrs/22dUCipU9l+vif1VgSPLE2UPJbGM8tQzTC6UYbBtWHe4CshmvD
    EVlcIMsEFvD7a5Q+P45jqNSEtV9VdbGyxaD6i5Y/Smd+B87FcQQCX54LaI9BJ8SZwmPXgDweADLf
    AgMBAAEwDQYJKoZIhvcNAQEEBQADgYEAai742jfNYYTKMq2xxRygGJGn1LhpFenHvuHLBvnTup1N
    nZOBwBi4VxW3CImvwONYcCEFp3E1SRswS5evlfIfruCZ1xQBoUNei3EJ6O3OdKeRRp2E+muXEtfe
    U+jwUE+SzpnzfpI23Okl2vo8Q7VHrSalxE2KEhAzC1UYX7ZYp1U=
    -----END CERTIFICATE-----

パート3: クライアント証明書とサーバー証明書の交換

接続の両側は、相互に信頼する必要があります。 そのため、信頼できる証明書として、クライアント・ウォレットにサーバー証明書をロードし、クライアント証明書をサーバー・ウォレットにロードする必要があります。

クライアント証明書とサーバー証明書を交換するには:
  1. クライアントのウォレットにサーバー証明書をロードします。
    orapki wallet add -wallet "<client wallet path>" -pwd <wallet password> -trusted_cert -cert <server certificate path>

    例えば:

    C:\work\myclientwallet>orapki wallet add -wallet "C:\work\myclientwallet" -pwd welcome_1 -trusted_cert -cert C:\work\myclientwallet\CloudST2-certificate.crt
  2. クライアント・ウォレットの内容を確認してください。 これで、サーバー証明書が信頼できる証明書のリストに追加されました。
    orapki wallet display -wallet "<client wallet path>" -pwd <wallet password>

    例えば:

    C:\work\myclientwallet>orapki wallet display -wallet "C:\work\myclientwallet" -pwd welcome_1
    
    ...
    Requested Certificates:
    User Certificates:
    Subject:        CN=gbr30139.example.com
    Trusted Certificates:
    Subject:        OU=Class 1 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
    Subject:        CN=gbr30139.example.com
    Subject:        CN=GTE CyberTrust Global Root,OU=GTE CyberTrust Solutions\, Inc.,O=GTE Corporation,C=US
    Subject:        CN=CloudST2.debdev19.oraclecloud.internal
    Subject:        OU=Class 3 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
    Subject:        OU=Class 2 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
    
  3. クライアント証明書をサーバー・ウォレットにロードします。
    orapki wallet add -wallet "<server wallet path>" -pwd welcome_1 -trusted_cert -cert <client certificate file>

    例えば:

    orapki wallet add -wallet "/u01/app/oracle/myserverwallet" -pwd welcome_1 -trusted_cert -cert gbr30139-certificate.crt
  4. サーバー・ウォレットの内容を確認してください。 クライアント証明書が信頼できる証明書のリストに追加されました。
    orapki wallet display -wallet "<wallet path>" -pwd <wallet password>

    例えば:

    orapki wallet display -wallet "/u01/app/oracle/myserverwallet" -pwd welcome_1
    
    ...
    Requested Certificates:
    User Certificates:
    Subject:        CN=CloudST2.debdev19.oraclecloud.internal
    Trusted Certificates:
    Subject:        CN=CloudST2.debdev19.oraclecloud.internal
    Subject:        CN=gbr30139.example.com
    

パート4: サーバー・ネットワークの構成

サーバー・ネットワークを構成するには:
  1. データベース・サーバーで、次のエントリを$ORACLE_HOME/network/admin/sqlnet.oraファイルに追加します。
    WALLET_LOCATION =
       (SOURCE =
         (METHOD = FILE)
         (METHOD_DATA =
           (DIRECTORY = /u01/app/oracle/myserverwallet)
         )
       )
    
    SSL_CLIENT_AUTHENTICATION = TRUE
  2. で、SSL/TLS暗号化接続を受け入れるようにリスナーを構成します。 $ORACLE_HOME/network/admin/listener.oraファイルで、ウォレット情報を追加し、TCPSエントリ($ORACLE_HOME/network/admin/listener.ora)を追加します。

    例えば:

    SSL_CLIENT_AUTHENTICATION=TRUE
    WALLET_LOCATION =
      (SOURCE =
        (METHOD = FILE)
        (METHOD_DATA =
          (DIRECTORY = /u01/app/oracle/myserverwallet)
        )
      )
    
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = server1.localdomain)(PORT = 1521))
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
          (ADDRESS = (PROTOCOL = TCPS)(HOST = server1.localdomain)(PORT = 1522))
        )
    )
  3. リスナーを再起動します。
    $ lsnrctl stop
    $ lsnrctl start