前言
之前做过一个人脸登录的demo,本来想部署到线上的,结果发现需要https连接才可以调用浏览器的摄像头,在阿里云上一看,竟然需要4000多蚊一年,立马劝退了哈哈哈。这时候主管让我不要慌,给我推荐了acme.sh,说让我回去研究一下,可以免费申请证书。
acme.sh介绍
- GitHub地址 github.com/acmesh-offi…
acme.sh是一个基于Shell脚本的Let's Encrypt证书申请和管理工具,它可以用来自动化证书的生成、更新和安装。
具体操作
1.安装acme.sh
curl https://get.acme.sh | sh
2.注册账号
如果之前已经注册过Let's Encrypt账号,并且希望在acme.sh中使用该账号,可以通过在--register-account参数后添加--accountemail选项来指定该账号的电子邮件地址,例如:
acme.sh --register-account --accountemail my@example.com
3.设置阿里云的API Key和Secret
因为使用的是阿里云的DNS API,所以需要设置阿里云的API Key和Secret。如果需要使用其他DNS服务商的API,可以查看acme.sh的文档进行配置。
- 登录阿里云控制台,进入AccessKey管理页面:usercenter.console.aliyun.com/#/manage/ak…
- 设置API Key和Secret,执行以下命令
export Ali_Key="AccessKey ID"
export Ali_Secret="AccessKey Secret"
4.申请证书
acme.sh --issue -d example.com -d www.example.com --dns dns_ali
5.安装证书
- 先找到私钥和证书的位置,默认会在
/root/.acme.sh/example.com/文件夹下,可是我的就没有,然后我在example.com_ecc文件夹中找到了,所以就把example.com.key和example.com.fullchain.cercopy到/root/.acme.sh/example.com/目录下
- 找到你服务器上nginx目录,我的是存放在
/usr/local/nginx - 执行一下命令,记得要把
example.com替换成你的域名
acme.sh --install-cert -d example.com \
--key-file /usr/local/nginx/conf/example.com.key \
--fullchain-file /usr/local/nginx/conf/example.com.fullchain.cer \
--reloadcmd "/usr/local/nginx/sbin/nginx -s reload"
5.Nginx中启用HTTPS
到这步已经成功95%啦
打开nginx.conf文件,如果你想别人直接访问example.com重定向到https://example.com,就像我这样配置,改完保存并关闭文件,然后重新启动Nginx服务
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /usr/local/nginx/conf/example.com.fullchain.cer;
ssl_certificate_key /usr/local/nginx/conf/example.com.key;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
root /var/www/html;
index index.html;
}
}
这样子你的网站就建立起https连接啦,可以立马打开example.com或https://example.com试试啦,又省了几千蚊哈哈哈
END
- 希望这篇文章可以帮助到有需要的小伙伴们,有问题可以评论或私信我呀🤞🤞