OpenSSLを使用した証明書チェーンおよび秘密キーの生成ガイドライン

証明書チェーンを使用すると、Oracle NoSQL Databaseプロキシにセキュアに接続できます。この項では、OpenSSLを使用したセキュアな接続のために、証明書チェーンおよびその他の必須ファイルを生成するステップについて説明します。

証明書チェーンは、認証局(CA)によって提供されます。CAは数多く存在します。各CAには、証明書チェーンを生成するための様々な登録プロセスがあります。CAから示されるステップに従ってプロセスを実行し、CAから証明書チェーンを取得します。

前提条件として、ホスト・マシンにOpenSSLをダウンロードしてインストールします。OpenSSLを参照してください。

OpenSSLを使用して証明書チェーンおよび秘密キーを生成するには、次のステップを実行します。

  1. 構成ホストで、証明書ファイルを配置する必要があるディレクトリにナビゲートします。
  2. 2048ビットのサーバーの秘密キーを作成します。
    openssl genrsa -out key.pem 2048
    次の出力が表示されます。
    Generating RSA private key, 2048 bit long modulus
    ..................+++
    ...................+++
    e is 65537 (0x10001)
  3. このステップは、サーバーの秘密キーがPKCS#8形式ではない場合にのみ必要です。秘密キーをPKCS#8形式に変換します。プロンプトが表示されたら、暗号化のためのセキュアな任意のパスワードを入力します。
    openssl pkcs8 -topk8 \ 
    -inform PEM -outform PEM \ 
    -in key.pem -out key-pkcs8.pem
    次の出力が表示されます。
    Enter Encryption Password:
    Verifying - Enter Encryption Password:

    ノート:

    キーがPKCS#5 v2.0アルゴリズムで暗号化されている場合は、次の変換を行う必要があります。そうしないと、サポートされていないアルゴリズムが原因で、ファイルに有効な秘密キーが含まれていないことを示すIllegalArgumentException例外が発生する可能性があります。暗号化アルゴリズムは、-v1フラグを使用したPKCS#5 v1.5またはPKCS#12アルゴリズムを指定することで、OpenSSLのpkcs8ユーティリティを介して変換できます。次のコマンドは、キーの暗号化アルゴリズムをPBE-SHA1-3DESに変換します。
    openssl pkcs8 -topk8 -in <PKCS#5v2.0_key_file> -out <new_key_file> -v1 PBE-SHA1-3DES
  4. 証明書署名リクエスト(CSR)を作成します。
    openssl req -new -key key.pem -out request.csr \ 
    -subj "/C=US/ST=CA/L=San/CN=localhost/emailAddress=localhost@oracle.com"
    ここで、subjCNでは、プロキシ・ドメイン名をマップする必要があります。
  5. 証明書署名リクエスト(CSR)データ・ファイルをCAに送信します。CAは、CSRデータを使用してSSL証明書を発行します。
  6. CAは、署名付き証明書certificate.pemを返します。CAの証明書(rootCA.crt)のチェーンをまだ設定していない場合は、手動でチェーンにする必要があります。
    cat rootCA.crt >> certificate.pem
ディレクトリ内に次のファイルが生成されます。
  • key.pemは、サーバーの秘密キーです。
  • key-pkcs8.pemは、PKCS#8形式のサーバーの秘密キーです。
  • certificate.pemは、pem形式の証明書チェーン・ファイルです。これには、CAによって発行されたサーバー証明書と、CAの中間証明書またはルート証明書が含まれます。
  • request.csrは、サーバーの証明書リクエスト・ファイルです。
  • rootCA.crtは、CAから提供されたルート証明書です。
また、Javaドライバを使用している場合、およびrootCA.crtがJavaのデフォルトのトラスト・ストアJAVA_HOME/jre/lib/security/cacertsにリストされていない場合は、driver.trustファイルも必要となります。このdriver.trustファイルは、その他の言語ドライバには必要ありません。driver.trustファイルを生成するには、rootCA.crt証明書をJavaキーストアにインポートします。プロンプトが表示されたら、キーストア・パスワードを入力します。
keytool -import -alias example -keystore driver.trust -file rootCA.crt
Pythonドライバの場合は、選択したCAがデフォルトで信頼されていない場合、CAからrootCA.crtを取得して、システム環境変数を設定する必要があります。
REQUESTS_CA_BUNDLE=PATH_OF_CA_FILE/rootCA.crt