前言
https的普及,还有ca证书有免费的申请,让笔者兴起了给服务器增加https协议 学习与实现 配置https
开始
Let’s Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由Mozilla、Cisco、Akamai、IdenTrust、EFF等组织人员发起,主要的目的也是为了推进网站从HTTP向HTTPS过度的进程,目前已经有越来越多的商家加入和赞助支持。 目前,默认的免费证书是90天,不过官方有相对应的证书生成客户端。只需要相应配置,即可做到证书一直有效 通过cerbot脚本自动生产安装证书,这里的例子是 阿里云上centos7.4 nginx服务器配置的https
安装cerbot与服务器配置 (参考地址)
这里用virtualenv的方式安装
- 安装虚拟环境软件包(针对于Python2.7)
sudo yum install python-virtualenv
- 创建虚拟环境
sudo virtualenv /usr/local/python-certbot
- 进入虚拟环境
source /usr/local/python-certbot/bin/activate
- 更新pip
pip install --upgrade pip
- 安装cerbot
pip install certbot
- 安装 cerbot nginx 插件(如果使用其他server可安装对应插件)
pip install certbot-nginx
- 已有nginx服务器下,只需要一键
sudo certbot --nginx
, 脚本会自动生成证书与修改nginx 配置
至此,正常流程下,对应的 https://域名 可以访问到服务了
问题流程
安装问题 参考教程中给出两个常见的安装问题
- python-urllib3安装失败
- pyOpenSSL错误
笔者在实践的过程中,也遇到了pyOpenSSL版本问题与其他依赖版本问题,网上参考了一些资料都说,跟着提示走,有什么更新就更新就可以了
pip update xxxxx
其中可能会遇到无法更新的问题,我是通过yum erase pyOpenSSL 重新下载才完成(环境依赖的问题错误可能会比较多,不同服务器的问题也不太一样)
端口问题 cerbot –nginx配置好了后,访问地址,发现无法访问,可能以下指令排除下问题
- 查看nginx是否监听了443端口服务:
netstat -ntl
, 如果有可以看到443端口对应有nginx服务器 - 查看防火墙是否开放443端口:
firewall-cmd --list-ports
, 查看443/tcp 是否存在 - (重要)阿里云服务器安全策略组是否开放443端口:需要登录到控制台里,安全策略组,添加对应规则443/443端口
可能需要用到的相关指令
nginx -t # 测试nginx配置问题
nginx -s reload # 重启nginx服务器
nginx -s stop # 关闭nginx服务器