してみるテストロゴ
Apache 2.4系でHTTP/2サーバを構築してみるテスト。

certbot(旧名:letsencrypt-auto)コマンドの使い方やオプション

[2016年12月13日版]

certbotコマンドは、Let's Encryptを利用して、サーバ証明書を取得する際に使うコマンドです。

ACMEエージェントと呼ばれるソフトウエアです。以前は、letsencrypt-autoと呼ばれていました。

 

対応OSがイマイチ少ないので、対応していないUnix系のOSの方は、dehydratedコマンドか、acme.shスクリプトをおすすめします。

こちらのほうがECDSA対応証明書が簡単に取れます。

インストール方法

配布はパッケージシステムか、Webからのダウンロード経由で行われています。以下のコマンドでインストールできます。

Cent OS7 / Read Hat Enterprise Linux 7

$ sudo yum install epel-release
$ sudo yum install certbot

 

Debian 8

$ sudo apt-get install python-certbot-apache -t jessie-backports

 

Ubuntu 16

$ sudo apt-get install python-letsencrypt-apache 

 

Gentoo

$ emerge -av app-crypt/certbot-apache

 

Arch Linux

$ sudo pacman -S certbot

 

Fedora 23+

$ sudo dnf install certbot

 

Free BSD

Portsの場合

# cd /usr/ports/security/py-certbot && make install clean

Packageの場合

# pkg install py27-certbot

Open BSD

Portsの場合

# cd /usr/ports/security/letsencrypt/client && make install clean

Packageの場合

# pkg_add letsencrypt

Mac OS

$ brew install certbot

 

Cent OS6 / Red Hat Enterprise Linux 6

$ sudo yum install epel-release

の後に、以下のその他Unix系と同じ操作をします。

その他Unix系(macOSなど)

# cd /usr/local
# mkdir certbot
# cd certbot
# curl -O https://dl.eff.org/certbot-auto
# chmod a+x certbot-auto
#  ./certbot-auto
Creating virtual environment...
Installing Python packages...
Installation succeeded. Requesting root privileges to run certbot...

この場合、PATHに/usr/local/certbotを追加してください。

たとえば、sh/bash系のシェルスクリプトなら、

# vi ~/.profile

として、適当な位置に以下の1行を追加します。

~/.profile
PATH=${PATH}:/usr/local/certbot

ヘルプの見方

# certbot --help

ヘルプは--helpオプションをつけて実行すると表示されます。(英語です。)

コマンドの使い方

certbotコマンドは、サブコマンドと呼ばれるオプションで、詳細な動作を決定します。

すべてのサブコマンドで共通して使えるオプションと、サブコマンド特有のオプションがあります。

# certbot [サブコマンド] [-t] [オプション] [-d ドメイン名(FQDN)] [-d  ドメイン名(FQDN)] ...

すべてのサブコマンドに共通して、以下のオプションが利用できます。

-t テキストメッセージが出ます。
-dドメイン名をFQDNで指定します。これは、複数指定することができます。
これによって、SAN(Subject Alternative Name)を使った証明書が発行されます。
ただし、ガラ携の一部は、この機能を持っていないため、サーバ証明書の確認でエラーとなる場合があります。
もちろん、SNI(Server Name Indication)として利用することもできます。

サブコマンド

サブコマンドは、以下の7つがあります。それぞれ使用できるオプションが異なります。

run(デフォルト) 証明書の取得して、このウェブサーバにインストールします。つまり、certonlyとinstallの両方を実行します。
certonly証明書の取得しますが、インストールはしません。認証モードで動作します。
install取得した証明書をインストールします。インストールモードで動作します。
revoke取得したサーバ証明書を失効させます。
rollback証明書のインストールによって変更したサーバの設定を戻します。
config_changes証明書のインストールによって変更したサーバの設定を見ます。
plugins利用可能なプラグインの情報を表示します。

サブコマンド:certonlyで利用できるオプション

