Tech

acme.shを使用してLet’s Encryptの無料SSL/TLS証明書を構築/運用する

無料のSSL/TLS証明書を運用したい!
けどPythonを入れたりする必要があるCertbotを入れるのはちょっと・・・
という方向けです。

Table of Contents

概要

acme.shを使ったLet's Encryptの運用方法です。
acme.shとは、シェルスクリプト実装の Let's Encryptクライアントツールです。
Amazon Linuxや古いOSだとPythonの依存関係でCertbotが動かなくなる場合があるのでそれを回避出来ないか?という方にハマるかと。

acme.shのaws_dnsを使用する構成なので、使用するドメインはRoute53で管理している必要があります。
しかし、一度設定するとAWSとLet's Encryptがなくならない限りは自動で更新され続けます。

参考

手順

1.acme.shインストール

(gitがある場合)

git clone https://github.com/Neilpang/acme.sh.git
cd ./acme.sh
./acme.sh --install

(gitない場合)

curl https://get.acme.sh | sh

または

wget -O -  https://get.acme.sh | sh

ここでエラーが出る場合は
curlの更新など、エラー内容に従って対処してください。

yum update -y nss curl libcurl

2.Route53 IAMユーザ作成

DDNSを構築したときと同じロールを使えますので、以下のページを参考にしてIAMユーザを作成してください。

取得したAWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEYをexportする。
このへんも勝手にacme.shでconfigファイルに保存してくれる。

export AWS_ACCESS_KEY_ID='XXXXXXXXXXXXXXXXXXXXX'
export AWS_SECRET_ACCESS_KEY='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

3.issue(発行)

ワイルドカードの証明書を発行する際のコマンドです。
ここでのポイントは、ネイキッドドメインも含むこと
次のように、example.netと*.example.netの両方を含んで発行することで、ネイキッドドメインのときもこの証明書を使うことができます。

./acme.sh --issue -d example.net -d '*.example.net' --dns dns_aws

4.証明書のinstall

インストールコマンド

./acme.sh --install-cert -d example.net -d '*.example.net' \
--ca-file /etc/pki/tls/certs/example_net.bundle.crt \
--cert-file /etc/pki/tls/certs/example_net.crt \
--key-file /etc/pki/tls/certs/example_net.key \
--reloadcmd "service httpd graceful"

5.WEBサーバのconfig書き換え

インストールコマンドの指定に合わせて、以下の設定をApacheのconfigファイルに書き込む。
nginx使ってる場合は適宜書き換えてください。acme.sh実行時のコマンドは変わりません。

SSLCertificateFile    /etc/pki/tls/certs/example_net.crt
SSLCertificateKeyFile /etc/pki/tls/certs/example_net.key
SSLCACertificateFile  /etc/pki/tls/certs/example_net.bundle.crt

おわりに

acme.shはインストールしたときに自動でcronにジョブが書き込まれてます。
証明書の一覧やその設定が保存されていて、更新すべき証明書があれば自動で更新処理が行われます。

ただ、Let's Encryptは証明書期限が90日で、万が一エラーが発生して自動更新されないと悲しいことになってしまうので、
更新されているかどうかを監視する仕組みを適切に設置しましょう

AWS Lambdaを使ってLet's Encryptで運用しているSSL/TLS証明書を監視する仕組みを構築した際のログを次で書きました。

以上です。
この記事が誰かの役に立てばいいなと思います。

コメントを残す

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

x  Powerful Protection for WordPress, from Shield Security
このサイトは
Shield Security によって保護されています →