Let's Encryptで発行した証明書とOCIの証明書サービスでOCIのロードバランサーをHTTPS化する

はじめに

こんにちは、技術部の内藤です。

前回の記事 Oracle LinuxでcertbotによるLet's EncryptのTLS証明書発行 では、Oracle Linuxでcertbotを使ってLet's EncryptのTLS証明書を発行しました。

今回はその続きとして、発行したTLS証明書をOCIのロードバランサーで使用する方法を説明します。具体的には、certbotで発行した証明書をOCIの証明書サービスにインポートし、ロードバランサーのHTTPS用のリスナーで利用します。

証明書ファイルの確認

まず、certbotで発行された証明書ファイルを確認します。

sudo ls -la /etc/letsencrypt/live/xxx.jp/

以下のファイルが存在することを確認してください。

  • cert.pem
  • chain.pem
  • fullchain.pem
  • privkey.pem

OCIの証明書サービスにインポートする際は、以下のファイルを使用します。

  • 証明書: cert.pem
  • 証明書チェーン: chain.pem
  • 秘密鍵: privkey.pem

証明書ファイルの内容を取得

証明書をOCIにインポートするため、各ファイルの内容をコピーします。

# 証明書の内容を表示
sudo cat /etc/letsencrypt/live/xxx.jp/cert.pem

# 証明書チェーンの内容を表示
sudo cat /etc/letsencrypt/live/xxx.jp/chain.pem

# 秘密鍵の内容を表示
sudo cat /etc/letsencrypt/live/xxx.jp/privkey.pem

それぞれの内容をエディタなどに控えておきます。

OCIの証明書サービスに証明書をインポート

以下の手順で、証明書の作成に進みます。

  1. OCIコンソールにログイン
  2. 「証明書」を検索して選択
  3. 「証明書の作成」ボタンをクリック

「基本情報」で以下を設定します。

証明書タイプは インポート済 を選択し、名前や説明はわかりやすいように入力します。

証明書作成1

「サブジェクト情報」は インポート済 だとなにも設定できないため次へ。

「証明書構成」で、先ほどコピーした内容を貼り付けます。

  • 証明書: cert.pem の内容を貼り付け
  • 証明書チェーン: chain.pem の内容を貼り付け
  • 秘密鍵: privkey.pem の内容を貼り付け

注意点として、各ファイルの内容は、-----BEGIN CERTIFICATE----------BEGIN PRIVATE KEY----- などのヘッダーとフッターや、改行や空白文字も含めてすべて貼り付けてください。

証明書作成2

あとは画面の指示に従って進めば、インポートした証明書の作成は完了です。

ロードバランサーでHTTPS化

次に、ロードバランサーに証明書サービスで作成した証明書を使ってHTTPS化してみましょう。

ロードバランサーを作成したことがない方は、公式のチュートリアルなどを参考に作成してください。

NSGの設定などは省略します。

HTTPS リスナーの設定

以下のようなリスナーを作成します。

  • プロトコル: HTTPS
  • ポート: 443
  • SSLの使用: ON
  • 証明書リソース: 証明書サービス管理対象証明書
    • 先ほどインポートした証明書を選択

リスナー設定1

古いブラウザは対象にしないサービスなら、 拡張オプションの表示 を押して以下を設定し、セキュリティを高めましょう。

  • TLSバージョン: TLS 1.3 のみ指定
  • 暗号スイートの選択: oci-tls-13-recommended-ssl-cipher-suite-v1

TLS設定

(まだの場合)DNS設定

xxx.jp の向き先をロードバランサーにしていない場合は、ゾーンに、以下のようにAレコードを追加します。

  • レコード名: xxx.jp
  • レコードタイプ: A
  • レコード値: ロードバランサーのIPアドレス
  • TTL: 86400 ※あまり変更しない前提で1日にしていますが、必要に応じて変更してください

DNS設定

ここまで設定すれば、HTTPSで xxx.jp にアクセスできるようになります。

ロードバランサーのバックエンドに、ApacheやNginxが起動しているインスタンスを設定すれば、ブラウザから https://xxx.jp にアクセスして、HTTPSでの通信ができることを確認できます。

おわりに

やはりACMのようなサービスがないのは辛いですが、Let's EncryptやOCIの証明書サービスに慣れて、OCIでのHTTPS化を円滑に行っていきましょう!