Let's Encrypt、 漸く使えるようになりました。 具体的にどうやって使ったらいいんだろう、 と思ってたんですが、結構簡単に使えますねこれ。 素晴らしい、です。 おかげでbotnetのC&C server等でも広く使われるようになったとかってことですが。
ともあれ、 日本語の要諦サイトLet's Encrypt 総合ポータルもあり、 だいぶわかりやすくなってます。
基本的には、
certbot-auto
をgit
又はwget https://dl.eff.org/certbot-auto
で取得- 認証原理は、
certbot-auto
がLet's Encrypt側から指定されたhttp://.../.well-known/XXXXXX
にfileを作る- Let's Encrypt側がそのfileを
GET
、認証
- なので
standalone
(certbot-auto
が臨時のhttp serverを建て、Let's Encryptからのrequestを受ける)が基本 - その間本来のWWW serverを止めねばならないが、止めたくない時は「
--webroot
」でDocumentRoot
を指定し、certbot-auto
にfileを作らせる - 初回の(というか最後に成功した)command optionsを
/etc/letsencrypt/
以下に保存しておき、次回以降「renew
」commandでは省略可 renew
を付けて走らせても、証明書期限が30日を切っていないと発動しない(無理やり更新するには--force-renew
optionが必要)--post-hook
も指定して、apacheのreloadを自動化(これはrenew
が走らないと発動しない。単純にrenew
の終了status codeだと0になるので「&&」で繋ぐだけでは判別不能だった)- 証明書取得がうまく行くと、
/etc/letsencrypt/live/someserver.co.jp/
以下に各種cert filesのsymbolic linkが作成されるので、/etc/apache2/site-enabled/default-ssl
中でSSLCertificateFile
等の示す先をここのcert.pem
等にする(Apache2.4以上やnginxなら証明書+中間CA証明書にfullchain.pem
が使える)
こちとら、apache2 serverを止めたくない状況だったので、
1
|
|
(-w
: webroot-path, -d
: domain, -m
: mail address)
更新は、/etc/cron.daily/certbot
を作って、
1 2 |
|
で良さそうです。sudo chmod a+x /etc/cron.daily/certbot
を忘れずに。
certbot-auto
は、実行するといきなりapt-get update
してからpython2.7とか入れるのと幾つかのpackagesをupdateするので注意です。
また、Let's EncryptにしてからSSL Server Testをかけてみると、「Incorrect SNI alerts」というのが出るようになりました。
これは、/etc/apache2/site-enabled/default-ssl
の<VirtualHost _default_:443>
にServerName XXXXXX
とすることで解決しました。
cf. SSLテストで”Incorrect SNI alerts”を解決する
command log
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|