https作用:傳輸數據更安全
網站:[https://certbot.eff.org/](https://certbot.eff.org/),選擇 nginx,unbuntu版本
運行以下命令

最后:certbot --nginx
------
centos7 + nginx開啟
CentOS7下使用Certbot+Nginx搭建Https環境
Let's Encrypt是一個為網站提供免費的SSL/TLS證書的機構。官方推薦使用Certbot工具進行簽發。Certbot可自動簽發Let's Encrypt證書,但證書有效期只有三個月,可以通過配置定時任務進行自動續期,以此實現永久生效的https環境。
本文使用Certbot+Nginx進行單域名和泛域名的https環境搭建。
單域名證書:只能保護一個域名,可以是頂級域名也可以是二級域名
泛域名證書:也叫通配符證書,可以保護一個域名及該域名下所有二級域名,不限制下級域名數量
```
1. 安裝Certbot
yum install certbot python2-certbot-nginx
```
2. 安裝單域名證書
2.1 自動配置nginx
運行如下命令會自動下載證書并配置nginx。未測試
certbot --nginx
2.2 手動配置nginx
運行如下命令會自動下載證書但需要自己配置nginx。已測試
生成證書并下載
certbot certonly --nginx
若nginx未安裝在默認路徑(/etc/nginx or /usr/local/etc/nginx)下需自己指定nginx路徑,到conf目錄
certbot certonly --nginx --nginx-server-root=/root/nginx/conf
配置nginx
重啟nginx
若此前nginx已配置https,直接使用nginx -s reload即可
若此前nginx未配置https,需要將nginx進程kill掉,然后使用nginc -c 配置文件路徑進行啟動
此時用已配置的域名進行https訪問正常
3. 安裝泛域名證書
按照如下步驟生成泛域名證書。已測試
使用泛域名生成證書。
將*.test.com替換為自己的泛域名即可
certbot certonly --preferred-challenges dns --manual -d *.test.com --server https://acme-v02.api.letsencrypt.org/directory
查看驗證信息。先不要回車
在這里插入圖片描述
添加域名解析,以阿里云為例
驗證解析成功
回到使用泛域名生成證書的界面,回車,等待完成
配置nginx
重啟nginx
若此前nginx已配置https,直接使用nginx -s reload即可
若此前nginx未配置https,需要將nginx進程kill掉,然后使用nginc -c 配置文件路徑進行啟動
此時使用滿足泛域名條件的域名進行https訪問均正常。
4. 續期
配置定時任務進行續期。未測試
echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
--------
如果遇到報錯
~~~
[root@AY1112010842182acadbe conf.d]# certbot
Traceback (most recent call last):
File "/usr/bin/certbot", line 9, in <module>
load_entry_point('certbot==0.36.0', 'console_scripts', 'certbot')()
File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 570, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2687, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2341, in load
return self.resolve()
File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2347, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/usr/lib/python2.7/site-packages/certbot/main.py", line 17, in <module>
from certbot import account
File "/usr/lib/python2.7/site-packages/certbot/account.py", line 17, in <module>
from acme import messages
File "/usr/lib/python2.7/site-packages/acme/messages.py", line 11, in <module>
from acme import challenges
File "/usr/lib/python2.7/site-packages/acme/challenges.py", line 12, in <module>
import requests
File "/usr/lib/python2.7/site-packages/requests/__init__.py", line 58, in <module>
from . import utils
File "/usr/lib/python2.7/site-packages/requests/utils.py", line 32, in <module>
from .exceptions import InvalidURL
File "/usr/lib/python2.7/site-packages/requests/exceptions.py", line 10, in <module>
from .packages.urllib3.exceptions import HTTPError as BaseHTTPError
File "/usr/lib/python2.7/site-packages/requests/packages/__init__.py", line 95, in load_module
raise ImportError("No module named '%s'" % (name,))
ImportError: No module named 'requests.packages.urllib3'
~~~
執行下面的命令解決上面的問題:
~~~
ImportError: No module named 'request-packages.urllib3'
pip uninstall urllib3
yum install python-urllib3 -y
pip uninstall requests
yum remove python-requests
yum install python-requests -y
yum install certbot -y
yum install python2-certbot-nginx -y
~~~