本文介绍了如何使用Nginx配置你的站点的https服务。
1. https基础
1.1 http
http协议是一种应用层的协议,协议本身没有做加密措施,所有信息都是用明文传播,因此就会有一些风险:
窃听风险(eavesdropping):第三方可以获知通信内容。
篡改风险(tampering):第三方可以修改通信内容。
冒充风险(pretending):第三方可以冒充他人身份参与通信。by阮一峰
我用白话翻译一下就是:我登陆的网址并不能保证是我想要登陆的网址,即你登录的网址假如被第三方篡改或者监听、或者第三方冒充时你都不知道,所以就会带来一系列的风险。
1.2 https和SSL/TLS
SSL(Secure Sockets Layer)协议是网景公司设计的,就是为了解决上述Web传输的安全问题,后来IETF就把SSL标准化。标准化之后的名称改为TLS(Transport Layer Security),因此后续我们就把两者并称。
SSL/TLS协议使用 公钥加密算法,即使用公钥加码,私钥解密的方式。对应到实际的Web传输过程就是:用户客户端向服务器请求公钥,然后用公钥加密信息成密文,服务端收到密文后用私钥解密。SSL将公钥放在数字证书中,只要证书是可信任的,则公钥就是可信任的。下一部分就介绍了获取数字证书的过程,你可以逐步地创建自己网站的数字证书!
2. 获取证书
2.1 个人配置
首先需要安装 openssl,利用openssl命令可以生成私钥文件XXX.key和证书请求文件XXX.csr。
生成密钥/证书文件:
1 | openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout XXX.key -out XXX.crt |
按照提示输入信息和密码即可!后面配置Nginx的Https服务的时候需要本步骤生成的XXX.crt和XXX.key文件。
个人加密的CA证书目前不受Chrome等主流浏览器的认可,会提示给用户安全问题,因此不建议使用个人生成的CA证书!
2.2 第三方服务
2.2.1 腾讯云/阿里云
可以直接在 腾讯云 或者 阿里云 上购买为期一年的Symantec个人DV SSL证书。
注:个人用户推荐用此方式申请证书!
2.2.2 startssl
美国的SSL服务商 startssl,不过由于安全问题,chrome、safari等主流浏览器均不再信任其数字证书,所以不推荐该SSL服务商。
3. 集成到Nginx
现在假设你已经通过上述手段得到了密钥文件XXX.key和证书文件XXX.crt,这一步就要进入到Nginx的配置中。
首先,打开nginx.cnf文件,在server模块里加入以下配置:
1 | listen 443 ssl; |
这样就加上了你的crt文件和key文件,之后重启Nginx即可:
1 | service nginx stop |
以上内容就是关于Nginx配置网站https服务的全部内容了,谢谢你阅读到了这里!
Author:zhaoyh