Certbotのセットアップは、こちらのCertbotの公式ページに説明があります。
ただAmazonLinux2はこの手順ではできませんので、以下ではAmazonLinux2で動作するように手順をカスタマイズしています。
(a)前提パッケージのインストール
pythonのvirtualenvというツールを内部で利用しているようなのでそれをインストールします。
sudo yum -y install python-virtualenv
(b)Certbotのインストール
今回は、/usr/local/binにインストールします。
$ sudo wget --directory-prefix=/usr/local/bin https://dl.eff.org/certbot-auto
$ sudo chmod a+x /usr/local/bin/certbot-auto
(c)Certbotのインストレーション実行
$ sudo /usr/local/bin/certbot-auto --no-bootstrap --install-only
Upgrading certbot-auto 0.29.1 to 0.30.0...
Replacing certbot-auto...
Creating virtual environment...
Installing Python packages...
Installation succeeded.
Certbot is installed.
- オプションの意味
- "--no-bootstrap" : CertbotはAmazonLinux2を検出してくれないので、検出を無効化するためこのオプションを指定します。
- "--install-only" : 必要なパッケージのインストールのみ実行するオプションです。
準備が整ったらサーバ証明書を取得します。Certbotはengixやapacheなど証明書を利用したいwebソフトと連携させることができますが、今回は複数のサーバに配布するためマニュアルモードで証明書を取得します。
(a)Certbotの実行
証明書取得のためコマンドを実行します。モードはマニュアルで、ドメイン使用権の認証方法としてDNSを利用(DNS サーバのTXT レコードに指定されたキーを設定)しています。*3コマンドの詳細は、"certbot-auto --help all"で参照できます。
$ sudo /usr/local/bin/certbot-auto --no-bootstrap certonly \
--manual \
--manual-public-ip-logging-ok \
--domains '*.poc.nopipi.work' \
--email admin@poc.nopipi.work \
--agree-tos;
- オプションの意味
- certonly :証明書の取得の取得のみ実施
- --manual: ドメイン使用権者であることの認証を手動で行うモード
- --manual-public-ip-logging-ok: 認証局でのパブリックIPロギングの自動許可
- --domains '*.poc.nopipi.work': 証明書を取得したいドメインの指定。'*.'とするとワイルドカード証明書になる
- --email : 証明書の期限切れ等をお知らせするメールの宛先を指定
- --agree-tos: ライセンス条項の同意
(b)DNSレコードの登録
上記(a)を実行すると、下記のようにpoc.nopipi.workのドメインに、_acme-challengeという名前のTXTレコードで、"nmdZ・・・"という値を設定するよう指定がありますので、指示に従ってDNSサーバにTXTレコードを登録します。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.poc.nopipi.work with the following value:
nmdZGYXDo6J0DVtfKMCHwhCaXdjtl0eJuYGN4J0XMQk
Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
今回poc.nopipi.workはRoute53を利用しているので、Route53でレコード登録します。
別コンソールでdigコマンドでレコードが確認できたら、後続に進み証明書を発行します。
$ dig TXT _acme-challenge.poc.nopipi.work
; <<>> DiG 9.8.3-P1 <<>> TXT _acme-challenge.poc.nopipi.work
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19405
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 3
;; QUESTION SECTION:
;_acme-challenge.poc.nopipi.work. IN TXT
;; ANSWER SECTION:
_acme-challenge.poc.nopipi.work. 60 IN TXT "nmdZGYXDo6J0DVtfKMCHwhCaXdjtl0eJuYGN4J0XMQk"
<以下略>
(c)作成された証明書の確認
"/etc/letsencrypt/live/ドメイン名" のディレクトリ配下にファイルが作成されますので、確認してください。
sudo ls /etc/letsencrypt/live/poc.nopipi.work
cert.pem chain.pem fullchain.pem privkey.pem README
ファイル名 |
項目 |
cert.pem |
サーバ証明書 |
privkey.pem |
秘密鍵 |
chain.pem |
中間証明書 |
fullchain.pem |
証明書と中間証明書を連結したファイル |