为你的Nginx配置免费SSL证书
一般配置https方法
一般当你申请或购买了ssl证书后,都会提供给你cer
和key
后缀的文件,将文件上传到nginx服务器上,然后修改nginx配置文件,重启nginx即可生效,一个常见的ssl配置如下:
1 |
|
证书因为颁发机构不同,价格也会不同,少则几百,多则上千,一般有效期是一年。而我们要介绍的当然是免费的ssl证书,那就是由Let's Encrypt
提供的ssl证书,官网地址:https://letsencrypt.org。
步骤还是一样,首先你得告诉颁发机构域名是你自己的,怎么验证域名是你的,一般你需要在域名申请的后台设置一个颁发结构发给你的txt记录,你将该值配到你的域名解析上,比如阿里的后台就长这样:
你只需要按照颁发机构给你的随机串码去配置就可以了,这样颁发机构就可验证域名确实是属于你本人的。
自动配置
Let's Encrypt
的ssl证书虽然是免费的,但是它的有效期只有90天,也就是说,每90天之后要生成新证书对过期证书进行替换,还是有点繁琐,如果某一天你忘了,你的网站就会因为证书过期,被浏览器阻止访问了。
万能的互联网上啥都有,你遇到的问题别人也会遇到,于是一个自动化脚本acme.sh
诞生了,只要你授权该脚本去访问你的域名配置后台,他就可以自动帮你去域名提供商设置验证记录,同时会去Let's Encrypt
请求颁发证书,然后自动下载到你的服务器上。
本文介绍的方法中,域名是在阿里云上申请的,所以需要在阿里云后台进行配置,当然其他域名提供商也是支持的,比如腾讯云,配置基本都是大同小异。
1.一键获取脚本acme.sh
1 |
|
2.获取阿里云后台App_Key跟App_Secret,进入阿里云这个页面,可以拿到程序调用需要的appid和appsecret值。
3.创建一个脚本文件ali_dns.sh
,设置key和secret和要生成的域名的证书,注意改成你自己的内容,内容如下:
1 |
|
4.执行ali_dns.sh
,证书会生成在xxx.xdull.cn
文件夹下,这个文件夹是你上面的命令指定的,--dns dns_ali
表示使用的阿里域名解析。
5.配置nginx,设置ssl证书的所在路径
1 |
|
6.重新加载nginx配置
1 |
|
acme.sh的强大之处是当你首次执行完ali_dns.sh
后,下次acme.sh
为定时帮你执行证书申请和替换,你可通过crontab -l
命令查看执行频率。当然你也可以通过acme.sh --cron -f
命令强制执行。
开放防火墙
如果上述操作完了,仍然无法通过https访问,检查下你的443端口是否被防火墙阻止了,如果是就开放443端口。
1 |
|