2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OCI Certificates で外部公開ウェブサイトを SSL化する

2
Posted at

001samune.png

はじめに

OCI 上で外部公開ウェブサイトを展開する際、検討項目の1つに証明書があるかと思います。
その際、OCI のサービスとして提供されている OCI Certificates の利用が考えられます。

そこで本記事では以下についてまとめていきます。

  • OCI Certificate について
  • 使用方法(デモ)

OCI Certificates について

証明書の発行、格納および管理機能(失効や自動更新など)を提供するマネージドサービス です。

もう少し具体的に示すと以下の通りです。

  • プライベート認証局(CA)の作成
  • 作成したプライベート認証局から、プライベート証明書(サーバー、クライアントどちらも可)を発行 / 自動更新 / 失効
  • サードパーティーパブリック認証局 / サードパーティープライベート認証局で発行した証明書 のインポート
  • インポートした証明書の自動更新 及び 失効 は不可
  • 作成したプライベート認証局で作成した証明書 及び インポートした証明書は 対応する OCI サービスに関連付けが可能

つまり、現時点で OCI 上では パブリック証明書を発行できません。
AWS みたいに内部でパブリック認証局を保有していないことになります。

そのため、OCI Certificates で証明書を完結させる場合は、プライベート証明書のため、ルートCAをクライアント側に配布する必要があり、内部システムならネイティブ機能で完結できるということになります。(不特定多数が利用するシステムでは厳しいということになります。)

ちなみに、OCI Certificates は無償利用が可能 です。
ただし、プライベート認証局を作成する場合は、OCI Vault を利用する必要があり、保護モードが HSM のため、その料金が発生します


使用方法(デモ)

検証構成

検証構成図は以下の通りです。
なお、以下リソースは作成済みで進めていきます。

  • VCN等のNWリソース
  • OCI DNS パブリックゾーン (外部レジストラでドメインを購入し、パブリックゾーンに委任済み)

architecture.drawio.png

  • 環境構築コードは以下 GitHub にあげてますので、よかったら覗いてみてください

実践

OCI Vault 作成

まず初めに、OCI Vault を作成します。
OCI Vault は、認証局の公開鍵/秘密鍵を保管するために利用 します。

OCI コンソール左上のハンバーガーマークをクリックし、Identity & SecurityVault をクリックします。
image.png

任意のコンパートメントを指定し、Create Vault をクリックします。
image.png

設定を入力し、Create Vault をクリックします。
今回は以下のようにしています。
image.png

項目 概要 設定値
Name ・Vault を識別する名前 default-vault-for-certificates
Make it a virtual private vault ・「Default Vault」ではなく「Virtual Private Vault」として作成するかどうか
※Default Vault:共有パーティション内で仮想的にユーザーのVaultを提供
※Virtual Private Vault:ユーザー専用に完全分離された専用パーティションとして提供
disabled
※「Default Vault」として作成
  • 仮に Virtual Private Vault として作成すると、最低でも「約¥75,264」の課金が発生するので十分に注意してください

StateActive になれば作成完了です。
image.png

認証局用キー作成

認証局用キーを作成します。

先ほど作成した Vault をクリックします。
image.png

Master encryption keys を選択し、Create Key をクリックします。
image.png

設定を入力し、Create Vault をクリックします。
今回は以下のようにしています。
image.png

項目 概要 設定値
Protection Mode ・作成するキーの保護モード HSM
※認証局用キーはHSMのみサポート
Name ・キーを識別する名前 certificates-hsm-key
Key Shape Algorithm ・作成するキーの暗号化アルゴリズム RSA
※認証局用キーは非対称キーのみサポート
Key Shape Length ・暗号化アルゴリズムビット数 4096 bits
Import External Key ・外部HSMで管理されているキーをインポートして使うかどうか disabled

「State」が「Enabled」になれば作成完了です。
image.png

動的グループ / ポリシー作成

OCI Certificates 用の動的グループ及びポリシーを作成します。

OCI コンソール左上のハンバーガーマークをクリックし、Identity & SecurityDomains をクリックします。
image.png

ルートコンパートメント内の Default ドメインをクリックします。
image.png

Dynamic groups タブを選択し、Create dynamic group をクリックします。
image.png

設定を入力し、Create をクリックします。
今回は以下のようにしています。
image.png
image.png

項目 概要 設定値
Name ・動的グループを識別する名前 Certificates_Dynamic_Group
Description ・動的グループの説明 Certificates Dynamic Group
Matching rules ・動的グループに含めるルール Match any rules defined below
resource.type = 'certificateauthority'

続いてポリシーを作成します。
OCI コンソール左上のハンバーガーマークをクリックし、Identity & SecurityPolicies をクリックします。
image.png

OCI Certificates を所属させるコンパートメント、もしくは上位層のコンパートメントを選択し、Create Policy をクリックします。
image.png

設定を入力し、Create をクリックします。
今回は以下のようにしています。
image.png
image.png

項目 概要 設定値
Name ・ポリシーを識別する名前 certificates-policy
Description ・ポリシーの説明 OCI Certificates Policy for Vault
Compartment ・ポリシーを所属させるコンパートメント oci-certificates-secure-external-public-website
Policy Builder ・ポリシーステートメント allow dynamic-group Default/Certificates_Dynamic_Group to use keys in compartment oci-certificates-secure-external-public-website
OCI Certificates (プライベート認証局) 作成
  • OCI Certificates が OCI Vault への権限が不足していると、認証局作成に失敗します
  • 加えて、設定上 CRL の出力を有効化する場合は、OCI Object Storage への権限が不足していると、認証局作成に失敗します

