2022年11月22日火曜日

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

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

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

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

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

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

file:///home/oracle/wallet

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

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

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

以下にウォレットの作成方法を説明します。

2023年11月15日追記

Oracle APEX 23.2より管理サービスインスタンスの設定に含まれる電子メールOracle APEXインスタンスのURLOracle APEXのイメージURLの設定が必須項目になり、かつ、デフォルトで空白になっています(デフォルトURLをクリックすると、Oracle APEXの実行環境に合わせてURLが挿入されます)。


ウォレットウォレット・パスを設定する際に、これらのURLも設定する必要があります。設定していない場合、以下のようにエラーが発生します。



ウォレットの作成手順


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

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

[oracle@apex ~]$ cd $HOME

[oracle@apex ~]$ . oraenv

ORACLE_SID = [oracle] ? FREE

The Oracle base has been set to /opt/oracle

[oracle@apex ~]$ 


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


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

sh split_cert.sh
 

[oracle@apex ~]$ sh split_cert.sh 

[oracle@apex ~]$ ls certs

cert100.cer  cert125.cer  cert14.cer   cert29.cer  cert53.cer  cert78.cer

cert101.cer  cert126.cer  cert150.cer  cert2.cer   cert54.cer  cert79.cer

cert102.cer  cert127.cer  cert151.cer  cert30.cer  cert55.cer  cert7.cer

cert103.cer  cert128.cer  cert152.cer  cert31.cer  cert56.cer  cert80.cer

cert104.cer  cert129.cer  cert153.cer  cert32.cer  cert57.cer  cert81.cer

cert105.cer  cert12.cer   cert154.cer  cert33.cer  cert58.cer  cert82.cer

cert106.cer  cert130.cer  cert155.cer  cert34.cer  cert59.cer  cert83.cer

cert107.cer  cert131.cer  cert156.cer  cert35.cer  cert5.cer   cert84.cer

cert108.cer  cert132.cer  cert157.cer  cert36.cer  cert60.cer  cert85.cer

cert109.cer  cert133.cer  cert158.cer  cert37.cer  cert61.cer  cert86.cer

cert10.cer   cert134.cer  cert159.cer  cert38.cer  cert62.cer  cert87.cer

cert110.cer  cert135.cer  cert15.cer   cert39.cer  cert63.cer  cert88.cer

cert111.cer  cert136.cer  cert160.cer  cert3.cer   cert64.cer  cert89.cer

cert112.cer  cert137.cer  cert16.cer   cert40.cer  cert65.cer  cert8.cer

cert113.cer  cert138.cer  cert17.cer   cert41.cer  cert66.cer  cert90.cer

cert114.cer  cert139.cer  cert18.cer   cert42.cer  cert67.cer  cert91.cer

cert115.cer  cert13.cer   cert19.cer   cert43.cer  cert68.cer  cert92.cer

cert116.cer  cert140.cer  cert1.cer    cert44.cer  cert69.cer  cert93.cer

cert117.cer  cert141.cer  cert20.cer   cert45.cer  cert6.cer   cert94.cer

cert118.cer  cert142.cer  cert21.cer   cert46.cer  cert70.cer  cert95.cer

cert119.cer  cert143.cer  cert22.cer   cert47.cer  cert71.cer  cert96.cer

cert11.cer   cert144.cer  cert23.cer   cert48.cer  cert72.cer  cert97.cer

cert120.cer  cert145.cer  cert24.cer   cert49.cer  cert73.cer  cert98.cer

cert121.cer  cert146.cer  cert25.cer   cert4.cer   cert74.cer  cert99.cer

cert122.cer  cert147.cer  cert26.cer   cert50.cer  cert75.cer  cert9.cer

cert123.cer  cert148.cer  cert27.cer   cert51.cer  cert76.cer

cert124.cer  cert149.cer  cert28.cer   cert52.cer  cert77.cer

[oracle@apex ~]$ 


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


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

sh create_wallet.sh

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

[oracle@apex0413 ~]$ sh create_wallet.sh

Oracle PKI Tool Release 23.2.0.0.0 - Production

Version 23.2.0.0.0

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


Operation is successfully completed.

Oracle PKI Tool Release 23.2.0.0.0 - Production

Version 23.2.0.0.0

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


Operation is successfully completed.

Oracle PKI Tool Release 23.2.0.0.0 - Production

Version 23.2.0.0.0

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


Operation is successfully completed.

Oracle PKI Tool Release 23.2.0.0.0 - Production

Version 23.2.0.0.0


[中略]


Operation is successfully completed.

Oracle PKI Tool Release 23.2.0.0.0 - Production

Version 23.2.0.0.0

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


Operation is successfully completed.

[oracle@apex0413 ~]$ 


追加に成功した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のインスタンスへの設定が完了しました。

続く