Let’s encrypt:さやぼう運用方法

参考URL

Let’s encrypt運用のベストプラクティス

Certbot クライアントの準備(CentOS7)

1.インストール(webrootプラグインを利用)

# yum install certbot

トランザクションの要約
=======================================================================================================================================================
インストール  1 パッケージ (+24 個の依存関係のパッケージ)

総ダウンロード容量: 3.5 M
インストール容量: 16 M
Is this ok [y/d/N]: y
Downloading packages:
(1/25): pyOpenSSL-0.13.1-4.el7.x86_64.rpm                                                                                       | 135 kB  00:00:00
********************************************************************
(25/25): pytz-2016.10-2.el7.noarch.rpm                                                                                          |  46 kB  00:00:00     
-------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                   2.1 MB/s | 3.5 MB  00:00:01     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : python2-pyasn1-0.1.9-7.el7.noarch                                                                                     1/25
********************************************************************
  インストール中          : certbot-1.9.0-1.el7.noarch                                                                                           25/25 
  検証中                  : python-idna-2.4-1.el7.noarch                                                                                          1/25
********************************************************************
  検証中                  : python2-cryptography-1.7.2-2.el7.x86_64                                                                              25/25 

インストール:
  certbot.noarch 0:1.9.0-1.el7                                                                                                                         

依存性関連をインストールしました:                    

完了しました!

2. テスト実行(方法)

OS のパッケージ管理システムから Certbot パッケージをインストールした場合:

# certbot
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Certbot doesn't know how to automatically configure the web server on this system. However, it can still get a certificate for you. Please run "certbot certonly" to do so. You'll need to manually configure your web server to use the resulting certificate.

SSL/TLS サーバ証明書の取得

1. 補助スクリプトの作成

vi /etc/lets-encrypt-knowledge-sayabo.sh
#!/bin/sh

# 証明書のドメイン(,区切りで複数のドメインも指定可能)
DOMAIN=knowledge.sayabo.com

# ドキュメントルート(上のドメインで接続可能である必要がある)
WEBROOT=/home/***/public_html/***/

# メールアドレス(トラブル時にメールが届く)
EMAIL=***@***.***

certbot certonly -m $EMAIL --agree-tos --non-interactive $* --webroot -w $WEBROOT -d $DOMAIN

証明書の取得テスト

cd /etc

./lets-encrypt-knowledge-sayabo.sh --test-cert

