最も簡単なLet’s Encryptでの証明書発行
ここでは、最も簡単にLet’s Encryptで証明書を得て、それを維持する方法を示す。なお、対象としているのは、少々古いが、CentOS-6.10とApacheだ。
Let’s Encyrptのインストール
インストールについては、検索して調べて見てほしい。
ドメインの用意
ドメインを取得し、そのDNSを設定する。Apacheでコンテンツをサービスする必要はない。単に、
nslookup ドメイン名
とて、サーバのIPアドレスが出てくればよいようだ。
証明書の発行
certbot-autoを使って証明書作成を要求する。
「certbot-auto certonly -d ドメイン名」とすればよい。
# certbot-auto certonly -d ドメイン名
Saving debug log to /var/log/letsencrypt/letsencrypt.log
How would you like to authenticate with the ACME CA?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Apache Web Server plugin (apache)
2: Spin up a temporary webserver (standalone)
3: Place files in webroot directory (webroot)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-3] then [enter] (press 'c' to cancel):
ここで質問されるのだが、要するに「今指定したドメインが、お前の物だと確認する方法を教えろ」ということらしい。Apacheが動いているので1を指定する(ただし、このドメイン名についてのコンテンツサービスは一切していない)。
Plugins selected: Authenticator apache, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for ドメイン名
Waiting for verification...
Cleaning up challenges
IMPORTANT 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 2019-08-28. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again. To non-interactively renew *all* of your certificates, run
"certbot-auto 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
ということで、どういう仕組みなのかわからないのだが、確認ができたようで、証明書が発行される。証明書は、上に記述されているように「/etc/letsencrypt/live/ドメイン名」の中に入っている。
SSLの設定ではこれを指定すればよい。ちなみに以下のようにしている。
<VirtualHost *:443>
ServerAdmin webmaster@....
ServerName ドメイン名
DocumentRoot /var/www/sites/....
<Directory /var/www/sites/..../>
AllowOverride All
</Directory>
ErrorLog logs/...._log
CustomLog logs/...._log combined
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder ON
SSLCipherSuite EECDH+HIGH:EDH+HIGH:HIGH:MEDIUM:+3DES:!ADH:!RC4:!MD5:!aNULL:!eNULL:!SSLv2:!LOW:!EXP:!PSK:!SRP:!DSS:!KRB5:!DH
SSLCertificateFile /etc/letsencrypt/live/ドメイン名/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/ドメイン名/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/ドメイン名/chain.pem
</VirtualHost>
証明書期限を確認
以下で取得済のすべての証明書の期限を確認できる。
# certbot-auto certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
Certificate Name: ドメイン1
Domains: ドメイン1
Expiry Date: 2019-06-29 19:01:59+00:00 (VALID: 30 days)
Certificate Path: /etc/letsencrypt/live/ドメイン1/fullchain.pem
Private Key Path: /etc/letsencrypt/live/ドメイン1/privkey.pem
Certificate Name: ドメイン2
Domains: ドメイン2
Expiry Date: 2019-08-28 03:52:12+00:00 (VALID: 89 days)
Certificate Path: /etc/letsencrypt/live/ドメイン2/fullchain.pem
Private Key Path: /etc/letsencrypt/live/ドメイン2/privkey.pem
....
今回新たに作成したものは三ヶ月の期限があるようだ。
証明書の更新
証明書は定期的に更新しなければならない。そうでないと期限切れになる。
このやり方はあちこちに記述があるが、極めて簡単。
/etc/crontabに、
00 05 05 * * root /opt/certbot/certbot-auto renew
とでも書けばよい(/opt/certbotにインストールした場合)。この例では一月に一度だけrenewするが、やりすぎてはいけないようだ。例えば毎日行うなど。
参考
- https://letsencrypt.jp/usage/
- http://qiita.com/yasuken/items/e45eb9efd16199512d4e
- https://www.digitalocean.com/community/tutorials/how-to-set-up-let-s-encrypt-certificates-for-multiple-apache-virtual-hosts-on-ubuntu-14-04
- http://serverfault.com/questions/768629/letsencrypt-on-centos-6-with-multiple-virtualhosts
- https://community.letsencrypt.org/t/cant-figure-out-how-to-set-up-multiple-vhosts-to-work-with-certbot-in-centos-6-8/26263
- https://www.digicert.com/ssl-support/apache-multiple-ssl-certificates-using-sni.htm