最近在玩小程序,调用自己的 API 的时候需要支持 HTTPS。在网上试了一些方法,这里分享一个简单实用的供大家使用。
证书提供商有很多,这里我使用的是 Let’s Encrypt 家的免费 SSL 证书。官方推荐使用 Certbot 工具生成,本文教程也基于此。
1 Nginx 安装与配置
为了能描述的更清楚一些,教程从 Nginx 的使用开始。
注意:当前系统为 Ubuntu 16.04
安装 Nginx
备份配置文件
编辑配置文件 内容为
保存后启动 Nginx
浏览器访问 ,看到如下内容
Nginx 配置成功。
注意:Nginx 中的域名配置前记得去域名服务商添加一条 A 记录,将域名解析到目标 IP
2 证书生成与配置
更新源后安装 ,这个主要是提供一些便携工具,比如添加软件源工具,一行命令就能添加源,不用自己手动去编辑相应的配置文件。
添加 Certbot 的源并安装
生成证书
将上面的 换成你的域名即可。
生成过程中会让你填写必要的信息,输入你的邮箱
同意协议
是否愿意 Let's Encrypt 给你的邮箱推送一些消息,这个你自己随意选择
选择是否自动修改 Nginx 的一些配置,以支持 HTTPS,1 为否,2 为是。不熟悉相关配置的可以选择 2
最后如果看到类似下面的输出,则说明证书已经生成并配置成功
此时,Nginx 的配置文件内容已经被修改成这样了
我们访问 ,会发现域名被重定向到了 HTTPS,并且能看到如下内容
说明网站已经成功支持 HTTPS。如果未生效,试着重启一下 Nginx,若还是不行,参考第 3 节的内容。
如果你不想 Certbot 自动给你配置,你可以使用 certonly 选项,类似这样
3 可能会碰到的问题
3.1 Nginx 安装并配置后无法访问
重启一下 Nginx
如果还不行,可能是 80 端口未开放,打开就好。
3.2 Another instance of Certbot is already running
安装过程中,不小心中断,再次执行下面的命令
可能会出现这样的问题
执行如下命令找到 文件
将其删除
然后重试即可。
3.3 证书生成并且配置成功,访问域名超时
这个可能是 HTTPS 的 443 端口被禁引起的,打开就可以了。
4 自动延长免费期限
Let's Encrypt 的证书有效期只有 90 天,到期后我们需要重新生成。
不过我们不需要手动去生成,上面的生成命令在生成证书后,已经为我们配置了定时任务。查看 ,主要内容如下
表面上每隔 12 个小时会重建一次证书,事实上只有当证书的有效期只有 30 天的时候,重建才真正生效。
这里我们只要确认下重建命令没有问题就可以了,执行一下命令
如果执行过程中没有报错的话,也就没有什么问题了。
5 SSL 状态检测
我们可以使用 MySSL 检测证书详细信息、证书链详细信息、当前支持协议、加密套件详细信息等,地址如下
访问后,输入你的域名即可测试。
这里我们可以看到支持的 SSL 版本,类似这样
有些应用场景下对 SSL 版本有要求,比如小程序的 API 等,我们就可以从这确定我们的 HTTPS 是否满足需求。当然,还有其它的一些信息,有需要的时候查看就好。
除了 MySSL 外,下面的两个在线工具也比较常用
6 参考
领取专属 10元无门槛券
私享最新 技术干货