できるだろう、できるだろう!と思っていて、環境を汚さず、かつ自動更新してくれそうなもので簡単なものを探していたのだが、これが一番良さげ。
https://github.com/j-c-m/ubnt-letsencrypt/blob/master/README.md
注意:実行前に必ずスクリプトを確認すること。一度、スクリプトを作って、自分の環境に置換をして実行したほうがいいかも
また、しくるとあるいは変なところでコミットすると、環境がおかしくなったり、アクセスができなくなることがあるので、必ずバックアップを取っておくこと。
事前設定
設定の条件は以下
subdomain.example.com – FQDN
192.168.1.1 – LAN IP of Router
eth0 – WAN device
事前にDNSの設定をしておく。nslookupでgoogleのDNSにFQDNを聞いて、ちゃんとWAN側のIPを返してくることを確認すること!!!
80番ポートをもしかするとこのルータが答えるようにしておかないとダメかも。自分は、80番ポート開けてた。。。後で要確認!
SSHでログイン
mkdir -p /config/.acme.sh curl -o /config/.acme.sh/acme.sh https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh curl -o /config/scripts/renew.acme.sh https://raw.githubusercontent.com/j-c-m/ubnt-letsencrypt/master/scripts/renew.acme.sh chmod 755 /config/.acme.sh/acme.sh /config/scripts/renew.acme.sh configure set system static-host-mapping host-name subdomain.example.com inet 192.168.1.1 set service gui cert-file /config/ssl/server.pem set service gui ca-file /config/ssl/ca.pem set system task-scheduler task renew.acme executable path /config/scripts/renew.acme.sh set system task-scheduler task renew.acme interval 1d set system task-scheduler task renew.acme executable arguments '-d subdomain.example.com -i eth0' sudo /config/scripts/renew.acme.sh -d subdomain.example.com -i eth0 実行すると以下のようなメッセージが流れる。 [Sat Feb 3 07:31:42 UTC 2018] Stopping GUI service. [Sat Feb 3 07:31:42 UTC 2018] Starting temporary ACME challenge service. [Sat Feb 3 07:31:43 UTC 2018] Creating domain key [Sat Feb 3 07:31:45 UTC 2018] The domain key is here: /config/.acme.sh/subdomain.example.com/subdomain.example.com.key [Sat Feb 3 07:31:45 UTC 2018] Single domain='subdomain.example.com' [Sat Feb 3 07:31:45 UTC 2018] Getting domain auth token for each domain [Sat Feb 3 07:31:45 UTC 2018] Getting webroot for domain='subdomain.example.com' [Sat Feb 3 07:31:45 UTC 2018] Getting new-authz for domain='subdomain.example.com' [Sat Feb 3 07:31:46 UTC 2018] The new-authz request is ok. [Sat Feb 3 07:31:47 UTC 2018] Verifying:subdomain.example.com [Sat Feb 3 07:31:51 UTC 2018] Success [Sat Feb 3 07:31:51 UTC 2018] Verify finished, start to sign. [Sat Feb 3 07:31:52 UTC 2018] Cert success. -----BEGIN CERTIFICATE----- 省略/ないしょ! -----END CERTIFICATE----- [Sat Feb 3 07:31:52 UTC 2018] Your cert is in /config/.acme.sh/subdomain.example.com/subdomain.example.com.cer [Sat Feb 3 07:31:52 UTC 2018] Your cert key is in /config/.acme.sh/subdomain.example.com/subdomain.example.com.key [Sat Feb 3 07:31:52 UTC 2018] The intermediate CA cert is in /config/.acme.sh/subdomain.example.com/ca.cer [Sat Feb 3 07:31:52 UTC 2018] And the full chain certs is there: /config/.acme.sh/subdomain.example.com/fullchain.cer [Sat Feb 3 07:31:53 UTC 2018] Run reload cmd: cat /config/.acme.sh/subdomain.example.com/subdomain.example.com.cer /config/.acme.sh/subdomain.example.com/subdomain.example.com.key > /config/ssl/server.pem; cp /config/.acme.sh/subdomain.example.com/ca.cer /config/ssl/ca.pem [Sat Feb 3 07:31:53 UTC 2018] Reload success [Sat Feb 3 07:31:53 UTC 2018] Stopping temporary ACME challenge service. [Sat Feb 3 07:31:54 UTC 2018] Starting GUI service. sudo /config/scripts/renew.acme.sh -d subdomain.example.com -i eth0 commit save
これでFQDNにログインしたときに証明書が有効になっているはず!