はじめに
この記事では、IBM Cloudのソリューション"Cloud Internet Services"(以下CIS)を初めて使う人向けに、ドメインの取得から証明書発行、CISへのドメイン登録方法をStep by stepで説明するものです。Code Engineにアプリケーションをデプロイしてドメインマッピングの設定を行い、取得したドメインを使ってアクセスしてみます。
手順
- ドメインを取得 (すでに取得している方は飛ばして大丈夫です)
- ドメインをCISに登録
- CISのネームサーバーをお名前.comに登録
- ドメインの証明書を発行
- Code Engineにアプリケーションをデプロイ
- Code Engineでドメインマッピング設定
- CISでDNSレコードの登録
- 取得したドメインでアプリケーションにアクセス
1. ドメインを取得
今回は、お名前.comを使って取得しました。
記事執筆した2024/12月時点では、ドメインの取得のみなら1つ無料で出来ました。(レンタルサーバー代は別途)
利用可能なドメインには○がついています
私はなかなか決まりませんでした、、
利用したいドメインが決まったら、○マークをクリック
今回はtoulouse0505.com
を取得してみます。
ここから、購入画面です。
利用用途を選択
申し込み内容の確認です。
レンタルサーバーは今回不要でしたので削除しました。
この画面より下にあるオプションは、今回は不要でしたのでつけませんでした。
購入内容が決まったら、右側で会員登録をします。
続いて、会員情報の登録
支払い方法の登録
登録が終わったら画面右上の「申込む」をクリック
申し込みの受付が完了しました!
管理画面を見てみます。
この時点では、お名前.comのネームサーバーが名前解決をすることになっていることが確認出来ます。
2. ドメインをCISに登録
"Overview"画面を開きます。
このアカウントでは既に登録してあるドメインがありますが、右側のポチをクリックしてNew Domain
を選択します。
登録したいドメインを入力します。
Standard Next Planでは、1つ以上ドメインを登録する場合、2つ目からは追加で月額料金がかかります。その旨が書いてあるチェックボックスにチェックを入れ、"Next"を押します。
DNSレコードはあとで登録するので、ここは飛ばして"Next"を押します。
New NS records
の欄にある新たなCISのネームサーバー情報をコピーしてどこかにメモしておきます。
コピーしたネームサーバー情報を、次のステップでお名前.comに登録します。ネームサーバー情報がDNSのシステムに反映されてからでないとCISの方でも登録完了できないので、ここでは一度"Cancel"しておきます。
"Pending"になりました。ここで一旦CISの画面から離れます。
3. CISのネームサーバーをお名前.comに登録
CISのネームサーバーをお名前.comに登録します。
"ドメイン">"ドメイン詳細">"ネームサーバー設定"から以下の画面に辿り着きました。"その他のサービス"の欄から、CISのネームサーバーを登録します。
これで、取得したドメインの名前解決を行うネームサーバーを、お名前.comのものからCISのものに変更することが出来ました。この変更がDNSのシステムに反映されるまで24~72時間ほどかかるそうです。(今回は24時間後には反映されていました)
4. ドメインの証明書を発行
続いて、Let's Encryptでドメインの証明書を発行します。
Let's Encryptとは、ACMEプロトコルを使用して動作する認証局(CA機関)です。ユーザーはACMEクライアント(Certbotなど)を通じて Let's Encryptの証明書を取得・管理します。(Let's encrypt参照:https://letsencrypt.org/ja/docs/challenge-types/)
certbotをインストール
brew install certbot
証明書発行のコマンド
sudo certbot certonly
--manual
--server https://acme-v02.api.letsencrypt.org/directory
--preferred-challenges dns
-d "*.toulouse0505.com"
-d "toulouse0505.com"
-m "xxxxxx@gmail.com"
-
コマンドはこちらのQiitaを参考にさせていただきました。
https://qiita.com/F_clef/items/136d81223c030904523c -
サブドメインを作った場合も、同じ証明書が使えるように、ワイルドカード -d "*.toulouse0505.com"を入れています。
利用規約が表示されるので"Y"で同意します。
またメールでのお知らせに関する承諾を聞かれますがこれはどちらでも大丈夫です。
ACMEチャレンジのTXTレコードに設定する値が表示される
続いて以下のコマンドが返ってきます。
- - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name:
_acme-challenge.toulouse0505.com.
with the following value:
xxxxxxxxxxxxxxxx
- - - - - - - - - - - - - - - - - - - -
ここで、ターミナル画面が"Press Enter to Continue"
とEnterキー待ちの状態となりますが、まだ押しません。認証用のトークンであるvaluexxxxxxxxxxxxx
の値をコピーし、CISに登録しに行きます。
DNSへTXTレコードを設定
ドメイン名toulouse0505.com
が登録されているDNSがきちんと制御下にあることを証明するために、認証用のトークンをCISのDNSレコードに登録します。
ポータルでCISを開き、"Reliability" > "DNS records"と進みます。
"Add"を押すと以下の画面が出てきます。
- タイプ:TXT
- ホスト名:_acme-challenge
- Content:コピーしておいた認証用のトークン
xxxxxxxxxxxxx
をペースト
"Add"を押して完了です。
TXTレコードが追加されたことが確認できます。ここで5分ほど待ちます。
証明書発行
5分ほど待ってTXTレコードが反映された頃に、Enterを押すと証明書が発行されます。
Successfully received certificate.
Certificate is saved at:
/etc/letsencrypt/live/toulouse0505.com/fullchain.pem
Key is saved at:
/etc/letsencrypt/live/toulouse0505.com/privkey.pem
This certificate expires on 2025
These files witl be updated when the certificate renews.
-
発行された証明書が以下のディレクトリで確認できます。
証明書 : /etc/letsencrypt/live/ドメイン名/fullchain.pem
秘密鍵 : /etc/letsencrypt/live/ドメイン名/privkey.pem -
証明書の自動更新の案内も表示されますが今回は省略します。
5. Code Engineにアプリケーションをデプロイ
- コンポーネントタイプ:アプリケーション
- アプリケーション名:
application-toulouse
- コード:既存のコンテナイメージ(helloworld)を使う
- リソースは課金を抑えるため最小限のもの
- インスタンス1台のみでの稼働
- ドメインマッピング:パブリック
プロビジョニングが完了したら、アプリケーションの動作確認をします。
Code Engineでデプロイしたアプリケーションの動作確認ができました。
6. Code Engineでドメインマッピング設定
続いて、Code Engineのドメインマッピング機能で、今回私が取得したドメインtoulouse0505.com
でアプリケーションにアクセスできるようにします。
"Domain Mappings"のページを開きます。
"Custom domain mappings"から"Create"をクリックします。
先ほどLet's encryptで発行した証明書(サーバー証明書、中間証明書を含むフルチェーン)とPrivate Keyをコピペします。
続いて画面下部で、アプリケーションを公開する際に使うFQDNを作成します。今回はwww.toulouse0505.com
にします。
CNAME targetも後ほどCISに設定を入れるのでコピーをしてどこかにペーストしておきます。
"Create"を押します。
7. CISでDNSレコードの登録
CISを経由してCode Engineにアクセスさせるために、DNSレコードの登録をします。
CISの"Reliability"から、ページ下部のDNS recordsの"Add"をクリック。
(先程使った"_acme-challenge"は削除して大丈夫です)
Code Engineにアクセスする為のDNSレコードの中身
- DNSレコードタイプ:CNAME
- ホスト名:www
- Alias(≒別名)domain name:Code Engineのカスタムドメイン設定時にコピーしておいたCNAME target
"Add"でDNSレコードを追加します。
"Proxy"をオンにしておきます。
これでDNSレコード追加作業は完了です。