本ブログは、オラクル・クラウドの個人ブログの1つです。
初めに
OCI証明書は、2021年10月27日にリリースされた新しいOCIマネージド・サービスです。以前、OCIロード・バランサーから証明書を利用したい時、OCI自分の証明書ではなく、外部の証明書しか利用できませんでした。これから、OCI自分で証明局(CA)、証明書(Certificate)、CAバンドルの作成とライフサイクル管理ができるようになりました。証明書サービスは無料で利用できます。
サポート対象のOCIサービス
Load Balancer
API Gateway
WAF (Web Application Firewall)
サービス制限
Free Tierの場合、一つのテナンシに、最大 5 証明局(CA)、150 証明書(Certificate)が作成できます。有料アカウントの場合、以下となります。
他社の類似サービス
OCI | AWS | Azure | Google Cloud |
---|---|---|---|
OCI Certificates | AWS Certificate Manager | App Service Certificates | Google Cloud CA Service |
今回は、証明局(CA)、証明書(Certificate)の作成方法と、Load Balancerからの利用方法を簡単に紹介したいと思います。
ステップ
1. 準備
1-1. IAMポリシーの作成
ポリシー名 | グループ・動的グループ | 目的 | 権限 |
---|---|---|---|
Policy_Security_Admin | SecurityAdmins | セキュリティ管理者向け | Vault/Key/Secretの作成・更新・削除 |
Policy_CA_DG | CertificateAuthority-DG | 動的グループ向け | キーの利用、関連オブジェクトの作成・更新・削除 |
Policy_CA_Admin | CertificateAuthorityAdmins | 証明局(CA)管理者向け | CAの作成・更新・削除 |
Policy_Certificate_Admin | CertificateAdmins | 証明書管理者向け | 証明書の作成・更新・削除 |
Policy_Certificate_User | CertificateUsers | 証明書利用者向け | 証明書の使用 |
動的グループ(CertificateAuthority-DG)の一致ルール
resource.type='certificateauthority'
Policy_Security_Admin
Allow group SecurityAdmins to manage vaults in compartment PoC
Allow group SecurityAdmins to manage keys in compartment PoC
Allow group SecurityAdmins to manage secret-family in compartment PoC
Policy_CA_DG
Allow dynamic-group CertificateAuthority-DG to use keys in compartment PoC
Allow dynamic-group CertificateAuthority-DG to manage objects in compartment PoC
Policy_CA_Admin
Allow group CertificateAuthorityAdmins to manage certificate-authority-family in compartment PoC
Allow group CertificateAuthorityAdmins to read keys in compartment PoC
Allow group CertificateAuthorityAdmins to use key-delegate in compartment PoC
Allow group CertificateAuthorityAdmins to read buckets in compartment PoC
Allow group CertificateAuthorityAdmins to read vaults in compartment PoC
Policy_Certificate_Admin
Allow group CertificateAdmins to inspect certificate-authority-family in compartment PoC
Allow group CertificateAdmins to use certificate-authority-delegate in compartment PoC
Allow group CertificateAdmins to manage leaf-certificate-family in compartment PoC
Policy_Certificate_User
Allow group CertificateUsers to use leaf-certificate-family in compartment PoC
Allow group CertificateUsers to use certificate-authority-delegate in compartment PoC
Allow group CertificateUsers to manage certificate-associations in compartment PoC
Allow group CertificateUsers to inspect certificate-authority-associations in compartment PoC
Allow group CertificateUsers to manage cabundle-associations in compartment PoC
この例は、ルート・コンパートメントの下に「PoC」というコンパートメントを使用しています。
1-2. ボールトの作成
メニュー → アイデンティティとセキュリティ → ボールト
ボールト名を入力し、「ボールトの作成」ボタンをクリックします。
1-3. マスター暗号化キーの作成
ボールトが作成された後、マスター暗号化キーの作成を続行します。
マスター暗号化キー → キーの作成
「保護モード」は、デフォルトのHSMにします。
「キーのシェイプ: アルゴリズム」の選択肢が以下のような三つがあります。
デフォルトは、AES(対称キー)となりますが、証明局(CA)作成時、非対称キーは必要であるので、ご注意ください。この例では、RSAを利用します。
作成後
2. 証明局(CA)の作成
Menu -> Identity & Security -> Certificate Authorities-> Create Certificate Authority
基本情報
この例は、"Root CA"を作成します。名前と説明を入力してから、続行します。
サブジェクト情報
適当な名前を入力してから続行します。必要に応じて、追加情報(オプション)を入力します。
CA構成情報
項目 | 内容 |
---|---|
有効期間の開始日 | デフォルトは空白(即時有効になる)。 |
有効期間の終了日 | デフォルトは、10年後の当日00時(UTC)である。 2037年12月31日以降の日付は指定できない。 |
ボールト | 既存のボールトを指定 |
キー | 既存のキーを指定(HSM 非対称キー) |
署名アルゴリズム | キーシェイプは、RSAの場合: SHA256_WITH_RSA, SHA384_WITH_RSA, SHA512_WITH_RSA キーシェイプは、ECDSAの場合: SHA256_WITH_ECDSA, SHA384_WITH_ECDSA, SHA512_WITH_ECDSA |
失効構成の情報(オプション)
項目 | 内容 |
---|---|
失効のスキップ | 証明書失効リスト(CRL)を構成しない場合は、チェックする。デフォルトは、チェックしない。 |
オブジェクト・ストレージ・バケット | 既存のバケットを指定 |
オブジェクト名の書式 | 適当な名前を入力 |
カスタム書式設定済URL | オプション |
以下のようなエラーが発生したら
Authorization failed or requested resource not found: Key Id <OCID>
原因:キーの利用権限が足りない。
解決策:動的グループの方法で、キーの利用権限を付与する。
上記のステップ1-1に、動的グループとポリシー(Policy_CA_DG)が、正しく設定されているのかを確認してください。
3. 証明書の作成
Menu -> Identity & Security -> Certificates -> Create Certificate
この例は、「内部CAによって発行済」を指定します。証明書の名前と説明を入力し、続行します。
サブジェクト情報
Common Name: ドメイン名を入力
DNS名: ドメイン名を入力
証明書のの構成情報を入力します。
項目 | 内容 |
---|---|
証明書プロファイル・タイプ | 選択肢(四つ): TLS Server or Client, TLS Server, TLS Client, TLS Code Sign |
発行者認証局 | 既存のCAを指定 |
有効期間の開始日 | デフォルトは空白(即時有効になる)。 |
有効期間の終了日 | デフォルトは、90日後の当日00時(UTC)である。 発行CAの有効期限を超えてはいけない。2037年12月31日以降の日付も指定できない。 |
キー・アルゴリズム | 選択肢(四つ): RSA2048, RSA4096, ECDSA_P256, ECDSA_P384 |
※この例は、「有効期間の終了日」について、デフォルトの90日後ではなく、50日後の日付にしています。
項目 | 内容 |
---|---|
更新間隔(日数) | デフォルトは、90日間である。 前画面の「有効期間の終了日」より、自動に計算される。 |
前払更新期間(日数) | デフォルトは、30日間 |
以下のようなエラーが発生したら
The validity period <number> exceeds the maximum validity period allowed <number>
.
原因: 指定した有効期間の日付は無効である。証明書の有効期間は、CAの有効期間を超えてはいけない。
解決策: 有効な日付を指定し、もう一回作成する。
4. Load Balancerから証明書の使用
4-1. LBの作成
MENU -> Networking -> Load Balancers -> Create Load Balancer
LBの構成情報は以下となります。作成画面の詳細を省略させていただきます。
項目 | 内容 |
---|---|
LBタイプ | 従来通りの"Load Balancer" |
可視性タイプ | パブリック |
シェイプ | フレキシブル・シェイプ |
ロード・バランシング・ポリシー | Weighted Round Robin |
ヘルス・チェック・ポリシー | HTTP |
リスナー | HTTPS |
SSL Traffic |
SSL Termination フロントはHTTPSで、バックエンドはHTTPである。 |
この例で、バックエンドのヘルス・チェック・ポリシーは、HTTPを利用しています。もし、SSLを利用したい場合、次のように証明書の指定ができます。(CAバンドルか証明局のどちらを指定する)
認証局(CA)と証明書のPEMファイルをダウンロードして、接続端末のブラウザを開き、次のように証明書をインポートします。
- 信頼されたルート証明機関に、認証局(CA)のPEMファイルをインストール。
- 信頼された発行元に、証明書のPEMファイルをインストール。
4-2. ドメイン名とLBのIPアドレスを紐付ける
ドメイン名を識別できるように、以下のいずれの方法はOKです。
-
方法1:Windowsホストファイルの編集
作業対象:接続端末
編集ファイル名:C:\Windows\System32\drivers\etc\hosts
編集内容:次の行を追加する
例:<LBのIPアドレス> xxx.com
4-3. LBの動作確認
ブラウザを開き、ドメイン名(https://xxxx.com
)で無事にWelcomeページが表示できるのを確認します。
ここまで、証明書の作成とLBからの利用は完了です。
以上
関連記事
オラクル・クラウドの個人ブログ一覧
公式ドキュメント
証明書
認証局の管理
ポリシー・リファレンス -> 証明書サービスの詳細
ロード・バランサのSSL証明書管理
証明書サービスのトラブルシューティング
OCI Certificates FAQ