Alpine LinuxとCertbotでLet’s Encryptする

最近のブラウザではSSLでないサイトは問答無用で悪という風潮なので、Webサイトを公開する時は必ずSSL化する必要が有ります。

Certbotの動かし方は諸説ありますが、今回はDockerでCertbotを動かしたいので、まずはそもそもAlpine LinuxでCertbotを使えるのかを確認しました。

また、サブドメインでWebサイトを開設する事があるので、ついでにワイルドカード認証も行います。

DockerでAlpine Linuxを実行する

以下のコマンドでイメージのダウンロードからコンテナの起動まで自動でやってくれます。

$ docker run -it --rm alpine

以降はコンテナ内のシェルで操作を行います。

環境

イメージのタグ指定は行わなかったのでlatestが起動します。この時のバージョンは以下の通りでした。

$ cat /etc/alpine-release
3.11.5

Certbotのインストール

Alpine Linuxではapkというパッケージマネージャが標準でインストールされていますので、これを使ってCertbotをインストールします。

$ apk update && apk add certbot

Certbot

以下のコマンドを実行すると対話的に認証が進みます。今回はApacheやnginx等のWebサーバーを用意していないので、DNS設定のみで認証が行えるDNS認証を行います。

コマンドを実行したらいくつかの質問に答えます。

$ certbot certonly --server https://acme-v02.api.letsencrypt.org/directory --agree-tos --manual --preferred-challenges dns -d "*.kthksgy.com,kthksgy.com"

今回はWebサイトを開設するサーバー上で実行しているので、Yと入力してEnterします。

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Obtaining a new certificate
Performing the following challenges:
dns-01 challenge for kthksgy.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.

Are you OK with your IP being logged?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

次に、DNS認証を行っているので、ドメインのDNSレコードにTXTレコードとして以下の文字列J6coMQx4a5mFwt2JFN7UUKiEAd8POcs3yuv9sKSRiqEを追加します。

追加したら、DNSレコードが反映されるまでEnterキーを押さないでください。押した場合は認証用文字列が変更されて、再度DNSレコードの設定が必要となります。

nslookupで反映されたか一応確認出来ますが、一応5分くらい時間を置くと良いです。

# 反映されていない場合の表示
$ nslookup -q=txt _acme-challenge.kthksgy.com
Server:         127.0.0.53
Address:        127.0.0.53#53

** server can't find _acme-challenge.kthksgy.com: NXDOMAIN
# 反映された場合の表示
$ nslookup -q=txt _acme-challenge.kthksgy.com
Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
_acme-challenge.kthksgy.com     text = "J6coMQx4a5mFwt2JFN7UUKiEAd8POcs3yuv9sKSRiqE"

Authoritative answers can be found from:

5分程待ったら、Enterキーを押してみます。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.kthksgy.com with the following value:

J6coMQx4a5mFwt2JFN7UUKiEAd8POcs3yuv9sKSRiqE

Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

認証が完了すると、以下のような表示になります。

Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/kthksgy.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/kthksgy.com/privkey.pem
   Your cert will expire on 2020-07-18. 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"
 - 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/以下に証明書関連のファイルが作成されます。ファイルの実体は/etc/letsencrypt/archive/にありますが、利用する際はそこへのシンボリックリンクが/etc/letsencrypt/live/にあるので、それを参照してください。

$ pwd
/etc/letsencrypt/live/kthksgy.com
$ ls -la
total 12
drwxr-xr-x    2 root     root          4096 Apr 19 14:09 .
drwx------    3 root     root          4096 Apr 19 14:09 ..
-rw-r--r--    1 root     root           692 Apr 19 14:09 README
lrwxrwxrwx    1 root     root            35 Apr 19 14:09 cert.pem -> ../../archive/kthksgy.com/cert1.pem
lrwxrwxrwx    1 root     root            36 Apr 19 14:09 chain.pem -> ../../archive/kthksgy.com/chain1.pem
lrwxrwxrwx    1 root     root            40 Apr 19 14:09 fullchain.pem -> ../../archive/kthksgy.com/fullchain1.pem
lrwxrwxrwx    1 root     root            38 Apr 19 14:09 privkey.pem -> ../../archive/kthksgy.com/privkey1.pem

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です