【CentOS 8・7】Certbotのインストール方法【プラグイン対応】
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
スポンサーリンク