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_FILE OpenSSL等で生成した、DER形式のCSRファイルへのパス
--cert-path CERT_PATH
--csrオプションを指定した場合に、証明書を保存するパス
--email
証明書を管理している人の電子メールアドレス。証明書の期限が近くなってくると、メールが来ます。
--rsa-key-size RSA暗号の鍵の長さ(ビット数)を指定します。デフォルトは2048です。
--server ACMEサーバを指定します。本番サーバとステージングサーバを切り替えることができます。
--staging
--server https://acme-staging.api.letsencrypt.org/directoryと同じ。
--renew-by-default cronなどで、letsencrypt-autoコマンド実行中に、上書き確認のプロンプトが出ないようにします。
--rediret ACMEプロトコルの認証チャレンジの際に、80番ポートに接続後、443番ポートへのリダイレクトを許可します。
サブコマンド:installで利用できるオプション
--cert-path CERT_PATH 証明書を保存するパス
tr>
--key-path KEY_PATH 秘密鍵をインストールするパス
tr>
em
サブコマンド:revokeで利用できるオプション
--cert-path CERT_PATH 失効させる証明書のパス
tr>
--key-path KEY_PATH 失効させる証明書の秘密鍵のパス
tr>
サブコマンド:rollbackで利用できるオプション
--checkpoints N installサブコマンドで変更した設定を、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 プラグイン名 認証モードで利用するプラグインを指定
tr>
-i プラグイン名, --installer プラグイン名 インストールモードで利用するプラグインを指定
tr>
--configurator プラグイン名 認証モードとインストールモードの両方で利用するプラグインを指定
tr>
--apache apacheプラグインを指定。--configureator apacheと同じ。
tr>
--nginx nginxプラグインを指定。--configureator nginxと同じ。
tr>
--standalone standaloneプラグインを指定。-a standaloneと同じ。
tr>
--manual manualプラグインを指定。-a manualと同じ。
tr>
--webroot webrootプラグインを指定。-a webrootと同じ。
tr>
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)