2022年11月22日火曜日

Oracle APEXの環境作成(9) - REST呼び出しに使うウォレットの作成

更新: 2026年1月28日

Oracle Database 19cおよびOracle AI Database 26aiの両方で、オペレーティング・システムの証明書ストアを参照できるようになりました。オペレーティング・システムの証明書ストアを参照するには、UTL_HTTP.SET_WALLETの引数pathsystem:を指定します。

Oracle APEX 24.1より、インスタンスの設定に含まれるウォレット・パスが無指定の場合、system:を参照するようになりました。


そのため、CCADB(Common CA Database)に登録されているルートCAにて署名されているサイトであれば、ウォレットの作成や設定は不要になりました。

そのため、現在は実施不要な手順です。プライベートCAの対応でウォレットの作成手順が参考になるかもしれませんので、以前の記事は残しておきます。


ウォレットの作成手順


RHEL8/9系のLinuxにパッケージca-certificatesがインストールされていると、信頼できるCA証明書が/etc/pki/tls/cert.pemとして配置されています。このファイルを元にOracleのウォレットを作成します。

Oracle DatabaseおよびOracle APEXをインストールしたマシンにサインインし、ユーザーoracleで作業を行います。データベースの環境を読み込みます。

[oracle@apex-arm ~]$ cd $HOME

[oracle@apex-arm ~]$ . oraenv

ORACLE_SID = [oracle] ? FREE

The Oracle base has been set to /opt/oracle

[oracle@apex-arm ~]$ 


最初に/etc/pki/tls/cert.pemをそれぞれの認証局の証明書ごとのファイルに分割します。以下のスクリプトを使用します。

ホーム・ディレクトにsplit_cert.shとして作成し、実行します。ディレクトリcertsが作成され、その下に複数のファイルが作成されます。

sh split_cert.sh
 

[oracle@apex-arm ~]$ sh split_cert.sh 

[oracle@apex-arm ~]$ ls certs

cert001.cer  cert026.cer  cert051.cer  cert076.cer  cert101.cer  cert126.cer

cert002.cer  cert027.cer  cert052.cer  cert077.cer  cert102.cer  cert127.cer

cert003.cer  cert028.cer  cert053.cer  cert078.cer  cert103.cer  cert128.cer

cert004.cer  cert029.cer  cert054.cer  cert079.cer  cert104.cer  cert129.cer

cert005.cer  cert030.cer  cert055.cer  cert080.cer  cert105.cer  cert130.cer

cert006.cer  cert031.cer  cert056.cer  cert081.cer  cert106.cer  cert131.cer

cert007.cer  cert032.cer  cert057.cer  cert082.cer  cert107.cer  cert132.cer

cert008.cer  cert033.cer  cert058.cer  cert083.cer  cert108.cer  cert133.cer

cert009.cer  cert034.cer  cert059.cer  cert084.cer  cert109.cer  cert134.cer

cert010.cer  cert035.cer  cert060.cer  cert085.cer  cert110.cer  cert135.cer

cert011.cer  cert036.cer  cert061.cer  cert086.cer  cert111.cer  cert136.cer

cert012.cer  cert037.cer  cert062.cer  cert087.cer  cert112.cer  cert137.cer

cert013.cer  cert038.cer  cert063.cer  cert088.cer  cert113.cer  cert138.cer

cert014.cer  cert039.cer  cert064.cer  cert089.cer  cert114.cer  cert139.cer

cert015.cer  cert040.cer  cert065.cer  cert090.cer  cert115.cer  cert140.cer

cert016.cer  cert041.cer  cert066.cer  cert091.cer  cert116.cer  cert141.cer

cert017.cer  cert042.cer  cert067.cer  cert092.cer  cert117.cer  cert142.cer

cert018.cer  cert043.cer  cert068.cer  cert093.cer  cert118.cer  cert143.cer

cert019.cer  cert044.cer  cert069.cer  cert094.cer  cert119.cer  cert144.cer

cert020.cer  cert045.cer  cert070.cer  cert095.cer  cert120.cer  cert145.cer

cert021.cer  cert046.cer  cert071.cer  cert096.cer  cert121.cer  cert146.cer

cert022.cer  cert047.cer  cert072.cer  cert097.cer  cert122.cer

cert023.cer  cert048.cer  cert073.cer  cert098.cer  cert123.cer

cert024.cer  cert049.cer  cert074.cer  cert099.cer  cert124.cer

cert025.cer  cert050.cer  cert075.cer  cert100.cer  cert125.cer

[oracle@apex-arm ~]$ 


作成された証明書を一気に登録します。以下のスクリプトを使用します。


ウォレットの作成(作成済みでなければ)とCA証明書の追加を行います。

ウォレットは/home/oracle/walletとして作成されます。

sh create_wallet.sh

メッセージとしてOperation is successfully completed.が表示されていれば、証明書は追加されています。

[oracle@apex-arm ~]$ sh create_wallet.sh 

Oracle PKI Tool Release 23.0.0.0.0 - Production

Version 23.0.0.0.0

Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved.


Operation is successfully completed.

Oracle PKI Tool Release 23.0.0.0.0 - Production

Version 23.0.0.0.0

Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved.


Operation is successfully completed.

Oracle PKI Tool Release 23.0.0.0.0 - Production

Version 23.0.0.0.0

Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved.


Operation is successfully completed.

Oracle PKI Tool Release 23.0.0.0.0 - Production

Version 23.0.0.0.0

Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved.


[中略]


Operation is successfully completed.

Oracle PKI Tool Release 23.0.0.0.0 - Production

Version 23.0.0.0.0

Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved.


Operation is successfully completed.

[oracle@apex-arm ~]$ 


追加に成功したCA証明書は削除されます。ディレクトリcerts以下に残ったファイルは、追加に失敗したCA証明書です。

エラーの種類によっては、create_wallet.shを再実行することでCA証明書を追加できます。何回か再実行を行なうことにより、/etc/pki/tls/cert.pemに含まれるCA証明書を、すべてウォレットに追加します。以下のように「すでに追加済み」というエラーであれば、このCA証明書は追加不要です。

[oracle@apex0413 ~]$ sh create_wallet.sh 

Oracle PKI Tool Release 23.0.0.0.0 - Production

Version 23.0.0.0.0

Copyright (c) 2004, 2024, Oracle and/or its affiliates. All rights reserved.


Could not install trusted cert atcerts/cert52.cer

PKI-04003: The trusted certificate is already present in the wallet. 

[oracle@apex0413 ~]$ 


以上でREST呼び出しに使用するウォレットの作成と、Oracle APEXのインスタンスへの設定が完了しました。

APEX_WEB_SERVICE.MAKE_REST_REQUESTを使用してREST APIを呼び出すには、ルート認証局(CA)の証明書を含むウォレットの指定が必要です。通常はOracle APEXのインスタンスにウォレットを設定することにより、APIでの指定を省略できるようにします。

Oracle APEXの管理サービスにサインインし、インスタンスの管理インスタンスの設定を開きます。

インスタンスの設定ウォレットのセクションがあります。

ウォレット・パスにルート認証局の証明書がロードされたウォレットのファイルが含まれるディレクトリ指定します。今回は/home/oracle/wallet以下にウォレットのファイルを配置しています。

ウォレット・パスの指定は以下になります。

file:///home/oracle/wallet

ウォレットに含まれる証明書はルート認証局のものだけなので、すべて公開されている情報です。そのため、ウォレットをパスワードで保護する必要はありません。

ウォレットは自動ログイン・ウォレットとして作成するので、この項目にチェックを入れます。

以上でOracle APEX側の設定は完了です。

続く