chmod 700 lets-encrypt-knowledge-sayabo.sh
[root@sayabo etc]# ./lets-encrypt-knowledge-sayabo.sh --test-cert
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Starting new HTTPS connection (1): acme-staging.api.letsencrypt.org
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for share.sayabo.com
Using the webroot path /home/***/public_html/*** for all unmatched domains.
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/knowledge.sayabo.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/knowledge.sayabo.com/privkey.pem
Your cert will expire on 2018-02-05. 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.

本番用の証明書を取得

cd /etc

./lets-encrypt-knowledge-sayabo.sh --force-renewal
[root@sayabo etc]# ./lets-encrypt-knowledge-sayabo.sh --force-renewal
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for knowledge.sayabo.com
Using the webroot path /home/***/public_html/*** for all unmatched domains.
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/knowledge.sayabo.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/knowledge.sayabo.com/privkey.pem
Your cert will expire on 2018-02-05. 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

ポイント

ポイント1. テスト用の証明書を取得する

--test-cert オプションを与えることで、テスト専用のサーバに接続する。

ここで取得できる証明書は無効なだが、certbotが正しく動作するか、ドメインの設定等が間違っていないか、まずこの段階で確認しておくこと。

ポイント2. webrootプラグインを使用する

certbot自体をWebサーバとして機能させる、standaloneプラグインもあるが、利用するケースは限られるはずである。

動作確認でも、実際の運用でも、webrootプラグインの使用を推奨する。。

証明書の確認・インストール

取得した秘密鍵・証明書・中間証明書のファイルは、デフォルトでは以下のディレクトリに配置される。

/etc/letsencrypt/live/${DOMAIN}/
[root@sayabo etc]# cd letsencrypt/
[root@sayabo letsencrypt]# ls -l
合計 0
drwx------ 4 root root 82 11月 8 00:40 accounts
drwx------ 3 root root 30 11月 8 00:37 archive
drwxr-xr-x 2 root root 62 11月 8 00:41 csr
drwx------ 2 root root 62 11月 8 00:41 keys
drwx------ 3 root root 30 11月 8 00:37 live
drwxr-xr-x 2 root root 35 11月 8 00:41 renewal
drwxr-xr-x 5 root root 43 11月 8 00:09 renewal-hooks
[root@sayabo letsencrypt]# cd live/
[root@sayabo live]# ls -l
合計 0
drwxr-xr-x 2 root root 93 11月 8 00:41 knowledge.sayabo.com
  • privkey.pem 秘密鍵
  • cert.pem 証明書
  • chain.pem 中間証明書
  • fullchain.pem 証明書と中間証明書を連結したファイル

Apacheでの設定方法

バージョン2.4.7以前の場合

SSLEngine on
SSLCertificateFile      /etc/letsencrypt/live/knowledge.sayabo.com/cert.pem
SSLCertificateKeyFile   /etc/letsencrypt/live/knowledge.sayabo.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/knowledge.sayabo.com/chain.pem

バージョン2.4.8以降の場合

# cd /etc/httpd/conf.d

SSLEngine on
SSLCertificateFile      /etc/letsencrypt/live/knowledge.sayabo.com/fullchain.pem
SSLCertificateKeyFile   /etc/letsencrypt/live/knowledge.sayabo.com/privkey.pem

httpd.confを修正した後、httpdを再起動します。

# systemctl restart httpd.service 

表示の確認

対象ドメインがブラウザで表示されるか確認します。

HOME

運用のポイント

ポイント1. 常に同じパスで最新版を参照できる

これらのファイルはすべてシンボリックリンクで、それぞれ最新版の実体ファイルにリンクされています。
証明書を更新しても、ファイルパスを変更する必要はない。

実体のファイルは /etc/letsencrypt/archive/${DOMAIN} 以下に、番号付きのファイル名で保存されています。

ポイント2. fullchain.pemの使い方

fullchain.pem には、証明書と中間証明書の両方が含まれています。

# 要するにこういうことになります
cat cert.pem chain.pem > fullchain.pem

SSLを利用するソフトウェアの中には、中間証明書を設定する項目がないものもあります。
例えば nginx, Postfix, Dovecotなど。
そのような場合には、このfullchain.pemを証明書ファイルとして指定します。

証明書の更新

以下のようなスクリプトを、cronで毎日〜週に1回程度の頻度で実行します。
※cronでの実行頻度については、User Guideによれば毎日〜毎週、All Instructiosによれば1日に2回が推奨。期限が近い証明書がなければ、特に何もしないので、さほど神経質になる必要はありません。

–post-hook オプションの引数は、使用しているOS/ソフトウェアに合わせて変更する必要があります。

certbot renew -q --no-self-upgrade --post-hook "service httpd reload"

運用のポイント

ポイント1. renewサブコマンドを使う

renew を実行すると、これまでに取得した全ての証明書の期限がチェックされ、30日以内に期限が切れるものを自動的に更新します。

証明書の取得時に使用したオプションは

/etc/letsencrypt/renewal/${DOMAIN}.conf

というファイルに保存されており、更新時にはこの設定が使用されます。
変更が必要なら、このファイルを修正しましょう。

ポイント2. –force-renewal オプションは使用しない

–force-renewal オプションは、残り期限にかかわらず、強制的にすべての証明書を更新します。不要な負荷をかけることになるので、cronでの実行時には指定してはいけません。let’s encryptの使用量制限に引っかかる可能性もあります。

ポイント3. 証明書の再読み込みには –post-hook オプションを使う

–post-hook で指定したコマンドは、証明書の更新が行われた場合にのみ、1度だけ実行されます。更新が行われなかった場合は実行されません。ここでWebサーバの再読み込み処理を実行すると良いでしょう。

Let’s Encrypt証明書を削除する方法

Let’s Encrypt証明書を手動で削除する方法

発行したLet’s Encrypt証明書を削除するには、以下のディレクトリにあるファイルを削除すれば、証明書が削除することができます

/etc/letsencrypt/archive/{ドメイン名}
/etc/letsencrypt/renewal/{ドメイン名}.conf
/etc/letsencrypt/live/{ドメイン名}

$ rm -rf /etc/certbot/archive/example.com/
$ rm -rf /etc/certbot/live/example.com/
$ rm -rf /etc/certbot/renewal/example.com.conf

Let’s Encrypt証明書を対話式のコマンドで削除する方法

certbot-auto コマンドや、certbot コマンドでは、deleteオプションを使うことで個別証明書(ドメイン)ごとに削除することが可能です。

コマンドを実行すると削除できる証明書が表示されるので、削除する証明書の番号を選択することで削除できます。
※番号を選択せずに「Enter」キーをおしたら、全ての証明書が削除されますので、削除する前には証明書をバックアップすることを推奨します。

## letsencryptフォルダごと、/var/tmp などにコピーしてバックアップ
# cp -pr /etc/letsencrypt /var/tmp

# certbot delete
Saving debug log to /var/log/letsencrypt/letsencrypt.log

Which certificate(s) would you like to delete?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: knowledge.sayabo.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 5

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
The following certificate(s) are selected for deletion:

  * knowledge.sayabo.com

Are you sure you want to delete the above certificate(s)?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Deleted all files relating to certificate knowledge.sayabo.com.

Was this helpful?

0 / 0

コメントを残す 0

Your email address will not be published.