【CentOS 8・7】Certbotのインストール方法【プラグイン対応】

ノートPCとダイヤルロック

Certbotは、無料の証明書発行サービスのLet’s Encryptを利用する際に使われる代表的なツールです。

CentOS 8でCertbotを利用するには、一手間加える必要があったので、手順を残しておきます。

(もちろん、CentOS 7でも使える手法です)

Certbotとは?

Certbotとは、SSL/TLSなどで用いられる証明書を自動で取得するためのツールです。

これを使用すれば、自動で定期的に証明書の発行/更新ができるので、証明書管理の負荷を下げることができます。

CertbotはPythonで実装されており、ACME(Automatic Certificate Management Environment)というプロトコルを利用して、サーバ証明書を取得するためのリクエストや認証を行います。

インストール方法

CentOS 7では、EPELから簡単にインストールすることができます。新しいバージョンを入れる必要がなければ、yumコマンドからインストールするほうがはるかに楽です。

問題はCentOS 8の場合です。2019年11月現在では、CentOS 8のEPELにはCertbotが用意されていないので、Githubからソースコードをクローンしてインストールする必要があります。

以下、インストールの方法を紹介します。

必要パッケージのインストール

まず、インストールや動作に必要なパッケージをインストールします。

python3-virtualenvは必須ではありませんが、今回はCertbot用に仮想環境を作ってインストールします。

$ yum install python3 python3-virtualenv git

ソースコードのダウンロード

CertbotのGitHubから、ソースコードをダウンロードします。

#ソースコード置き場に移動(お好みのディレクトリでOK)
$ cd /usr/local/src/
$ git clone https://github.com/certbot/certbot.git

 

リポジトリの状態を最新のリリースまで戻します。

#最新リリースのタグを確認
$ git describe
v0.40.1-31-g4f3010ef3

#最新のリリース時点をチェックアウト
$ git checkout refs/tags/v0.40.1

GitHubのreleasesからソースコードをダウンロードすることも可能ですが、こちらの方法だとコマンド2発で常に最新のリリースを取得できるので楽です。

Certbot用仮想環境の準備

Pythonには、ライブラリやPython本体などの環境構成を、互いに独立して複数管理することができる、仮想環境という機能が用意されています。

仮想環境を使用しなくてもCertbotを動作させることは可能ですが、今回はCertbotのスクリプト生成と実行専用の環境を作りたいと思います。

#仮想環境を作りたいディレクトリの親ディレクトリに移動
$ cd /opt

#仮想環境の作成 virtualenv <仮想環境の名前>
$ virtualenv certbot-env

#作成した仮想環境へ切り替える
#ターミナルの行先頭に"(環境名)"が出れば成功
$ source certbot-env/bin/activate
(certbot-env) [root@centos8 opt]$

Certbotのインストール

Certbotのインストールは、Pythonのモジュールインストール用によく使われる、setup.pyファイルを実行することで行います。

$ cd /usr/local/src/certbot
$ python setup.py install

...中略...

Finished processing dependencies for certbot==0.40.1

Certbot用プラグインのインストール(オプション)

先ほどクローンしてきたCertbotのソースコードのフォルダには、プラグイン(主にドメイン認証用)のソースコードも同梱されているので必要に応じてインストールします。

$ ls -al
#一部抜粋
合計 376
certbot-ci
certbot-compatibility-test
certbot-dns-cloudflare
certbot-dns-cloudxns
certbot-dns-digitalocean
certbot-dns-dnsimple
certbot-dns-dnsmadeeasy
certbot-dns-gehirn
certbot-dns-google
certbot-dns-linode
certbot-dns-luadns
certbot-dns-nsone
certbot-dns-ovh
certbot-dns-rfc2136
certbot-dns-route53
certbot-dns-sakuracloud
certbot-nginx

ここでは、例として「さくらのクラウド」のDNSに対してdns-01認証を自動で実行するためのプラグインである、certbot-dns-sakuracloudをインストールしてみます。

ちなみに、dns-01認証自動化プラグインは様々なDNSサービスに対応したものがあるので、ワイルドカード証明書の取得を自動化したい場合などにはぜひ使ってみてください。

#インストールしたいプラグインのディレクトリに移動
$ cd certbot-dns-sakuracloud

$ python setup.py install

インストールの確認

先ほど仮想環境を作ったディレクトリのbin配下に、Certbot起動用のPythonスクリプトが作成されているので、確認します。

$ cd /opt/certbot-env/bin/
$ ls
activate      activate.fish     certbot     distro        easy_install-3.6  jws      pasteurize  pip3    python         python3    tldextract
activate.csh  activate_this.py  chardetect  easy_install  futurize          lexicon  pip         pip3.6  python-config  python3.6  wheel

#正常にバージョン番号が表示されていれば、インストールは成功
$ ./certbot --version
certbot 0.40.1

#プラグインの確認(プラグインをインストールした場合のみ)
./certbot -t plugins
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#正常にインストールされている
* dns-sakuracloud
Description: Obtain certificates using a DNS TXT record (if you are using Sakura
Cloud for DNS).
Interfaces: IAuthenticator, IPlugin
Entry point: dns-sakuracloud =
certbot_dns_sakuracloud.dns_sakuracloud:Authenticator

* standalone
Description: Spin up a temporary webserver
Interfaces: IAuthenticator, IPlugin
Entry point: standalone = certbot.plugins.standalone:Authenticator

* webroot
Description: Place files in webroot directory
Interfaces: IAuthenticator, IPlugin
Entry point: webroot = certbot.plugins.webroot:Authenticator

 

インストールの確認が終了したら、仮想環境から離脱します。

(certbot-env) [root@centos8 bin]$ deactivate
[root@centos8 bin]$

 

Certbotのインストール方法は以上です。お疲れ様でした。

Certbotを便利に使う

任意の場所から起動する

certbotをPATHの通っているディレクトリに配置すれば、どこからでもCertbotを起動することができます。

$ cp certbot /usr/local/bin/

certbot-auto を使用する

クローンしたソースコードの中に、それらしきスクリプトが同梱されていたので、コピーして使えるかもしれません。

(未検証ですが…)

$ ls /usr/local/src/certbot | grep certbot-auto
certbot-auto

あわせて読みたい

コメントを残す

質問・感想などお気軽にどうぞ。
*が付いている項目は入力必須です。メールアドレス以外の項目が公開されます。
スパム防止のため、コメント反映まで少々時間がかかります。