開発者ドキュメント

作成方法Certbotでワイルドカード証明書を暗号化しましょう

序章

ワイルドカード証明書は、単一の証明書で任意の数のサブドメインを保護できるSSL証明書です。 複数のサブドメインをサポートする必要があるが、それらすべてを個別に構成したくない場合は、ワイルドカード証明書が必要になることがあります。

Let’s Encrypt は、自動化されたAPIを使用して無料の証明書を付与するSSL認証局です。 このチュートリアルでは、次の手順に従って、Let’sEncryptワイルドカード証明書を作成します。

  1. DNSが正しく設定されていることを確認する
  2. DNSベースの課題を完了するために必要なCertbotプラグインのインストール
  3. CertbotにDNSプロバイダーへのアクセスを許可する
  4. 証明書の取得

この情報は、あらゆるLinuxディストリビューションおよびあらゆるサーバーソフトウェアに役立つことを目的としていますが、いくつかのギャップをさらにドキュメントで埋める必要がある場合があります。

前提条件

このチュートリアルでは、すでに次のものがあることを前提としています。

DNSレコードの設定とテストから始めましょう。

ステップ1—ワイルドカードDNSを設定する

ワイルドカードSSL証明書を取得する前に、サーバーが複数のサブドメインの要求に応答していることを確認する必要があります。 これは通常、ワイルドカードDNSレコードを設定することで実現されます。これは次のようになります。

*.example.com.   3600  IN  A  203.0.113.1

*ワイルドカード文字は、任意のホスト名の代用として扱われます。 このDNSレコードの例は、one.example.comおよびtwo.example.comと一致します。 *ワイルドカードは、複数のレベルの名前ではなく、1つのホスト名にのみ展開されるため、裸のexample.comとは一致せず、one.two.example.comとも一致しません。

さらに、ワイルドカードDNSレコードは 1つのワイルドカード文字しか持てないため、*.*.example.comは許可されていません。

正しいDNSエントリを設定するには、DNSプロバイダーのドキュメントを参照してください。 続行する前に、AまたはCNAMEワイルドカードレコードのいずれかを追加することをお勧めします。

注: DigitalOceanを使用してDNSを管理している場合、詳細については、製品ドキュメントの DNSレコードの作成、編集、および削除方法を参照してください。

ワイルドカードDNSが意図したとおりに機能していることをテストするには、hostコマンドを使用していくつかのホスト名を照会します。

  1. host one.example.com

上記の独自のドメインとホスト名に置き換えてください。 また、DNSレコードがシステム全体に伝播するのに数分かかる場合があることを忘れないでください。 DNSレコードを追加したばかりでエラーが発生する場合は、数分待ってから再試行してください。

入力したホスト名が正しく解決されると、次のように出力されます。

Output
one.example.com has address 203.0.113.1

それ以外の場合は、NXDOMAINエラーが表示されます。

Output
Host one.example.com not found: 3(NXDOMAIN)

複数のサブドメインがサーバーに解決されていることを確認したら、次の手順に進むことができます。次の手順では、DNSプロバイダーに接続するようにCertbotを構成します。

ステップ2—正しいCertbotDNSプラグインをインストールする

Let’s Encryptは、証明書を発行する前に、証明書を要求しているホストを制御していることを確認するためのチャレンジを実行します。 ワイルドカード証明書の場合、ドメイン全体を制御していることを証明する必要があります。 これを行うには、DNSベースのチャレンジに応答します。ここで、Certbotは、ターゲットドメインに特別なDNSレコードを作成することでチャレンジに応答します。 次に、証明書を発行する前に、サーバーを暗号化してこのレコードを検証しましょう。

DNSプロバイダーに接続するには、Certbotにプラグインが必要です。 DNSプロバイダーに適切なプラグインの名前を取得するには、CertbotのDNSプラグインリストを参照してください。

たとえば、DigitalOceanプロバイダーはcertbot-dns-digitaloceanと呼ばれます。 次のパッケージをインストールすることで、UbuntuとDebianにcertbot-dns-digitaloceanプラグインをインストールできます。

  1. sudo apt install python3-certbot-dns-digitalocean

他のプラグインも同じ命名形式に従う必要があります。 別のサービスを使用している場合は、プロバイダーの名前を上記のコマンドに交換してください。

CentOSおよびその他のRPMベースのディストリビューションでは、インストールコマンドはdnfの場合があります。

  1. dnf install python3-certbot-dns-digitalocean

またはyum

  1. yum install python3-certbot-dns-digitalocean

また、Certbotプラグインパッケージにアクセスするには、これらのディストリビューションに追加のパッケージリポジトリをインストールする必要がある場合があります。

