前言

SSL(Secure Sockets Layer 安全套接字协议)
TLS(Transport Layer Security 传输层安全)
SSL及其继任者TLS为网络通信提供安全及数据完整性的一种安全协议

现在全民https,使用http会被浏览器提示不安全……这就很尴尬了。

SSL免费证书其实还是很多的,不过需要注意到期时间,配置起来也比较麻烦,不适合新手。

本篇介绍一种超简单的设置方法,纯免费,虽然3个月有效期,但是 自动续期≈长期有效!

环境

域名: godaddy (godaddy.com)
VPS: BandwagonHOST (bwh8.net)
环境: LNMP一键安装包v1.5 (lnmp.org)
Blog: typecho (typecho.org)
SSL: Let'sEncrypt (letsencrypt.org)

注意:域名、vps并不影响本教程,可以随意选择,blog程序原则上也适用于其他的php程序,但因为本教程使用的是lnmp整合包中的脚本,所以需要环境为lnmp一键安装包

开整

前提:安装好lnmp-v1.5一键安装包,并配置好网站,使之可以正常http访问。

获取API

参照下表,获取域名所在供应商的API信息

服务商缩写所需API参数申请API地址
aliyunaliexport Ali_Key="123456"
export Ali_Secret="abcdef"
点击访问
awsawsexport AWS_ACCESS_KEY_ID=123456
export AWS_SECRET_ACCESS_KEY=abcdef
点击访问
cloudflarecfexport CF_Key="123456"
export CF_Email="abc@example.com"
点击访问
dnspod (cn大陆版)dpexport DP_Id="123456"
export DP_Key="abcdef"
点击访问
godaddygdexport GD_Key="123456"
export GD_Secret="abcdef"
点击访问
linodelinodeexport LINODE_API_KEY="123456"点击访问
namecomnamecomexport Namecom_Username="username"
export Namecom_Token="123456"
点击访问
namesilonamesiloexport Namesilo_Key="123456"点击访问

本文只列举了比较常用的几家,更多服务商信息及更详细设置方法详见:
https://github.com/acmesh-official/acme.sh/wiki/dnsapi

比如,我的域名在狗爹家,所以登录godaddy的地址申请API

按照刚才表格要求将所需API参数替换并记录下来

然后使用表格中的命令将参数导入到服务器中

[root@KsC7 ~]# export GD_Key="AQKojY7xevk_5wNz2Hq5TxhQcuD2DWn6Uw"
[root@KsC7 ~]# export GD_Secret="JH1FJ8wqG4ZraSYdvGSNPQ"

上面代码不要直接复制我的!需要自己申请自己的!并按表格中域名供应商要求规范导入!
上面代码不要直接复制我的!需要自己申请自己的!并按表格中域名供应商要求规范导入!
上面代码不要直接复制我的!需要自己申请自己的!并按表格中域名供应商要求规范导入!

运行脚本

1. 登录vps,输入lnmp dnsssl gd

PS: 其中gd为域名DNS服务商godaddy的简称,根据情况替换成自己的,常见其他服务商参见上面表格

2. 填入相应信息

按照介绍输入对应信息

等待提示"Let's Encrypt SSL Certificate create successfully." 表示成功,绿色字很醒目。

3. 使用https://www.example.com 尝试访问你的网站,可以访问即说明配置正确

其实到这里已经成功了,如果想仅使用https访问还需要做以下设置

设置80跳转443

1. 进入 typecho 后台->设置->基本->站点地址,改为https开头

2. 登录vps,修改nginx配置文件

PS: lnmp包中的nginx配置文件为/usr/local/nginx/conf/vhost/www.example.com.conf

找到包含listen 80;字段的server标签,server_name下面加入一行重写规则:

rewrite ^(.*) https://www.gaoqichen.com$1 permanent;

该规则意思是所有访问80端口(http协议)的请求都会跳转到https协议(443端口)上。

3. vps命令行输入命令nginx -t,检查配置文件语法

输入结果为下面内容时说明配置文件语法没有问题:

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

4. vps命令行输入命令nginx -s reload,优雅重启nginx服务

其他

1. 自动续期是如何实现的?

查看定时任务发现,定时运行acme的脚本而已。

[root@KsC7 ~]# crontab -l
# add by lnmp
16 0 * * * "/usr/local/acme.sh"/acme.sh --cron --home "/usr/local/acme.sh" > /dev/null 2>&1

其实申请和续签证书都是基于acme脚本实现的,在非lnmp环境中也是可以通过使用acme来实现的。

2. 如果需要手动更新证书,可以直接使用命令:

acme.sh --issue -d www.yourdomain.com --nginx

3. 关于“绿锁”

所谓“绿锁”就是浏览器地址栏,在https前面显示的一个图标,表示该页面及其所有连接都在使用https安全协议链接。所以如果通过设置可以https访问页面,但是仍然提示不安全的话,请检查是否有部分连接或图片或CDN使用的是http协议饮引用的。

使用Chrome内核浏览器,按F12,在安全选项卡里也可以看到自己的证书。嗯简单说就是这样了。

Enjoy it!

参考资料:
https://lnmp.org/faq/letsencrypt-wildcard-ssl.html
https://github.com/Neilpang/acme.sh

Last modification:February 20th, 2022 at 07:34 am
If you think my article is useful to you, please feel free to appreciate