🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
https作用:传输数据更安全 网站:[https://certbot.eff.org/](https://certbot.eff.org/),选择 nginx,unbuntu版本 运行以下命令 ![](https://img.kancloud.cn/56/6a/566a88e52e7d19501d0aca59a6657813_1676x869.png) 最后: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 ~~~