2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

OpenBSDのacme-clientでLet's Encryptの証明書を取得する

Last updated at Posted at 2018-05-01

OpenBSD

OpenBSDには独自のHTTPサーバーがあるのを知って調べると、ACMEのクライアントもあると知った1 2
ACMEのクライアントは、acme-client(1)。OpenBSD 6.1から登場とのこと。
OpenBSD 6.3では、証明書やChallenge格納に必要なディレクトリは、あらかじめ作成されているようだ。早速使ってみたい。
環境は、現状最新のOpenBSD 6.3。

設定

acme-clientの設定

実際の/etc/acme-client.confを見れば一目瞭然。
変えたのは…

  • example.comを自分のドメイン名に置き換え
  • alternative namesに、{ mail.example.com ns.example.com www.example.com }など、スペース区切りでSANSを記載

詳細はacme-client.conf(5)参照。

httpdの設定

実際の/etc/examples/httpd.confを見れば一目瞭然。
変えたのは…

  • example.comを自分のドメイン名に置き換え
  • TLS用のserverセクションをコメントアウト

これを、/etc/httpd.confに置く。

TLS用のserverセクションとは、port 443が入ったセクション。証明書取得前は、証明書が無いので、証明書取得後に有効にしてみる。
証明書の格納先は、acme-client.confhttpd.confで一致していることを確認する(デフォルトで一致していた)。
ACMEのChallenge用の格納先は、下記のacme-client(1)の記載が、exampleのhttpd.confにあらかじめ記載されているので、これをそのまま使う。

httpd.conf
        location "/.well-known/acme-challenge/*" {
                root "/acme"
                root strip 2
        }

詳細はhttpd.conf(5)参照。

実行

# rcctl enable httpd
# rcctl start httpd
# acme-client -vAD example.com

上記example.comは、acme-client.confdomainに書いた自分のドメインと一致させる。
30秒くらいで、あっという間に完成。
acme-client.confに書いてある、/etc/ssl/example.com.fullchain.pem/etc/ssl/private/example.com.keyができる。

証明書をhttpdで使う

先ほど用意した/etc/httpd.confport 443が入ったセクションを有効にして、

# rcctl reload httpd

その後、ブラウザでアクセスして確認。

証明書更新の自動化

acme-client(1)によると、

A daily cron(8) job can renew the certificates:
acme-client example.com && rcctl reload httpd

とのこと。daily cronは、/var/cron/tabs/root -> /etc/dailyを追うと、/etc/daily.localというのを作れば良さそうに見える。
…というのが、後からdaily(8)を見てわかった。

/etc/daily.local
acme-client example.com && rcctl reload httpd

更新されるとexit statusが0になって、httpdがreloadされるという仕掛けですね。
…で、動くと思う…(未確認)。

参考文献

やはりOpenBSDはman? 具体例もあり、充実している。

  1. Easy Secure Web Serving with OpenBSD’s acme-client and Let’s Encrypt…cronへの言及もあり、わかりやすいが、コマンドラインオプションが少なくとも今と違うような?

  2. Using Let's Encrypt on OpenBSD 6.1…比較的新しく、そのまま適用できそう

2
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?