Linux やプログラミングについて書きます。

Amazon Linux で certbot(letsencrypt) を使って SSL 証明書を取得する


letsencrypt のクライアントが certbot に改名したようです
Amazon Linux 上で certbot-auto(letsencrypt-auto) を使って SSL 証明書を取得する手順を検証しました。


  • certbot-auto(letsencrypt-auto) 0.6.0
  • Amazon Linux 2016.03
    • amzn-ami-hvm-2016.03.1.x86_64-gp2 (ami-29160d47)
  • Nginx 1.8.1

コマンドはすべて ec2-user で実行しました。


のように pip と virtualenv のバージョンを上げたらうまくいきました。

pip と virtualenv のバージョンを上げる

sudo easy_install pip
sudo pip install --upgrade pip

pip をアップグレードすると、/usr/local/bin/pip に最新版の pip がインストールされたので、

sudo /usr/local/bin/pip install --upgrade virtualenv

letsencrypt 環境を作成

virtualenv で letsencrypt 環境を作成します。

mkdir -p ~/.local/share
virtualenv -p /usr/bin/python27 ~/.local/share/letsencrypt
. ~/.local/share/letsencrypt/bin/activate

certbot-auto を実行

例では Nginx を使っていますが、Apache や certbot の Standalone Web サーバを使いたい場合は適宜変更してください。
Nginx や Apache を使う場合は予め起動しておいてください。

curl -s -L -O
chmod +x ./certbot-auto
./certbot-auto certonly --webroot -w /usr/share/nginx/html -d your.domain --agree-tos -m your@email.address --debug


yum install の出力

Checking for new version...
Creating virtual environment...
Installing Python packages...
Installation succeeded.
Requesting root privileges to run certbot...
   sudo CERTBOT_AUTO=./certbot-auto /home/ec2-user/.local/share/letsencrypt/bin/letsencrypt certonly --webroot -w /usr/share/nginx/html -d your.domain --agree-tos -m your@email.address --debug
Version: 1.1-20080819
Version: 1.1-20080819

 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/your.domain/fullchain.pem. Your
   cert will expire on 2016-08-14. To obtain a new version of the
   certificate in the future, simply run Certbot again.
 - If you lose your account credentials, you can recover through
   e-mails sent to your@email.address.
 - 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.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:
   Donating to EFF:          


以下のコマンドでできるようなので定期的に実行して、Web サーバを reload するようにしておくと自動更新できると思います。

./certbot-auto renew --webroot -w /usr/share/nginx/html --force-renew --debug
Checking for new version...
Requesting root privileges to run certbot...
   sudo CERTBOT_AUTO=./certbot-auto /home/ec2-user/.local/share/letsencrypt/bin/letsencrypt renew --webroot -w /usr/share/nginx/html --force-renew --debug

Processing /etc/letsencrypt/renewal/your.domain.conf

new certificate deployed without reload, fullchain is

Congratulations, all renewals succeeded. The following certs have been renewed:
  /etc/letsencrypt/live/your.domain/fullchain.pem (success)