研究了一下HTTPS的机制,看了一篇好文章,打算升级一下公司服务。
要使用HTTPS,关键需要有证书,市面上的证书普遍需要上万的年费。但也有CA提供免费的证书,如:
Let’s Encrypt(https://letsencrypt.org/), 它提供了一个叫Certbot的工具(https://certbot.eff.org/)来安装证书。
我的环境是CentOS7,使用了Nginx,安装证书的步骤参考(https://segmentfault.com/a/1190000005797776)
1) 安装Certbot
使用yum安装Certbot之后,运行总是异常,所以使用了certbot-auto来替代certbot指令,certbot-auto的安装:
https://certbot.eff.org/docs/install.html#alternate-installation-methods
2)配置Nginx
修改/etc/nginx/nginx.conf,在server中添加:
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root /usr/share/nginx/html;
}
location = /.well-known/acme-challenge/ {
return 404;
}
reload nginx:
sudo service nginx reload
3)安装证书:
/usr/local/bin/certbot-auto certonly --webroot -w /usr/share/nginx/html/ -d esl-hz.zkong.com
根据提示输入相应的选项,安装成功后,会有提示:
可以看到证书的安装位置和过期时间
4)使用443端口访问服务器
修改/etc/nginx/ngxin.conf, 增加一个server
server {
listen 443 ssl;
listen [::]:443 ssl ipv6only=on;
ssl_certificate /etc/letsencrypt/live/esl-hz.zkong.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/esl-hz.zkong.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/esl-hz.zkong.com/chain.pem;
# 拷贝原server除listen之外的所有属性到这
}
再reload一下nginx,就可以使用 https://esl-hz.zkong.com/ 访问服务器了(https默认使用443,无需另外指定端口号)。