2022/05/15

CertMgr の Let's Encrypt を ZeroSSL に変えてみた

 HCL Domino V12 の新機能「TLS証明書管理(CertMgrタスク+証明書ストア CertStore.nsf)は、Let's Encrypt を標準でサポートしています。

オンラインヘルプによると、正式にはサポートされていないけれども、ACMEプロトコルをサポートする Let's Encrypt 以外の CA (認証局)に証明書を要求できるとのこと。

そこで ACME プロトコルに対応した CA である ZeroSSL に切り替えて証明書の取得が可能なのかどうか試してみました。


Let's Encrypt は非営利団体ですが、ZeroSSL には Pricing Plan があり、Free(無償)での利用も可能です。Free プランでも 90日間有効な証明書の自動発行/更新に対応しています。

ZeroSSL Pricing Plan

Free プランでは「3  90-Day Certificates」と記載されています。この「3」の部分が、他の有償プランでは「」となっており、Free プランでは取得できる証明書が 3 つまでに制限されているように見えます。まあテストするには問題ありません。

「テスト」と言えば、Let's Encrypt にはテスト用途の「ステージング」環境がありますが ZeroSSL にはそれがありません。


まず最初に ZeroSSL のWebサイトの右上にある「Get Free SSL」をクリックして Free Account を作成します。作成が完了して「Get Started」ページが開いたら、サイドメニューから「Developer」をクリックします。


「Developer」ページの下部にある「EAB Credentials for ACME Clients」で「Generate」をクリックします。


すると「EAB KID」と「EAB HMAC Key」に文字列が表示されるので、これを控えておきます。


次は Domino 側の設定です。

証明書ストア(CertStore.nsf)を開き、サイドメニューから「設定 - ACME アカウント」をクリックします。※証明書ストアは CertMgr タスクの初回起動時に自動作成されます。

ここで開くビューには、デフォルトでは LetsEncryptProduction と LetsEncryptStaging という2つの文書が表示されます。今回はここに ZeroSSL のために文書を追加するのでビュー上部にある「アカウントの追加」ボタンをクリックします。

「ACME アカウント」文書の項目は下図のように埋めました。


「ACME ディレクトリ URL」にはこちらにある「ACME Server URL」の値をセットしました。

「E メールアドレス」は空欄のままでも TLS 証明書の要求は動作はするようで、空欄のままにすることによる影響の有無はよくわかりません。

「利用規約の了承」にあるチェックボックスにはチェックマークを付けておく必要があります。チェックマークが無いまま TLS 証明書を要求すると、ステータスに「エラー The terms of service MUST be agreed to (401) Unexpected HTTP Status when generating new ACME account」と記録されました。

また「外部アカウントバインディング」には先に控えておいた「EAB KID」と「EAB HMAC Key」の値をそれぞれセットしました。

ここまでで「ACME アカウント」文書を一旦保存して閉じます。


次に証明書ストア(CertStore.nsf)のサイドメニューから「TLS 証明書 - ホスト名別」をクリックして、ビュー上部にある「TLS 証明書の追加」ボタンをクリックします。

「TLS 証明書」文書の項目は下図のように埋めました。

「ホスト名」は、TLS 証明書の SAN へ設定する名前をタイプします。
(別のブログエントリに記載しているのでここでは説明を省略しますが、私の環境では上図で指定したホスト名で検索可能なDNSプロバイダの設定文書を証明書ストア内に作成済みです)
「ACME アカウント」には、上で作成した「ACME アカウント」文書の「アカウント名」へセットした名前「ZeroSSL」を選択します。これが ACME プロトコルに対応した CA の切り替えを意味します。ここで選択した「ACME アカウント」文書の設定を元に ZeroSSL へアクセスするようになります。

この状態でフォーム上部にある「要求の送信」ボタンをクリックします。

CertMgr が処理を行い、証明書の取得が完了し、この「TLS 証明書」文書の1つ目のステータスが「発行」に変われば成功です。



ところで上図の「TLS 証明書」には、「ステータス」欄が2つあります。

実は最初に実行したとき、2つ目のステータスに「警告 - Last cert in chain is NOT self signed - No root found」と表示されました。No root found とありますが、これは証明書ストア(CertStore.nsf)内に対応するルート証明書の登録が無い場合に表示されるようです。

取得できた証明書のルート証明書を調べるには、「TLS 証明書」文書を開いて、フォーム上部にある「証明書の調査」ボタンをクリックします。

表示される「Examine Internet Certificates」ウィンドウで「証明書の発行者」にあるリストの最後が「ルート」です。今回の証明書では、リストの最後が「CN=AAA Certificate Services/O=Comodo CA Limited/L=Salford/ST=Greater Manchester/C=GB」でした。

これをググると pem 形式でダウンロードできるWebサイトがヒットしました。ダウンロードした pem ファイルをテキストエディタで開くと、"-----BEGIN CERTIFICATE-----" で始まる文字列があります。

証明書ストアのサイドメニューで「設定 - 信頼するルート」をクリックしてビュー上部にある「信頼するルートの追加」ボタンをクリックすると「信頼するルート」の編集画面が開きます。一旦 pem ファイルに戻り、文字列全体をクリップボードへコピーした後、「信頼するルート」の編集画面に戻って「証明書の貼り付け」ボタンをクリックします。表示されるメッセージにOKをクリックして「要求の送信」ボタンをクリックします。この後 CertMgr が処理を行うと下図赤枠内のとおりルート証明書が追加できました。


この後、「TLS 証明書」文書を開いて再度「要求の送信」を行うことで、2つ目のステータス欄は CertMgr の処理後に「有効」に変わりました。


ちなみに、ZeroSSL のダッシュボードでは発行した証明書の数を確認することができるのですが「5」と表示される箇所と「0/3」と表示される箇所がありました。1つの「TLS 証明書」文書で何度も「要求の送信」を行ったせいか、Issued にある証明書の数は成功した「要求の送信」の回数「5」と同じ数になっていました。「要求の送信」の都度新たな証明書を発行するように見えます。

Free プランでは証明書が 3 つに制限されているように思うのですが、ダッシュボード上は 5 となっています。5つともホスト名が同じだからかもしれませんが特にエラーが発生する訳でも無く問題ないかどうかは現状よくわかっていません。「0/3」と表示されている部分についても何を表しているのかよくわかっていません。いずれにしても、そのままにしておいて後でごたごたしても面倒なので、きちんと削除しておきたいと思っています。

0 件のコメント:

コメントを投稿