プラグインが正しくインストールされたことを確認するために、Certbotに現在のプラグインをリストするように依頼できます。

  1. certbot plugins
Output
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * dns-digitalocean Description: Obtain certs using a DNS TXT record (if you are using DigitalOcean for DNS). Interfaces: IAuthenticator, IPlugin Entry point: dns-digitalocean = certbot_dns_digitalocean.dns_digitalocean:Authenticator * standalone Description: Spin up a temporary webserver Interfaces: IAuthenticator, IPlugin Entry point: standalone = certbot.plugins.standalone:Authenticator * webroot Description: Place files in webroot directory Interfaces: IAuthenticator, IPlugin Entry point: webroot = certbot.plugins.webroot:Authenticator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

上記の出力では、dns-digitaloceanプラグインが、デフォルトのstandaloneおよびwebrootプラグインとともに最初にリストされています。

正しいプラグインがインストールされていることを確認したら、次の手順に進んでプラグインを構成します。

ステップ3—Certbotプラグインの構成

CertbotはDNSプロバイダーに接続し、ユーザーに代わってDNSレコードを作成する必要があるため、Certbotに許可を与える必要があります。 これには、DNSプロバイダーからAPIトークンまたはその他の認証情報を取得し、それをCertbotが後で読み取る安全な資格情報ファイルに入れることが含まれます。

プロバイダーごとに認証プロセスが異なるため、取得する必要のあるトークンまたはキーの詳細については、特定のCertbotDNSプラグインのドキュメントを参照してください。

この例では、引き続きdns-digitaloceanプラグインを使用し、ファイル~/certbot-creds.iniにクレデンシャルを保存します。

nanoテキストエディタを使用してこのファイルを作成します。

  1. nano ~/certbot-creds.ini

これにより、新しい空白のテキストファイルが開きます。 特定のDNSプロバイダーの指示に基づいて情報を追加することをお勧めします。 DigitalOceanには単一のAPIトークンが必要なため、次のようになります。

〜/ certbot-creds.ini
dns_digitalocean_token = 235dea9d8856f5b0df87af5edc7b4491a92745ef617073f3ed8820b5a10c80d2

上記のサンプルトークンは、必ず独自の情報に置き換えてください。

ファイルを保存して閉じます。 nanoを使用している場合は、CTRL+Oと入力し(「write o ut」の場合)、ENTERを押してから、CTRL+Xを押します。出口。

ファイルを作成した後、秘密が他のユーザーに漏洩しないように、そのアクセス許可を制限する必要があります。 次のchmodコマンドは、ユーザーのみに読み取りおよび書き込みアクセスを許可します。

  1. chmod 600 ~/certbot-creds.ini

資格情報ファイルを設定すると、実際に証明書を要求する準備が整います。

ステップ4—証明書の取得

この時点で、Let’s Encryptのワイルドカード証明書の取得は、「通常の」非ワイルドカード証明書と同様です。 プロセスの主な変更点は、DNSベースのチャレンジを指定し、DNSクレデンシャルファイルを指すことです。 さらに、-dフラグ付きのワイルドカードドメインを使用します。

  1. sudo certbot certonly \
  2. --dns-digitalocean \
  3. --dns-digitalocean-credentials ~/certbot-creds.ini \
  4. -d '*.example.com'

--nginxまたは--apacheプラグインを使用して、ワイルドカード証明書を使用してこれらのサーバーを自動的に構成することはできないことに注意してください。 代わりにcertonlyコマンドを使用して、証明書のみをダウンロードします。

上記のコマンドを実行すると、Certbotを初めて実行する場合に、いくつかの質問に答えることができます。 それらに答えた後、Cerbotがチャレンジを実行し、Let’s Encryptサーバーがそれを検証し、新しい証明書がダウンロードされて/etc/letsencrypt/に保存されます。 次のような出力が表示されます。

Output
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2021-09-27. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

ワイルドカードSSL証明書が正常に生成されました。 次のステップは、それを使用するようにサーバーアプリケーションを構成することです。 次のセクションでは、これに役立ついくつかのリソースにリンクします。

結論

このチュートリアルでは、Certbotを構成し、Let’sEncrypt認証局からワイルドカードSSL証明書をダウンロードしました。 これで、この証明書を使用して接続を保護するようにサーバーソフトウェアを構成する準備が整いました。

ダウンロードされた証明書ファイルの詳細、およびCertbotが証明書を自動的に更新するときにアプリケーションを正常に再起動する方法については、チュートリアルCertbotスタンドアロンモードを使用してSSLを取得する方法のステップ3と4を参照してください。 Ubuntu18.04の証明書。

モバイルバージョンを終了