_著者はhttps://www.brightfunds.org/organizations/code-org[Code.org]を選択して、https://do.co/w4do-cta [Write for DOnations]プログラムの一環として寄付を受け取りました。

前書き

Let’s Encryptは、https://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates-に無料の証明書を提供する認証局(CA)です。 private-keys-and-csrs [トランスポート層セキュリティ(TLS)暗号化]。 Certbotと呼ばれるソフトウェアクライアントを提供し、証明書の作成、検証、署名、インストール、および更新のプロセスを簡素化します。

Let’s Encryptがhttps://en.wikipedia.org/wiki/Wildcard_certificate[wildcard certificate]をサポートするようになりました。これにより、単一の証明書でドメインのすべてのサブドメインを保護できます。 これは、単一のサーバーを使用して、Webインターフェース、API、その他のサイトなどの複数のサービスをホストする場合に役立ちます。

Let’s Encryptからワイルドカード証明書を取得するには、Certbotのhttps://certbot.eff.org/docs/using.html#dns-plugins[DNSプラグイン]のいずれかを使用する必要があります。

  • certbot-dns-cloudflare

  • certbot-dns-route53

  • certbot-dns-google

  • certbot-dns-digitalocean

選択するプラグインは、DNSサービスをホストするサービスによって異なります。 このチュートリアルでは、CentOS 7上のCertbotでhttps://cloudflare.com [CloudFlare]検証を使用して、ドメインのワイルドカード証明書を取得します。 次に、有効期限が切れたときに更新するように証明書を構成します。

前提条件

このチュートリアルを完了するには、次のものが必要です。

ステップ1-Certbotのインストール

デフォルトでは、 `+ certbot +`パッケージはCentOSのパッケージマネージャーからは利用できません。 Certbotとそのプラグインをインストールするには、https://fedoraproject.org/wiki/EPEL [EPEL]リポジトリを有効にする必要があります。

CentOS 7 EPELリポジトリを追加するには、次のコマンドを実行します。

sudo yum install -y epel-release

インストールが完了したら、 `+ certbot +`をインストールできます。

sudo yum install -y certbot

次に、CertbotのCloudFlareプラグインをインストールします。

sudo yum install -y python2-cloudflare python2-certbot-dns-cloudflare

証明書を取得するためのサーバーを準備しました。 次に、CloudFlareからAPIキーを取得する必要があります。

ステップ2-CloudFlare APIを取得する

Certbotがワイルドカード証明書を自動的に更新するには、CloudFlareログインとAPIキーを提供する必要があります。

Cloudflareアカウントにログインし、https://www.cloudflare.com/a/profile [プロフィールページ]に移動します。

  • Global API Key 行の View *ボタンをクリックします。

image:https://i.imgur.com/VDyv79i.png [CloudFlareプロファイル-APIキー]

セキュリティ上の理由から、Cloudflareアカウントのパスワードを再入力するよう求められます。 入力して、CAPTCHAを検証します。 次に、[表示]ボタンをもう一度クリックします。 APIキーが表示されます:

image:https://i.imgur.com/wjqbplX.png [CloudFlareプロファイル-APIキー]

このキーをコピーします。 次のステップで使用します。

サーバーに戻って、証明書の取得プロセスを続行します。

ステップ3-Certbotの構成

CertbotにCloudflareの使用方法を伝えるために必要な情報はすべて揃っていますが、それを設定ファイルに書き込んで、Сertbotが自動的に使用できるようにします。

最初にパラメーターなしで `+ certbot +`コマンドを実行して、初期設定ファイルを作成します。

sudo certbot

次に、CloudFlareのメールとAPIキーを含む設定ファイルを `+ / etc / letsencrypt +`ディレクトリに作成します。

sudo vi /etc/letsencrypt/cloudflareapi.cfg

以下を追加し、プレースホルダーをCloudflareログインとAPIキーに置き換えます。

/etc/letsencrypt/cloudflareapi.cfg

dns_cloudflare_email =
dns_cloudflare_api_key =

ファイルを保存し、エディターを終了します。 + CloudflareのAPIキーを使用すると、Cloudflare UIから実行できるコマンドラインから同じことを実行できるため、アカウントを保護するために、所有者のみが設定ファイルを読み取りできるようにして、他のユーザーがキーを取得できないようにします。

sudo chmod 600 /etc/letsencrypt/cloudflareapi.cfg

設定ファイルを用意したら、証明書を取得しましょう。

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

証明書を取得するには、 `+ certbot +`コマンドを使用して、必要なプラグイン、使用する資格情報ファイル、リクエストの処理に使用するサーバーを指定します。 デフォルトでは、CertbotはLet’s Encryptの運用サーバーを使用します。これはhttps://en.wikipedia.org/wiki/Automated_Certificate_Management_Environment[ACME] APIバージョン1を使用しますが、Certbotはワイルドカード証明書を取得するために別のプロトコルを使用するため、ACME v2を提供する必要があります終点。

