この記事では、CentOS®7サーバーにLet’sEncrypt®Certbotユーティリティをインストールして使用する方法について説明します。
Let's Encryptとは何ですか?
Let’s Encryptは、90日間の無料SSL証明書を提供する認証局(CA)です。次の詳細は、Aboutページからのものです:
Let’s Encryptは、無料の自動化されたオープンな認証局(CA)であり、公共の利益のために運営されています。インターネットセキュリティ研究グループ(ISRG)が提供するサービスです。
WebサイトでHTTPS(SSL / TLS)を有効にするために必要なデジタル証明書を、可能な限り最もユーザーフレンドリーな方法で無料で提供します。これを行うのは、より安全でプライバシーを尊重するWebを作成したいからです。
Let’sEncryptの背後にある主な原則は次のとおりです。
- 無料 :ドメイン名を所有している人なら誰でも、Let’s Encryptを使用して、信頼できる証明書を無料で取得できます。
- 自動 :Webサーバーで実行されているソフトウェアは、Let’s Encryptと対話して、簡単に証明書を取得し、使用できるように安全に構成して、自動的に更新を処理できます。
- 安全 :Let’s Encryptは、CA側とサイト運営者がサーバーを適切に保護するのを支援することにより、TLSセキュリティのベストプラクティスを推進するためのプラットフォームとして機能します。
- 透明 :発行または取り消されたすべての証明書は公に記録され、誰でも検査できるようになります。
- 開く :自動発行および更新プロトコルは、他の人が採用できるオープンスタンダードとして公開されます。
- 協力的 :基盤となるインターネットプロトコル自体と同様に、Let’s Encryptは、1つの組織の制御を超えて、コミュニティに利益をもたらすための共同の取り組みです。
Let’s Encryptと他のSSL証明書の違いは何ですか?
SSL証明書は、サーバーデータの暗号化に役立つキーです。 Webブラウザーは、DigiCert、GoDaddy、COMODOなどの有名なCAによって提供されたSSL証明書のみを認識します。有名で信頼できるすべてのCAは、CA /ブラウザフォーラム(cabforum.org)のメンバーであり、一連の厳格な要件に従って証明書を発行します。
SSL証明書には3つの異なるレベルがあります:
-
ドメイン検証(DV)証明書 :これは、ドメインの所有権を証明する基本的なSSL証明書です。追加の検証は必要ありません。
-
組織検証(OV)証明書 :この証明書は、ドメインの所有権を証明するだけでなく、政府当局と良好な関係にある実際の企業がドメインを所有していることも証明します。
-
Extended Validation(EV)証明書 :この証明書は、ビジネスが少なくとも3年間運用されていることをさらに検証することにより、OV証明書よりも一歩進んでいます。
バックエンドでは、これらは重要な違いであり、検証プロセスを経る必要があるため、CAから証明書を購入するときに大きな役割を果たします。
フロントエンドでは、3つの証明書タイプの間に目に見える違いはありません。さまざまな証明書レベルを区別するために使用されるブラウザ機能は廃止されました。詳細については、「Extended Validation Certificates is(Really、Really)Dead
」を参照してください。CA /ブラウザフォーラムの公式CAであるLet’s Encryptは、一度に90日間有効な無料の基本的なDV証明書を提供します。 Let’s Encryptのユニークな点は、Certbotユーティリティです。このユーティリティをウェブサーバーにインストールして、自動化されたプロセスを使用してSSL証明書を発行および管理できます。 Certbotを使用すると、メンテナンスと頭痛が少なくなります。 90日間の有効期間は、証明書キーがより頻繁に循環されることを意味します。これにより、複雑化された可能性のあるキーのウィンドウがはるかに小さくなるため、セキュリティが向上します。
この記事では、CentOS 7の最新リリースにCertbotをインストールすることに焦点を当てています。この例で使用されているサーバーは、次のLAMPスタックを実行しています。
- CentOSLinux®リリース7.8.2003(コア)
- PHP 7.4.8
- MariaDB®5.5.65
- Apache®2.4.6
この記事の手順とコマンドは、Let’sEncryptから証明書を取得するための基本的な機能を提供します。 Certbotは、実行するWebアプリケーションに依存しませんが、実際にドメインを制御していることを検証する手段が必要です。この記事では、webrootメソッドを使用した検証について説明します。これは、Certbotをインストールしたサーバーで証明書が必要なドメインをホストしていることを意味します。
重要 :この記事の説明では、サーバー上の単一サイトのデフォルトのApache構成を使用しています。構成は、Apacheの構成によって異なる場合があります。
Certbotをインストールする
Webページを提供するようにサーバーを設定したら、次のコマンドを使用してCertbotをインストールします。
[root@leexample-centos7 ~]# yum install certbot
Certbotには次の依存関係が必要です:
=================================================================================================================================
Package Arch Version Repository Size
=================================================================================================================================
Installing:
certbot noarch 1.6.0-1.el7 epel 44 k
Installing for dependencies:
pyOpenSSL x86_64 0.13.1-4.el7 base 135 k
python-ndg_httpsclient noarch 0.3.2-1.el7 epel 43 k
python-requests-toolbelt noarch 0.8.0-3.el7 epel 78 k
python-zope-component noarch 1:4.1.0-5.el7 epel 228 k
python-zope-event noarch 4.0.3-2.el7 epel 79 k
python-zope-interface x86_64 4.0.5-4.el7 base 138 k
python2-acme noarch 1.6.0-1.el7 epel 81 k
python2-certbot noarch 1.6.0-1.el7 epel 374 k
python2-configargparse noarch 0.11.0-2.el7 epel 31 k
python2-future noarch 0.18.2-2.el7 epel 806 k
python2-josepy noarch 1.3.0-2.el7 epel 89 k
python2-mock noarch 1.0.1-10.el7 epel 92 k
python2-parsedatetime noarch 2.4-6.el7 epel 78 k
python2-pyrfc3339 noarch 1.1-3.el7 epel 16 k
python2-six noarch 1.9.0-0.el7 epel 2.9 k
pytz noarch 2016.10-2.el7 base 46 k
Transaction Summary
=================================================================================================================================
Certbotを使用して新しい証明書をリクエストする
Certbotをインストールすると、Let’sEncryptに証明書を要求できます。先に進む前に、次の項目に注意してください。
-
要求しているドメイン。 1つのLet’sEncrypt証明書で最大100個のドメインをリクエストできます。
-
サイトのドキュメントルートディレクトリの場所。
certbot
にはこの情報が必要です 検証のためにtxtファイルをインストールするコマンド。異なるディレクトリを指す複数のドメインを追加する場合は、コマンドでそれらすべてを一覧表示する必要があります。 -
/。well-known/acme-challenge /へのアクセスを許可する必要があります ディレクトリ。
-
/。well-known/acme-challenge /を除外する必要があります 強制HTTPからHTTPSリダイレクトへのディレクトリ。
注: Certbotを初めて実行すると、メールアドレスを入力して利用規約に同意するよう求められます。
詳細を指定して次のコマンドを実行し、証明書を要求します。
[root@leexample-centos7 ~]# certbot certonly --webroot -w /var/www/vhosts/example.com -d example.com -d www.example.com
コマンド要素の説明は次のとおりです。
-
certonly
:証明書のみを発行し、他には何もしないことを示すフラグ。このコマンドは、Webアプリケーションの構成を実行しません。 -
--webroot
:それぞれが-w
で区切られた指定されたWebディレクトリを使用するようにCertbotに指示します フラグ。 -
-d
:要求するドメインを指定します。-d
が必要です 証明書に必要な各ドメインのフラグ。
注: 両方のwwwをカバーしたい場合 および非www 単一の証明書上のドメインのバージョンでは、-d
を使用する必要があります それぞれにフラグを立てます。
コマンドを入力すると、次の出力が表示されます。
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for letest.mccrocklin.space
Using the webroot path /var/www/vhosts/example.com for all unmatched domains.
Waiting for verification...
検証に問題がない場合は、次の出力が表示されます。
Cleaning up challenges
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 2020-10-30. 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は、デフォルトで、証明書を /etc/letsencrypt/live/
<domain.tld>
certbot
を実行するときに常に最初に設定するドメインです 指図。証明書ファイルを指すように仮想ホストまたはサーバーブロックを構成するときは、このことに注意してください。
ディレクトリには次のファイルが表示されます。
[root@leexample-centos7 ~]# ls -al /etc/letsencrypt/live/example.com
total 12
drwxr-xr-x. 2 root root 4096 Aug 1 13:35 .
drwx------. 3 root root 4096 Aug 1 13:35 ..
lrwxrwxrwx. 1 root root 47 Aug 1 13:35 cert.pem -> ../../archive/example.com/cert1.pem
lrwxrwxrwx. 1 root root 48 Aug 1 13:35 chain.pem -> ../../archive/example.com/chain1.pem
lrwxrwxrwx. 1 root root 52 Aug 1 13:35 fullchain.pem -> ../../archive/example.com/fullchain1.pem
lrwxrwxrwx. 1 root root 50 Aug 1 13:35 privkey.pem -> ../../archive/example.com/privkey1.pem
-rw-r--r--. 1 root root 692 Aug 1 13:35 README
これらのファイルはすべてシンボリックリンクであることに注意してください。これは、次の更新セクションで説明する自動更新プロセスにとって重要です。次のファイル名とその使用法に注意してください。
- cert.pem は証明書です。
- chain.pem CAバンドルです。
- fullchain.pem は証明書であり、その後にCAバンドルが続きます。
- privkey.pem 秘密鍵です。
次のコマンドを使用してApacheを構成します。
-
デフォルトのApache構成では、次の行を /etc/httpd/conf.d/ssl.confに追加します。 :
SSLEngine on SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem SSLCACertificateFile /etc/letsencrypt/live/example.com/chain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
-
変更を保存して終了します。
-
次のコマンドを実行して、構文チェックを実行します。
httpd -t
-
Syntax OK
を取得した場合 、次に次のコマンドを実行してApacheをリロードします。systemctl reload httpd
Let's Encryptの証明書の有効期間は90日であるため、Certbotユーティリティを介して要求された多くの証明書を更新する必要がある場合、頻繁な更新サイクルは困難な場合があります。
幸い、Certbotには、これを処理する更新機能が組み込まれています。ただし、自動的には実行されないため、cron
として実行するようにスケジュールする必要があります。 仕事。 Cerbotの更新プロセスでは、次の手順を使用します。
-
コマンド
certbot renew
、プロセスを開始します。 -
Certbotは、サーバーに発行およびインストールされたすべての証明書をチェックします。具体的には、今後30日以内に有効期限が切れる証明書を探します。
-
Certbotは、元の証明書要求に使用されたのと同じ検証方法を使用して、これらの期限切れの証明書を更新しようとします。
-
更新が成功すると、Certbotは /etc/letsencrypt/archive/
/ 内に新しいファイルを作成します ディレクトリ、更新の反復ごとに番号を増やし、 /etc/letsencrypt/live// のシンボリックリンクを更新します 。証明書ファイル名は実際には変更されないため、仮想ホスティングサーバーのブロック構成ファイルのファイルパスを変更する必要はありません。これにより、よりシームレスな更新プロセスが可能になります。
cronジョブを設定します
cronジョブの実際の頻度は、サーバーの構成によって異なることに注意してください。 renewfunctionは、30日以内に有効期限が切れる証明書が見つかるまで、既存の証明書のみをスキャンします。トラフィックの少ない時間帯に1日1回実行するようにcronジョブを設定しても安全です。異なる時期に発行されたLet’s Encrypt証明書が多数ある場合は、30日が経過したときにそれらをキャッチできます。
ただし、実行頻度を減らすことを選択できます。たとえば、毎週日曜日の午前3時に週に1回。
rootユーザーのcrontabまたはAnacronを使用してcronジョブを作成できます。 Anacronは、サーバーのダウンタイム中に見落とされた場合でもcronジョブが実行されるようにします。
次の手順を使用して、cronジョブを作成します。
-
コマンドを直接発行して、適切なパスを確認します:
[root@leexample-centos7 ~]# which certbot /usr/bin/certbot
-
使用するcronメソッドを決定します:
-
アナクロン :
/etc/cron.weekly/
に新しいファイルを作成します -certbotrenew
のような名前を付けることができます -
cron :
crontab -e
を使用します
-
-
選択した方法で、次のようなcronエントリを作成します。
0 3 * * 0 /usr/bin/certbot renew
-
ファイルを保存します。
Let’s Encryptは、ドメインの無料のSSL証明書を取得するための優れた代替手段です。これらの証明書はDV証明書です。つまり、ドメインの所有権のみを検証します。この記事では、Let’sEncryptCertbotユーティリティの基本的な機能について説明します。追加のオプションやより高度な機能が必要な場合は、Let’sEncryptコミュニティからさらに支援を受けることができます。
- 暗号化しましょう
- ドキュメントを暗号化しましょう
- コミュニティフォーラムを暗号化しましょう