偶然看到acme.sh这个可以快速配置全站的https,这么好的神器赶紧试一下。证书是从Let’s Encrypt - Free SSL/TLS Certificates免费申请的。当然,除了免费的证书之外也可以去对应的SSL证书提供商处进行购买,如阿里与、godaddy等。
HTTPS与HTTP的区别:
- HTTPS的URL由
http://
起始且默认使用80端口 - HTTPS的URL由
https://
起始且默认使用443端口 - HTTP是不安全的,攻击者通过监听和中间人攻击等手段,可以获取网站帐户和敏感信息等
- HTTPS被设计为可防止前述攻击,并在正确配置时被认为是安全的
- 网站没有开启HTTPS,浏览器可能会提示网站非安全;如Chrome会有对应的警告提示
在日常开发中也有一些是必须要用到HTTPS的,比如小程序使用到的域名必须是HTTPS等,所以HTTPS还是比较重要的。
1、安装
$ curl https://get.acme.sh | sh
2、生成证书
直接命令申请证书(http://wifihi.cn是我的域名,换成需要配置的目标域名即可)
# Please specify at least one validation method:
# '--webroot', '--standalone', '--apache', '--nginx' or '--dns' etc.
$ acme.sh --issue --nginx -d wifihi.cn -d '*.wifihi.cn'
- 120秒的等待时间后会显示成功信息,以及生成的证书存放路径
3、更新配置Nginx配置文件
原来是有配置ssl证书的,所以只需要把对应的证书路径进行替换即可。
# /etc/nginx/nginc.conf
ssl_certificate /root/.acme.sh/wifihi.cn/wifihi.cn.cer;
ssl_certificate_key /root/.acme.sh/wifihi.cn/wifihi.cn.key;
如果原本没有配置ssl证书的,可以在nginx.conf里面加上一段配置信息:
server {
listen 443 ssl;
server_name wifihi.cn;
ssl_certificate /root/.acme.sh/wifihi.cn/wifihi.cn.cer;
ssl_certificate_key /root/.acme.sh/wifihi.cn/wifihi.cn.key;
access_log /var/log/nginx/host.access.log main;
}
4、验证配置文件重启nginx
验证一下Nginx配置文件是否修改正确
$ nginx -t
重启Nginx
$ service nginx restart
5、打开浏览器,验证https配置是否成功
- 浏览器输入: https://www.wifihi.cn
- 浏览器输入: https://api.wifihi.cn
注意对应的子域需要在阿里云进行配置。