网站早就想升级为HTTPS,但是因为太懒,实在不想动就拖到了今天。作为一个Linux菜鸟都不算的我,要将我的网站升级为HTTPS,还是花了一些功夫的。不过最终还是成功了,我把我遇到的一些问题记录下来,说不定对你有用。
为什么要把网站升级为HTTPS?
有人说,http协议是明文传输,账号密码可能在传输途中被截获,我并没有做这样的事情,所以没有什么体会。我有体会的是网络运行商(比如电信)会在你的网站中插入广告,简直无孔不入,要屏蔽掉网络运营商的广告,有两种策略,一种是csp;一种就是升级为HTTPS。
怎么升级
Let’s Encrypt提供免费的证书服务,很多大佬都推荐这个。然后你再在服务器上安装一个叫certbot的东西,翻译过来就是“证书机器人”的意思,她会自动帮你生成证书并配置到Nginx配置文件上,非常傻瓜式,很简单。
Nginx可能根据不同的镜像(我使用的是oneinstack)安装在不同的目录下,这里会出现一些坑,你可以在参考链接里查看具体的措施,也可以在我的网站上留言。
可能会用到的一些Linux知识
# which nginx /usr/local/nginx/sbin/nginx
# yum info nginx Failed to set locale, defaulting to C Loaded plugins: langpacks Available Packages Name : nginx Arch : x86_64 Epoch : 1 Version : 1.12.2 Release : 1.el7 Size : 529 k Repo : epel/x86_64 Summary : A high performance web server and reverse proxy server URL : http://nginx.org/ License : BSD Description : Nginx is a web server and a reverse proxy server for HTTP, SMTP, POP3 and : IMAP protocols, with a strong focus on high concurrency, performance and low : memory usage.
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx ln -s /usr/local/nginx/conf/ /etc/nginx
上面的小知识可以帮助你解决下面这个问题:
# ./certbot-auto --nginx Saving debug log to /var/log/letsencrypt/letsencrypt.log Error while running nginx -c /etc/nginx/nginx.conf -t. nginx: [emerg] open() "/etc/nginx/nginx.conf" failed (2: No such file or directory) nginx: configuration file /etc/nginx/nginx.conf test failed The nginx plugin is not working; there may be problems with your existing configuration. The error was: MisconfigurationError('Error while running nginx -c /etc/nginx/nginx.conf -t.\n\nnginx: [emerg] open() "/etc/nginx/nginx.conf" failed (2: No such file or directory)\nnginx: configuration file /etc/nginx/nginx.conf test failed\n',)
如何更新你的证书?
certbot certonly -d zengxiaoluan.com
执行上述命令就好,它会有三个选项,我选择的是第一个。