プライベート認証局を作成します。
OCI コンソール左上のハンバーガーマークをクリックし、Identity & SecurityCertificate Authorities をクリックします。
image.png

任意のコンパートメントを選択し、Create Certificate Authority をクリックします。
image.png

設定を入力し、Create Certificate Authority をクリックします。
今回は以下のようにしています。
image.png
image.png
image.png
image.png
image.png

項目 概要 設定値
Basic Information
Certificate Authority Type ・作成する認証局のタイプ Root Certificate Authority
Name ・作成する認証局を識別する名前 private-root-ca
Description ・作成する認証局の説明 Private Root CA
Subject Information
Common Name ・CNに該当
・証明書の発行者を識別
SSL External Public Website
Additional Fields ・追加項目(オプション)
・DV、OV等の証明したい内容に合わせて追加
Country: Japan
Sate or Province: Tokyo
Authority Configuration
Not Valid Before ・作成する認証局の有効期限開始日 空白
※即時開始
Not Valid After ・作成する認証局の有効期限終了日
※有効期限開始日+1日~2037年12月31日の範囲で指定可能
Jan 14, 2036 00:00 UTC
Vault ・使用するキーが格納されているOCI Vault default-vault-for-certificates
Key ・使用するキー certificates-hsm-key
Signing Algorithm ・署名アルゴリズム SHA384_WITH_RSA
Rules
※無でも可能
Maximum Validity Duration for Certificates (Days) ・認証局から発行する証明書の最大有効期限 空白
Maximum Validity Duration for Subordinate CA (Days) ・下位認証局の最大有効期限 空白
Revocation Configuration
Skip Revocation ・CRLの発行を無効化するかどうか Enabled
Object Storage Bucket ・CRLを格納する空のObject Storage Bucket -
Object Name Format ・CRLファイル名のカスタム -
Custom Formatted URLs ・CRLファイルの取得URLのカスタム -

StateActive になれば作成完了です。
image.png

サーバー証明書発行

サーバー証明書を発行します。

先ほど作成した認証局をクリックします。
image.png

CertificatesIssue Certificate をクリックします。
image.png

設定を入力し、Create Certificate をクリックします。
今回は以下のようにしています。
image.png
image.png
image.png
image.png

項目 概要 設定値
Basic Information
Certificate Type ・発行する証明書のタイプ Issued by internal CA
Name ・証明書を識別する名前 flb-server-certificates
Description ・証明書の説明 For FLB Server Certificates
Subject Information
Common Name ・証明書で証明する対象の名称
・FQDNやドメイン名
Subject Alternative Names ・サブジェクト代替名
Aditional Fields ・追加項目(オプション)
・DV、OV等の証明したい内容に合わせて追加
Country: Japan
Sate or Province: Tokyo
Certificate Configuration
Certificate Profile Type ・発行する証明書のタイプ TLS Server
Not Valid Before ・作成する証明書の有効期限開始日 空白
※即時開始
Not Valid After ・作成する証明書の有効期限終了日
※有効期限開始日+1日~2037年12月31日の範囲で指定可能
Apr 16, 2026 00:00:00 UTC
Key Algorithm ・証明書キー作成アルゴリズム RSA2048
Signature Algorithm ・署名アルゴリズム SHA256_WITH_RSA
Rules
※無でも可能
Renewal Interval (Days) ・証明書を更新すべき間隔(日数)を指定 90
Advance Renewal Period (Days) ・証明書が対象とする更新の何日前にプロセスが発生すべきかを指定 30

StateActive になれば作成完了です。
image.png

OCI Load Balancer (Flexible Load Balancer) 作成

OCI FLB を作成します。
OCI コンソール左上のハンバーガーマークをクリックし、NetworkingLoad balancer をクリックします。
image.png

任意のコンパートメントを選択し、Create load balancer をクリックします。
image.png

設定を入力し、Create をクリックします。
今回は以下のようにしています。

  • ポイントとなるリスナーのみ記載します

image.png

クライアントPCにプライベート認証局のルート証明書インポート

クライアントPCにプライベート認証局のルート証明書をインポートします。

作成したプライベート認証局をクリックします。
image.png

VersionsView Content をクリックします。
image.png

本検証では最上位の認証局であり、かつ1つしか認証局はないので、上半分の Download をクリックして、ルート証明書をダウンロードします。
image.png

私は MacOSを使ってますので、ダウンロードした証明書をダブルクリックし、ログインユーザーのキーチェーンにインポートします。
image.png

キーチェーンアクセスを開き、先程インポートした証明書をダブルクリックします。
image.png

信頼 タブ内の この証明書を使用するとき常に信頼 に変更して閉じます。
閉じるとユーザーPWを効かれるため、ログインユーザーのパスワードを入力し更新します。
image.png

以下の用になれば完了です。
image.png

動作確認

では実際にブラウザからアクセスしてみます。
証明書エラーなくアクセスできたことが確認できました。
image.png


おわりに

本記事では、OCI Certificates についてと、使用方法についてまとめました。

OCI サービスを使って外部公開サイトを展開する際は必ず利用を検討することになると思いますので、その際は本記事を参考にしていただければと思います。


🌟この記事が誰かの役に立てば幸いです!
また、ご質問やフィードバックもお待ちしています。


参考資料

リファレンス

ブログ

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?