--csr CSR_FILEOpenSSL等で生成した、DER形式のCSRファイルへのパス
--cert-path CERT_PATH --csrオプションを指定した場合に、証明書を保存するパス
--email 証明書を管理している人の電子メールアドレス。証明書の期限が近くなってくると、メールが来ます。
--rsa-key-sizeRSA暗号の鍵の長さ(ビット数)を指定します。デフォルトは2048です。
--serverACMEサーバを指定します。本番サーバとステージングサーバを切り替えることができます。
--staging --server https://acme-staging.api.letsencrypt.org/directoryと同じ。
--renew-by-defaultcronなどで、letsencrypt-autoコマンド実行中に、上書き確認のプロンプトが出ないようにします。
--rediretACMEプロトコルの認証チャレンジの際に、80番ポートに接続後、443番ポートへのリダイレクトを許可します。

サブコマンド:installで利用できるオプション

--cert-path CERT_PATH証明書を保存するパス
--key-path KEY_PATH秘密鍵をインストールするパス
em

サブコマンド:revokeで利用できるオプション

--cert-path CERT_PATH失効させる証明書のパス
--key-path KEY_PATH失効させる証明書の秘密鍵のパス

サブコマンド:rollbackで利用できるオプション

--checkpoints Ninstallサブコマンドで変更した設定を、N番目のチェックポイントまで、戻します。

サブコマンド:pluginsで利用できるオプション

--initプラグインを初期化します。
--prepareプラグインを初期化および準備します。
--authenticators認証モードで利用できるプラグインに限定します。
--installersインストールモードで利用できるプラグインに限定します。

実行例

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

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

 

プラグインの指定

-a プラグイン名, --authenticator プラグイン名認証モードで利用するプラグインを指定
-i プラグイン名, --installer プラグイン名インストールモードで利用するプラグインを指定
--configurator プラグイン名認証モードとインストールモードの両方で利用するプラグインを指定
--apacheapacheプラグインを指定。--configureator apacheと同じ。
--nginxnginxプラグインを指定。--configureator nginxと同じ。
--standalonestandaloneプラグインを指定。-a standaloneと同じ。
--manualmanualプラグインを指定。-a manualと同じ。
--webrootwebrootプラグインを指定。-a webrootと同じ。

webrootプラグインで利用できるオプション

-w WEBROOT_PATH,
--webroot-path WEBROOT_PATH
後続の-dオプションのドメインで稼働しているwebサーバのドキュメントルートのパスを指定します。
複数のWEBROOT_PATHに、複数の異なるドメイン名(FQDN)を指定することもできます。
(例):
-w /var/www/example -d example.com -d www.example.com -w /var/www/thing -d thing.net -d m.thing.net
--webroot-map { "FQDN":"WEBROOT_PATH"
[,"FQDN":"WEBROOT_PATH" ...]}
-wオプションと似ていますが、後続の-dオプションとの並び順によって、対応関係を決めるのではなく、明示的にドメイン名(FQDN)とドキュメントルート都の対応関係を記述します。
(例)
--webroot-map '{"example.com" : "/var/https/example.com/htdocs/","www.example.com" : "/var/https/www.example.com/htdocs/" }'

manualプラグインで利用できるオプション

--manual-test-mode テストモードで動作
--manual-public-ip-logging-ok 自動的にパブリックIPのログ記録を許可

standaloneプラグインで利用できるオプション

--standalone-supported-challenges STANDALONE_SUPPORTED_CHALLENGES 認証チャレンジの方法の順番を指定。認証チャレンジの方法は、tls-sni-01(SNI対応のHTTPS)と、http-01(通常の80番ポートのHTTP/1.1)。
(デフォルト値: tls-sni-01,http-01)
[実行例] >> Let's Encrypt(無償の証明書発行機関)から取得
[応用編] >> 自分でCSRを生成して、Let's Encryptをつかう場合

©Copyrights 2015-2023, non-standard programmer

このサイトは、あくまでも私の個人的体験を、綴ったものです。 軽く参考程度にご利用ください。