前言
上一篇文章中,我们通过使用Nginx Proxy Manager(简称NPM
)非常方便的解决了同一台服务器部署多个网站,并共享80
端口的问题。
本文我们继续处理SSL
证书的问题,也就是如下图所示,提示不安全的问题:
1. 解决思路
通常来说,要申请免费的SSL
证书,我们一般会用到Let's Encrypt
,用这个的人也最多。Let's Encrypt
支持单域名证书和DNS证书两种形式,而如果要申请泛域名证书(也就是可以用一个证书通用所有主域名相同的网站,而不用每个网站都申请一个证书),就只能使用DNS方式。
还有一个问题就是,Let's Encrypt
的证书有效期只有90
天,所以为了不每次到期后都手动续期,我们需要一个自动续期的机制,这通常是通过acme.sh
来实现的。
只要解决了这两个问题,虽然证书有效期依然只有90
天,但也等同于实现了免费申请永久泛域名证书的目的了。
然而,通过查询资料可以发现,解决上述两个问题的步骤还是很繁琐的,可以劝退很多人,而NPM
恰好集成了Let's Encrypt
和acme.sh
这两个工具,并提供了一个非常简洁的界面,让我们可以相对轻松的实现证书申请。
2. 参数要求
登录NPM
,打开SSL Certificates中的Add Let's Encrypt Certificate弹窗,启用Use a DNS Challenge,DNS Provider选择TencentCloud(根据你具体的情况选择,你可能是Aliyun或其它),我们可以看到如下界面:
参数不多,也很好理解,其中,
- Domain Names就是泛域名,也就是我们想要申请泛域名证书的域名,比如
*.ilaozhu.com
; - Email Address for Let's Encrypt就是我们用于申请
Let's Encrypt
证书的邮箱地址,因此,必须是有效邮箱; - 不难看出,大部分的工作
NPM
都帮我们做了,而我们要解决的核心问题,就是获取TENCENT_CLOUD_SECRET_ID
和TENCENT_CLOUD_SECRET_KEY
两个值了。
3. 获取ID
和KEY
这里涉及到腾讯云的账号权限问题,我们可以直接用主账号,给最大权限,然而这并不是一个安全的做法,而且腾讯云也不推荐这么做,因此,我们最好还是创建一个子账号,并授予必要的权限。
3.1 新建权限策略
首先,登录 腾讯云,进入访问管理 -> 策略 页面,然后新建自定义策略。
然后,选择按策略语法创建 -> 空白模板,并填入如下内容:
{
"version": "2.0",
"statement": [
{
"action": [
"dnspod:DescribeRecordFilterList",
"dnspod:DescribeRecordList",
"dnspod:CreateRecord",
"dnspod:DeleteRecord"
],
"effect": "allow",
"resource": [
"*"
]
}
]
}
效果如下图所示:
最后,完成保存即可。
3.2 新建子账号
首先,登录 腾讯云,进入访问管理 -> 用户 -> 用户列表 页面,然后新建用户。
然后,选择快速创建,填写用户名,访问方式选择编程访问,用户权限选择上一步创建的权限策略。
最后,点击创建用户即可完成用户创建,并关联上相应的权限。
3.3 获取Id
和Key
用户创建完成后就会跳转到如下的成功新建用户页面,其中,SecretId
和SecretKey
就是我们要获取的TENCENT_CLOUD_SECRET_ID
和TENCENT_CLOUD_SECRET_KEY
了。
4. 申请证书
接下来就简单了,获取到SecretId
和SecretKey
之后,就可以回到NPM
管理界面完善配置参数,并申请证书了,配置后的效果如下图所示:
值得注意的是,这里域名包括了ilaozhu.com
和*.ilaozhu.com
,这样证书就能对主域名和所有二级域名都生效了。该过程可能会有点慢,也可能会失败,多试几次就好了。申请成功后的效果如下图所示:
5. 添加证书
接下来就可以给各个网站都添加上证书了。以proxy.ilaozhu.com
为例,如下图所示:
选择刚申请的证书,选项也都是提升安全性相关的,全部开启即可,最后点击保存。同理也给ilaozhu.com
设置相同的配置,最终效果如下:
再通过浏览器访问一下https://proxy.ilaozhu.com
试试看,“不安全”的标记消失了。
6. 修改默认页
还剩最后一步了,不知大家是否记得,在上一篇文章中,我们将默认页配置成了跳转到http://ilaozhu.com
,现在我们支持了HTTPS
,因此需要略作修改,如下图所示:
结语
好了,SSL
证书的问题解决了,现在可以通过https
协议来保护我们的网站了。怎么样,整个过程除了获取Id
和Key
麻烦一点,其他部分是不是很简单?
到这里,整个博客网站的搭建也差不多完成了,可以开启漫长的创作之旅了。可能唯一美中不足的就是网站有点丑,不过这个见仁见智,下一篇文章,我们再简单优化一下网站配置,让其变得好看一点。
评论0
暂时没有评论