次のコマンドを実行して、ドメインのワイルドカード証明書を取得します。

sudo certbot certonly --cert-name  --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/cloudflareapi.cfg --server  -d "*." -d

緊急の更新およびセキュリティ通知を受け取るメールアドレスを指定するように求められます:

Output...
Plugins selected: Authenticator dns-cloudflare, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):

次に、利用規約に同意するよう求められます。

Output-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel:

その後、Electronic Frontier + Foundationとメールアドレスを共有するよう求められます。

Output-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o:

その後、Certbotは証明書を取得します。 次のメッセージが表示されます。

OutputIMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
  /etc/letsencrypt/live//fullchain.pem
  Your key file has been saved at:
  /etc/letsencrypt/live//privkey.pem
  Your cert will expire on 2018-07-31. 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"
- Your account credentials have been saved in your Certbot
  configuration directory at /etc/letsencrypt. You should make a
  secure backup of this folder now. This configuration directory will
  also contain certificates and private keys obtained by Certbot so
  making regular backups of this folder is ideal.
- 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

これで、ワイルドカード証明書が作成されました。 Certbotがダウンロードしたものを見てみましょう。 キーと証明書を保持するディレクトリの内容を表示するには、 `+ ls +`コマンドを使用します。

sudo ls /etc/letsencrypt/live/
Outputcert.pem  chain.pem  fullchain.pem  privkey.pem  README

`+ README +`ファイルには、これらのファイルに関する情報が含まれています。

$ cat /etc/letsencrypt/live//README

次のような出力が表示されます。

README

This directory contains your keys and certificates.

`privkey.pem`  : the private key for your certificate.
`fullchain.pem`: the certificate file used in most server software.
`chain.pem`    : used for OCSP stapling in Nginx >=1.3.7.
`cert.pem`     : will break many server configurations, and should not be used
                without reading further documentation (see link below).

We recommend not moving these files. For more information, see the Certbot
User Guide at https://certbot.eff.org/docs/using.html#where-are-my-certificates.

ここから、ワイルドカード証明書を使用してサーバーを構成できます。 通常、必要なのはこれらのファイルのうち2つだけです: + fullchain.pem +`および `+ privkey.pem +

たとえば、いくつかのWebベースのサービスを構成できます。

  • wwww。

  • api.

  • 郵便物。

これを行うには、ApacheやNginxなどのWebサーバーが必要です。 これらのサーバーのインストールと構成はこのチュートリアルの範囲を超えていますが、以下のガイドでは、サーバーを構成して証明書を適用するために必要なすべての手順を説明します。

Nginxについては、次のチュートリアルをご覧ください。

Apacheについては、次のチュートリアルを参照してください。

次に、証明書を自動的に更新する方法を見てみましょう。

ステップ5-証明書の更新

暗号化により、90日間有効な短命の証明書を発行します。 有効期限が切れる証明書を確認して自動的に更新するには、cronタスクを設定する必要があります。

更新を実行するhttps://www.digitalocean.com/community/tutorials/how-to-schedule-routine-tasks-with-cron-and-anacron-on-a-vps[cron task] +を作成しましょう毎日確認してください。

次のコマンドを使用して、編集のために `+ crontab +`ファイルを開きます。

sudo crontab -e

ファイルに次の行を追加して、証明書を毎日更新しようとします。

crontab

30 2 * * * certbot renew --noninteractive
  • `+30 2 * * * +`は、「毎日午前2:30に次のコマンドを実行する」ことを意味します。

  • `+ certbot renew +`コマンドは、システムにインストールされているすべての証明書をチェックし、30日以内に期限切れになるように設定されている証明書を更新します。

  • `+-noninteractive +`は、ユーザーの入力を待たないようにCertbotに指示します。

証明書を更新した後、Webサーバーをリロードする必要があります。 `+ renew +`コマンドには、証明書が更新される前または後にコマンドまたはスクリプトを実行するためのフックが含まれています。 ドメインの更新構成ファイルでこれらのフックを構成することもできます。

たとえば、Nginxサーバーをリロードするには、更新構成ファイルを開きます。

sudo vi /etc/letsencrypt/renewal/.conf

次に、 `+ [renewalparams] +`セクションの下に次の行を追加します。

your_domain.conf ’> / etc / letsencrypt / renewal / .conf

これで、更新された証明書をインストールした後、CertbotがWebサーバーを自動的に再起動します。

結論

このチュートリアルでは、Certbotクライアントをインストールし、DNS検証を使用してワイルドカード証明書を取得し、自動更新を有効にしました。 これにより、ドメインの複数のサブドメインで単一の証明書を使用し、Webサービスを保護できます。