ORDSコンテナへのSSLの追加 (2024/11/28)

ORDSコンテナへのSSLの追加 (2024/11/28)

https://spendolini.blog/adding-ssl-to-your-ords-container

投稿者:Scott Spendolini



単なるHTTPを介して非標準ポートで開発環境を実行することについて「正しい」とは感じません。「セキュアでない」というメッセージが表示されるのは煩わしいだけでなく、ベスト・プラクティスではありません。開発環境は、できるだけ本番環境に近くする必要があります。


主な違いは、HTTPSは転送中のデータを暗号化し、HTTPは暗号化しないという点ですが、他にも重要な微妙なものがあります。HTTPSページでは、HTTPのみのURLからJavascriptをコールできません。したがって、HTTPSを使用しない場合、本番環境にデプロイするまで、この問題は醜い頭の後ろにはなりません。


💡ノート: 本番インスタンスには、これらのステップを使用しないでください。自己署名証明書を作成してから手動で信頼することは、ローカル開発環境でのみ有効です。



証明書の作成およびインストール


信頼できる独自の自己署名証明書を使用して起動および実行するには、数分かかります。最初のいくつかのステップは、MacとWindowsの両方で機能します。自己署名証明書を信頼できるものとして追加することは、プラットフォームによって異なるため、最後に注意してください。OSごとにセクションを追加しました。



証明書の作成


まず、自己署名証明書を作成します。


  1. 新しいターミナル・ウィンドウを開きます
  2. ords_configディレクトリに移動します。これは私の前回の記事の一部としてまとめられました。
  3. sslという新しいディレクトリを作成します。
  4. sslディレクトリに移動します。
  5. 次のコマンドを実行します。


 openssl req -x509 -out cert.crt -keyout key.key -days 9999 \

   -newkey rsa:2048 -nodes -sha256 \

   -subj '/CN=localhost' -extensions EXT -config <( \

    printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")



このコマンドに関するいくつかのノート:


  • このコマンドの大部分は、このページから取得されました: https://letsencrypt.org/docs/certificates-for-localhost/
  • 私は、この証明書を再作成することを心配したくないので、日を9999に設定します。
  • 証明書ペアの名前(cert.crtおよびkey.key)は、ORDSコンテナが探す名前であるため、変更しないでください。


6. このコマンドを実行すると、sslディレクトリに2つのファイルがあるはずです。





証明書のインストール


ORDSコンテナの簡単な再起動は、HTTPからHTTPSに切り替える必要があるだけです。


私がこの非標準ポートについて言ったことを覚えていますか? これを443に変更して、URLにポート番号を入れる必要がないようにします。


  1. 既存のORDSコンテナを終了します。
  2. この新しいコマンドを使用して、ORDSコンテナを再起動します。


 podman run --rm --name ords -v `pwd`/ords_secrets/:/opt/oracle/variables -v `pwd`/ords_config/:/etc/ords/config/ -v `pwd`/images/:/opt/oracle/apex/24.1.0/images -p 443:8181 container-registry.oracle.com/database/ords-developer:latest &



このコマンドには、追加の引数が1つあります: -p 443:8181追加属性は、コンテナからローカルポート443にポート8181をリダイレクトします。


鋭い読者が気付いたように、私はこのコマンドをstart_ordsというローカル・ファイルに保存しました。このようにして、私はちょうどコマンド構文を見つけるために私のブログをソートするのではなく、私のコンテナを再起動するためにそのファイルを実行することができます。



証明書のテスト


ORDSコンテナへのアクセスを試行した内容を見てみましょう。


1. 新しいブラウザ・ウィンドウを開き、次のURLを入力します。https://localhost


予想どおり、「接続はプライベートではありません」というエラーが表示されます。これは、証明書が自己署名されており、ブラウザはその証明書をCAの1つに関連付けることができないためです。



「Advanced」をクリックしてから「Proceed to localhost (unsafe)」に進むことができますが、すぐに迷惑になります。



証明書の信頼


この問題を修正する方法は数多くありますが、私が入手した最も速いのは、正規のCAによって署名されたかのように、この自己署名証明書を単に「信頼」するようにローカル・マシンに伝えることです。これは数秒で済みますが、これはローカル開発環境であるため、完全にセキュアなアプローチです。


証明書の信頼は、ローカルOSによって異なります。



MacOS


Mac OSで自己署名証明書を信頼するには、単にMacOS Keychainに証明書を追加する必要があります。


1. Keychain Accessというアプリケーションを起動します。

2. 資格証明を入力します。


次のようなウィンドウが表示されます。



3. Finderを使用して、前に作成した証明書を配置したフォルダに移動します。/ords_config/sslにある必要があります。

4. ファイルcert.crtを、キーチェーン・アクセス・ウィンドウ(列見出しの下)の「ストライプ化」部分にドラッグします。次のポップアップ・ウィンドウが表示されます。



5. 「追加」を選択します。

6. メインの「Keychain Access」ウィンドウで、localhostを検索します。次のエントリが1つ表示されます。



7. localhostエントリをダブルクリックします。

8. 「信頼」リージョンを展開します。

9. 「この証明書を使用する場合」を「常に信頼」に設定します。他のすべてのオプションも自動的に「常時信頼」に変更する必要があります。



10. localhostウィンドウを閉じます。変更を有効にするには、資格証明を再入力する必要があります。


この時点で、ローカルOSは、自己署名のlocalhost証明書が有効であるかのように信頼します。「セキュアでない」というメッセージも表示されなくなります。改めて、開発には適していますが、本番システムにはあまり適していません。


これを証明するには、https://localhost.を指していたブラウザをリロードします


結果は次のようになります。





Windows


Windowsでは、OSが自己署名証明書を信頼できるように、同様の手順を実行する必要があります。


私はいくつかの検索を行いました、そして、この投稿は、これを行うための適切な手順のセットを持っているようです。私はこれを試す機会がなかったので、それがうまくいかない場合、またはWindowsで使用するより良いステップのセットがある場合は、コメントを残してください。



まとめ


ローカル開発環境であっても、APEXへのアクセスに使用されるプロトコルを含め、本番環境の内容を可能なかぎりミラー化することが重要です。ORDSコンテナに独自の証明書を作成してインストールする作業はあまり行われず、すべてのWebアプリケーションがHTTPSを介してアクセスされるようになります。


タイトル:Fer Troulik on Unsplash


コメント

このブログの人気の投稿

Oracle Database 19cサポート・タイムラインの重要な更新 (2024/11/20)

Oracle GoldenGate 23aiでMicrosoft Fabricでのオープン・ミラーリングがサポートされるようになりました (2024/11/19)

Oracle APEX 24.1の一般提供の発表 (2024/06/17)