概要
Let's encrypt で取得したSSL証明書を更新する。
Debian 9.3(strech) + nginx + certbot
<2019/4/15追加>
最後に「ワイルドカード証明書の更新」を追加
エグゼクティブサマリー
sudo certbot renew --nginx
その後、Apache2サーバ再起動で完了。めっちゃ心配な方は別の方の記事をご参照。
ブラウザから証明書を確認
Google Chromeの場合。
ログ
1.Debian の Version 情報を表示(不要)
forte@nsx:~% cat /etc/debian_version
9.3
2.入ってるcertbotパッケージの情報
forte@nsx:~% dpkg --list | grep certbot
ii certbot 0.10.2-1 all automatically configure HTTPS using Let's Encrypt
ii python-certbot 0.10.2-1 all main library for certbot
ii python-certbot-nginx 0.10.2-1 all Nginx plugin for Certbot
3.certbotヘルプ
forte@nsx:~% certbot --version
certbot 0.10.2
forte@nsx:~% certbot --help
certbot [SUBCOMMAND] [options] [-d DOMAIN] [-d DOMAIN] ...
Certbot can obtain and install HTTPS/TLS/SSL certificates. By default,
it will attempt to use a webserver both for obtaining and installing the
cert. The most common SUBCOMMANDS and flags are:
obtain, install, and renew certificates:
(default) run Obtain & install a cert in your current webserver
certonly Obtain or renew a cert, but do not install it
renew Renew all previously obtained certs that are near expiry
-d DOMAINS Comma-separated list of domains to obtain a cert for
(the cerbot apache plugin is not installed)
--standalone Run a standalone webserver for authentication
--nginx Use the Nginx plugin for authentication & installation
--webroot Place files in a server's webroot folder for authentication
--manual Obtain certs interactively, or using shell script hooks
-n Run non-interactively
--test-cert Obtain a test cert from a staging server
--dry-run Test "renew" or "certonly" without saving any certs to disk
manage certificates:
certificates Display information about certs you have from Certbot
revoke Revoke a certificate (supply --cert-path)
delete Delete a certificate
manage your account with Let's Encrypt:
register Create a Let's Encrypt ACME account
--agree-tos Agree to the ACME server's Subscriber Agreement
-m EMAIL Email address for important account notifications
More detailed help:
-h, --help [TOPIC] print this message, or detailed help on a topic;
the available TOPICS are:
all, automation, commands, paths, security, testing, or any of the
subcommands or plugins (certonly, renew, install, register, nginx,
apache, standalone, webroot, etc.)
4.既に入ってる証明書の情報を表示(たぶん)
下はすでに更新済みなので、注意。
ほとんどの場合、root権限が必要です(証明書へアクセスできる権限)。
Expiry Date
が有効期限を表す。
forte@nsx:~% certbot certificates
The following error was encountered:
[Errno 13] Permission denied: '/var/log/letsencrypt/letsencrypt.log'
If running as non-root, set --config-dir, --logs-dir, and --work-dir to writeable paths.
forte@nsx:~% sudo certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log
-------------------------------------------------------------------------------
Found the following certs:
Certificate Name: nsx.jibunno-domain.example.com
Domains: nsx.jibunno-domain.example.com
Expiry Date: 2018-06-03 12:21:59+00:00 (VALID: 89 days)
Certificate Path: /etc/letsencrypt/live/nsx.jibunno-domain.example.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/nsx.jibunno-domain.example.com/privkey.pem
-------------------------------------------------------------------------------
5.更新する
nginxの場合。
Apacheの場合はオプションなし(--nginx不要)。
下記はすでに更新してしまったので、処理がスキップされてます。
再来月に張り替え予定。
forte@nsx:~% sudo certbot renew --nginx
Saving debug log to /var/log/letsencrypt/letsencrypt.log
-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/nsx.jibunno-domain.example.com.conf
-------------------------------------------------------------------------------
Cert not yet due for renewal
The following certs are not due for renewal yet:
/etc/letsencrypt/live/nsx.jibunno-domain.example.com/fullchain.pem (skipped)
No renewals were attempted.
ワイルドカード証明書の更新
ワイルドカード証明書の場合、取得時と同じく、パラメータを細かく渡す必要あり。DNSチャレンジを通過させる必要がある。
自分の場合、以下のような感じで更新する。
- 更新コマンドを投入
% sudo certbot certonly --manual \
--server https://acme-v02.api.letsencrypt.org/directory \
--preferred-challenges dns \
-d example.com -d \*.example.copm \
-m your-mailaddress@example.com --agree-tos --manual-public-ip-logging-ok
2.DNSチャレンジを求められるので、その通りにDNSのレコードを設定する
ログは次回。
私の場合、 _acme-challenge
というサブドメインのTXTレコードの設定を求められます。
注意事項として、チャレンジの文字列表示画面で「DNSレコードの設定が終わったらENTER押してね」と言われますが、このときENTER以外の文字列が混じるとチャレンジの別文字列が表示されます。しかし、初回のチャレンジが有効なようで、次の新しいチャレンジは意味ありません。
※要はTeraterm等からコピペすると思いますが、ENTER以外の文字をうちこんじゃったら最初からやり直したほうがよいです
3.Apache2設定
certbot certonlyなので、証明書の更新のみになります。更新なので、ほとんどの方は次のステップへ。証明書取得ごとにファイル名・ディレクトリ名変えるなどしている場合はここで設定変更。
4.Apache reload
% sudo /etc/init.d/apache2 reload
5.ブラウザで証明書の更新を確認
重要。少なくとも、期限が伸びていることを。
以上