はじめに
こんにちは、技術部の内藤です。
前回の記事 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の証明書サービスに証明書をインポート
以下の手順で、証明書の作成に進みます。
- OCIコンソールにログイン
- 「証明書」を検索して選択
- 「証明書の作成」ボタンをクリック
「基本情報」で以下を設定します。
証明書タイプは インポート済
を選択し、名前や説明はわかりやすいように入力します。
「サブジェクト情報」は インポート済
だとなにも設定できないため次へ。
「証明書構成」で、先ほどコピーした内容を貼り付けます。
- 証明書:
cert.pem
の内容を貼り付け - 証明書チェーン:
chain.pem
の内容を貼り付け - 秘密鍵:
privkey.pem
の内容を貼り付け
注意点として、各ファイルの内容は、-----BEGIN CERTIFICATE-----
や -----BEGIN PRIVATE KEY-----
などのヘッダーとフッターや、改行や空白文字も含めてすべて貼り付けてください。
あとは画面の指示に従って進めば、インポートした証明書の作成は完了です。
ロードバランサーでHTTPS化
次に、ロードバランサーに証明書サービスで作成した証明書を使ってHTTPS化してみましょう。
ロードバランサーを作成したことがない方は、公式のチュートリアルなどを参考に作成してください。
NSGの設定などは省略します。
HTTPS リスナーの設定
以下のようなリスナーを作成します。
- プロトコル:
HTTPS
- ポート:
443
- SSLの使用: ON
- 証明書リソース: 証明書サービス管理対象証明書
- 先ほどインポートした証明書を選択
古いブラウザは対象にしないサービスなら、 拡張オプションの表示
を押して以下を設定し、セキュリティを高めましょう。
- TLSバージョン:
TLS 1.3
のみ指定 - 暗号スイートの選択:
oci-tls-13-recommended-ssl-cipher-suite-v1
(まだの場合)DNS設定
xxx.jp
の向き先をロードバランサーにしていない場合は、ゾーンに、以下のようにAレコードを追加します。
- レコード名:
xxx.jp
- レコードタイプ:
A
- レコード値: ロードバランサーのIPアドレス
- TTL:
86400
※あまり変更しない前提で1日にしていますが、必要に応じて変更してください
ここまで設定すれば、HTTPSで xxx.jp
にアクセスできるようになります。
ロードバランサーのバックエンドに、ApacheやNginxが起動しているインスタンスを設定すれば、ブラウザから https://xxx.jp
にアクセスして、HTTPSでの通信ができることを確認できます。
おわりに
やはりACMのようなサービスがないのは辛いですが、Let's EncryptやOCIの証明書サービスに慣れて、OCIでのHTTPS化を円滑に行っていきましょう!