CertBotクイックlet's encrypt証明書のインストール

5028 ワード

いくつかの開発のため、ウェブサイトをhttpsに交換せざるを得なくて、現在無料のssl証明書はlet's encryptあります.
実践を経て、やっと証明書を正しくインストールして、ここに過程と出会った問題を記録して、便利に必要な友达です.
環境
私の環境はアリ雲ubuntu-16.04です.
ダウンロードツールcertbotツールのダウンロード
git clone https://github.com/certbot/certbot

ssl証明書の生成
このcertbotドキュメントの説明に従って操作します.
cd certbot
./letsencrypt-auto certonly --standalone --email [email protected] -d your.domain.com
your.domain.comをあなたのドメイン名に変更してください.
しかし、思い通りにはいかず、以下のエラーを報告しました.
Bootstrapping dependencies for Debian-based OSes... (you can skip this with --no-bootstrap)
Hit:1 http://mirrors.cloud.aliyuncs.com/ubuntu xenial InRelease
Hit:2 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-updates InRelease
Hit:3 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security InRelease
Reading package lists... Done                     
Reading package lists... Done
Building dependency tree       
Reading state information... Done
augeas-lenses is already the newest version (1.4.0-0ubuntu1).
ca-certificates is already the newest version (20160104ubuntu1).
gcc is already the newest version (4:5.3.1-1ubuntu1).
libaugeas0 is already the newest version (1.4.0-0ubuntu1).
libffi-dev is already the newest version (3.2.1-4).
python is already the newest version (2.7.11-1).
python-dev is already the newest version (2.7.11-1).
libssl-dev is already the newest version (1.0.2g-1ubuntu4.8).
openssl is already the newest version (1.0.2g-1ubuntu4.8).
python-virtualenv is already the newest version (15.0.1+ds-3ubuntu1).
virtualenv is already the newest version (15.0.1+ds-3ubuntu1).
0 upgraded, 0 newly installed, 0 to remove and 37 not upgraded.
Creating virtual environment...
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/virtualenv.py", line 2363, in 
    main()
  File "/usr/lib/python3/dist-packages/virtualenv.py", line 719, in main
    symlink=options.symlink)
  File "/usr/lib/python3/dist-packages/virtualenv.py", line 988, in create_environment
    download=download,
  File "/usr/lib/python3/dist-packages/virtualenv.py", line 918, in install_wheel
    call_subprocess(cmd, show_stdout=False, extra_env=env, stdin=SCRIPT)
  File "/usr/lib/python3/dist-packages/virtualenv.py", line 812, in call_subprocess
    % (cmd_desc, proc.returncode))
OSError: Command /root/.local/share/letsencrypt/bin/python2.7 - setuptools pkg_resources pip wheel failed with error code 2

検索でcertbotのissue#issuecomment-273014451が見つかりました
なぜなら、システムには複数のバージョンのpythonがインストールされているので、どのように削除しますか?ここの方法で解決しました.
解決方法:
apt-get purge python-virtualenv python3-virtualenv virtualenv
pip install virtualenv

次に、ssl証明書生成コマンドを再度実行します.
cd certbot
./letsencrypt-auto certonly --standalone --email [email protected] -d your.domain.com

ここで数分待つ必要があるかもしれませんが、似たような情報が表示されると、生成に成功します.
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/www.lanyueos.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/www.lanyueos.com/privkey.pem
   Your cert will expire on 2017-11-14. To obtain a new or tweaked
   version of this certificate in the future, simply run
   letsencrypt-auto again. To non-interactively renew *all* of your
   certificates, run "letsencrypt-auto renew"
 - 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:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

nginxの構成
nginxプロファイルのserverに次のコードを追加します.

listen 443 ssl;
listen [::]:443 ssl ipv6only=on;

ssl_certificate /etc/letsencrypt/live/your.domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your.domain.com/privkey.pem;
your.domain.comをあなたのドメイン名に変更してください.
nginxを再起動
service nginx start

起動に失敗した場合は、次のコマンドを実行してテストプロファイルを確認します.
nginx -t

サイトを開く:https://your.domain.comブラウザの緑のマークを見たら、設定成功おめでとうございます.
証明書の自動更新
新しいタスクcertbot-auto-renew-cronを作成することができます.これはcron計画で、この内容は2ヶ月おきの午前2:15に更新操作を実行することを意味します.
./certbot-auto renew --pre-hook "service nginx stop" --post-hook "service nginx start"
--pre-hookこのパラメータは、更新操作を実行する前にしなければならないことを示しています.私は--standaloneモードの証明書を持っているので、nginxサービスを停止し、ポートの占有を解除する必要があります.--post-hookこのパラメータは、更新操作が完了した後に行うことを示し、ここでnginxサービスの有効化を再開する
crontab certbot-auto-renew-cron