CentOS + Nginx な構成のサーバーに Let’s Encrypt で SSL を設定する方法をご紹介します。
yum でインストールする方法もありますが Python の依存関係が面倒そうだったので、github から zip でダウンロードして使うことにしました。
cd /usr/local/
wget https://github.com/certbot/certbot/archive/master.zip
unzip master.zip
mv certbot-master certbot
cd certbot/
certbot-auto コマンドが実行できることを確認します。
$ ./certbot-auto --help
Usage: certbot-auto [OPTIONS]
A self-updating wrapper script for the Certbot ACME client. When run, updates
to both this script and certbot will be downloaded and installed. After
ensuring you have the latest versions installed, certbot will be invoked with
all arguments you have provided.
Help for certbot itself cannot be provided until it is installed.
--debug attempt experimental installation
-h, --help print this help
-n, --non-interactive, --noninteractive run without asking for user input
--no-bootstrap do not install OS dependencies
--no-self-upgrade do not download updates
--os-packages-only install OS dependencies and exit
--install-only install certbot, upgrade if needed, and exit
-v, --verbose provide more output
-q, --quiet provide only update/error output;
implies --non-interactive
All arguments are accepted and forwarded to the Certbot client when run.
以下のように certbot-auto コマンドを実行しします。
./certbot-auto certonly --standalone \\
-d example.com \\
-m [email protected] \\
--agree-tos \\
--non-interactive
ちなみに Nginx を起動中に ./certbot-auto certonly —standalone を実行すると失敗します。
Problem binding to port 80: Could not bind to IPv4 or IPv6.
IMPORTANT NOTES:
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
Nginx を停止して、
service nginx stop
再び ./certbot-auto certonly —standalone を実行すると、今度は成功しました。
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/codenote.net/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/codenote.net/privkey.pem
Your cert will expire on 2018-09-09. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again. To non-interactively renew *all* of your certificates, run
"certbot-auto renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
最後に、念のため ./certbot-auto certonly コマンドで取得した各ファイルを確認しておきます。
/etc/letsencrypt/
|-- accounts # アカウント情報
|-- archive # 取得した証明書ファイルがドメイン毎にディレクトリに保存される
| `-- example.com
| |-- cert1.pem
| |-- chain1.pem
| |-- fullchain1.pem
| `-- privkey1.pem
|-- csr
|-- keys
|-- live # 最新の証明書へのシンボリックリンクが作成される
| `-- example.com
| |-- README
| |-- cert.pem -> ../../archive/example.com/cert1.pem
| |-- chain.pem -> ../../archive/example.com/chain1.pem
| |-- fullchain.pem -> ../../archive/example.com/fullchain1.pem
| `-- privkey.pem -> ../../archive/example.com/privkey1.pem
|-- renewal
| `-- example.com.conf
`-- renewal-hooks
SSL 証明書を取得できたら、次は Nginx に SSL の設定を追加しないといけませんが、その方法は別の記事で説明します。
以上、Let’s Encrypt で SSL 証明書を取得した現場からお送りしました。