このドキュメントでは、Let's Encrypt証明書の取得方法、Cisco Business Dashboardへのインストール方法、およびコマンドラインインターフェイス(CLI)を使用した自動更新の設定方法について説明します。証明書の管理に関する一般的な情報が必要な場合は、「Cisco Business Dashboardでの証明書の管理」を参照してください。
Let's Encryptは、自動化されたプロセスを使用して、無料のドメイン検証(DV)Secure Sockets Layer(SSL)証明書をパブリックに提供する認証局です。Let's Encryptは、Webサーバの署名付き証明書を取得するための簡単にアクセス可能なメカニズムを提供し、エンドユーザが正しいサービスにアクセスしていることを確信できるようにします。詳細については、Let's Encrypt Webサイトを参照してください。
Cisco Business DashboardでのLet's Encrypt証明書の使用は、それほど簡単です。Cisco Business Dashboardには、証明書をWebサーバで使用できるようにするだけでなく、証明書のインストールに関して特別な要件がいくつかありますが、提供されているコマンドラインツールを使用して証明書の発行とインストールを自動化することは依然として可能です。このドキュメントの残りの部分では、証明書の発行と証明書の更新の自動化のプロセスについて説明します。
このドキュメントでは、HTTPチャレンジを使用してドメインの所有権を検証します。これには、標準ポートTCP/80およびTCP/443でインターネットからダッシュボードWebサーバに到達できることが必要です。インターネットからWebサーバに到達できない場合は、代わりにDNSチャレンジを使用することを検討してください。詳細については、『DNSを使用したCisco Business DashboardでのLet's Encryptの使用』を参照してください。
最初のステップは、ACMEプロトコル証明書を使用するソフトウェアを取得することです。この例では、certbot clientを使用していますが、他にも多くのオプションを使用できます。
証明書の更新を自動化できるようにするには、certbotクライアントをダッシュボードにインストールする必要があります。Dashboardサーバにcertbotクライアントをインストールするには、次のコマンドを使用します。
この記事では、青色のセクションはプロンプトとCLIからの出力であることに注意してください。白いテキストはコマンドの一覧です。緑色のコマンド(dashboard.example.com、pnpserver.example.com、user@example.comなど)は、使用している環境に適したDNS名に置き換える必要があります。
次に、ホスト名の所有権を確認するために必要なチャレンジファイルをホストするようにダッシュボードWebサーバを設定する必要があります。これを行うには、これらのファイル用のディレクトリを作成し、Webサーバ設定ファイルを更新します。次に、ダッシュボードアプリケーションを再起動して変更を有効にします。次のコマンドを使用します。
cbd:~$sudo mkdir /usr/lib/ciscobusiness/dashboard/www/letsencrypt cbd:~$sudo chmod 755 /usr/lib/ciscobusiness/dashboard/www/letsencrypt cbd:~$sudo bash -c 'cat > /var/lib/ciscobusiness/dashboard/nginx/nginx-loc-letsencrypt.conf' << EOF次のコマンドを使用して証明書を要求します。
cbd:~$sudo certbot certonly —webroot -w /usr/lib/ciscobusiness/dashboard/www/letsencrypt/ -d dashboard.example.com -d pnpserver.example.com —deploy-hook "cat /etc/letsencrypt/live/dashboard.example.com/fullchain.pem /etc/ssl/certs/DST_Root_CA_X3.pem > /tmp/cbdchain.pem /privkey.pem; /usr/bin/cisco-business-dashboard importcert -t pem -k /etc/letsencrypt/live/dashboard.example.com -c /tmp/cbdchain.pemこのコマンドは、Let's Encryptサービスに対して、それぞれの名前でホストされるWebサービスに接続することによって提供されるホスト名の所有権を検証するように指示します。つまり、ダッシュボードWebサービスはインターネットからアクセス可能で、ポート80および443でホストされている必要があります。ダッシュボードアプリケーションへのアクセスは、ダッシュボード管理ユーザインターフェイス(UI)の[システム] > [プラットフォームの設定] > [Webサーバ]ページでアクセス制御設定を使用して制限できます。詳細については、『Cisco Business Dashboard Administration Guide』を参照してください。
コマンドのパラメータは、次の理由で必要になります。
証明専用 | 証明書を要求し、ファイルをダウンロードします。インストールは実行しないでください。Cisco Business Dashboardの場合、証明書はWebサーバだけでなく、PnPサービスやその他の機能でも使用されます。その結果、certbotクライアントは証明書を自動的にインストールできません。 |
—webroot -w ... | チャレンジファイルを上記で作成したディレクトリにインストールし、ダッシュボードWebサーバからアクセスできるようにします。 |
-d dashboard.example.com -d pnpserver.example.com |
証明書に含める必要があるFQDN。リストの最初の名前は証明書のCommon Nameフィールドに含まれ、すべての名前はSubject-Alt-Nameフィールドにリストされます。 pnpserver.<domain> nameは、DNS検出の実行時にネットワークプラグアンドプレイ機能で使用される特殊な名前です。詳細については、『Cisco Business Dashboard Administration Guide』を参照してください。 |
– デプロイフック"..." | cisco-business-dashboardコマンドラインユーティリティ(登録ユーザ専用)を使用して、Let's Encryptサービスから受信した秘密キーと証明書チェーンを取得し、ダッシュボードユーザインターフェイス(UI)からファイルをアップロードした場合と同じ方法でダッシュボードアプリケーションにロードします。 証明書チェーンを固定するルート証明書も、ここで証明書ファイルに追加されます。これは、ネットワークプラグアンドプレイを使用して展開されている特定のプラットフォームで必要です。 |
certbotクライアントによって生成される手順に従って、証明書を作成するプロセスを実行します。
cbd:~$sudo certbot certonly —webroot -w /usr/lib/ciscobusiness/dashboard/www/letsencrypt/ -d dashboard.example.com -d pnpserver.example.com —deploy-hook "cat /etc/letsencrypt/live/dashboard.example.com/fullchain.pem /etc/ssl/certs/DST_Root_CA_X3.pem > /tmp/cbdchain.pem /privkey.pem; /usr/bin/cisco-business-dashboard importcert -t pem -k /etc/letsencrypt/live/dashboard.example.com -c /tmp/cbdchain.pem"電子メールアドレスを入力するか、キャンセルする場合はCを入力します。
電子メールアドレスを入力します(緊急の更新とセキュリティ通知に使用)(「c」を入力して同意する場合はA、キャンセルする場合はCを入力します。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Yesの場合はYを、Noの場合はNを入力します。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -証明書が発行され、ファイルシステムの/etc/letsencrypt/liveサブディレクトリにあります。
新しい証明書の取得証明書を含むディレクトリにはアクセス許可が制限されているため、ファイルを表示できるのはrootユーザーだけです。特にprivkey.pemファイルは機密性が高いので、このファイルへのアクセスは許可されたユーザだけに制限する必要があります。
これで、新しい証明書を使用してダッシュボードが実行されます。証明書を作成するときに指定した名前のいずれかをアドレスバーに入力して、Webブラウザでダッシュボードユーザーインターフェイス(UI)を開いた場合、Webブラウザは接続が信頼でき安全であることを示す必要があります。
Let's Encryptで発行された証明書の有効期間は比較的短く、現在90日間です。Ubuntu Linux用のcertbotパッケージは、証明書の有効性を1日2回確認し、有効期限が近づいている場合は証明書を更新するように構成されているため、証明書を最新の状態に保つために何もする必要はありません。定期的なチェックが正しく行われていることを確認するには、最初に証明書を作成してから少なくとも12時間待ってから、certbotログファイルで次のようなメッセージを確認します。 cbd:~$ sudo tail /var/log/letsencrypt/letsencrypt.log
2020-07-31 16:50:52,783:DEBUG:certbot.main:certbotバージョン: 0.31.0
2020-07-31 16:50:52,784:DEBUG:certbot.main:引数: ['-q']
2020-07-31 16:50:52,785:DEBUG:certbot.main:検出プラグイン:
(PluginEntryPoint#manual,
PluginEntryPoint#null,PluginEntryPoint#standalone,PluginEntryPoint#webroot)
2020-07-31 16:50:52,793:DEBUG:certbot.log:ルートログレベルを30に設定
2020-07-31 16:50:52,793:INFO:certbot.log:デバッグログの保存先
/var/log/letsencrypt/letsencrypt.log
2020-07-31 16:50:52,802:DEBUG:certbot.plugins.selection:
オーセンティケータ<certbot.cliを要求しました。
_Default object at 0x7f1152969240>およびインストーラ<certbot.cli。
_デフォルトオブジェクト(0x7f1152969240>)
2020-07-31 16:50:52,811:INFO:certbot.renewal:Cert not yet due for renewal
2020-07-31 16:50:52,812:DEBUG:certbot.plugins.selection:オーセンティケータのリクエスト
webrootおよびインストーラなし
2020-07-31 16:50:52,812:DEBUG:certbot.renewal:更新エラーなし
証明書の有効期限が30日以内に切れるまで十分な時間が経過すると、certbotクライアントは証明書を更新し、更新された証明書をダッシュボードアプリケーションに自動的に適用します。
certbotクライアントの使用についての詳細は、『certbot documentation page』を参照してください。
改定 | 発行日 | コメント |
---|---|---|
1.0 |
27-Aug-2020 |
初版 |