关键词
SSL HTTPS Nginx AMH面板
背景
在建站过程中遇到如下需求:需要网站支持HTTPS访问,因此需要申请SSL证书,并且安装使用
为什么需要HTTPS?
简单来讲,HTTP是明文传输的,也就意味着,介于发送端、接收端中间的任意节点都可以知道你们传输的内容是什么。这些节点可能是路由器、代理等。相对来说安全性较低。常见的运营商劫持就是利用了HTTP协议传输中的不足。
HTTPS则拥有更高的安全性,是以安全为目标的HTTP通道,简单讲是HTTP的安全版。之前HTTPS在金融购物网站使用比较多,但是现在随着用户愈发重视网络安全,很多平台开始转向使用HTTPS。目前Google,Apple,Facebook等已经完全支持HTTPS,甚至支持HTTP 2.0。
如何申请SSL证书?
国内很多渠道可以获取免费的SSL证书,比较主流的有腾讯云,阿里云,BAE(百度开放云),我因为域名和服务器大多都在阿里云(且比较穷),所以选择了阿里云的免费SSL证书服务。
申请地址:点我
每个阿里云账号可以申请可以申请10个免费SSL证书,每个证书对应一个域名。
申请完成后填写相关信息,一般十分钟左右即可完整证书签发,注意填写信息的时候尽量填写真实信息,否则可能会影响审核。
证书签发之后,点击相应证书后的“下载”,即可进入下载页,选择对应主机环境,下载所需的证书文件,还需安装,安装完成即可实现HTTPS访问。
环境配置说明:
因为当时自己安装Nginx+PHP+MySQL环境的时候数据库密码遇到一些问题,为了方便,直接使用了AMH面板。
环境如下:Nginx+PHP+MySQL,配合AMH面板
证书安装
阿里云官方提供了各环境配置下的证书安装说明,上传证书文件至Nginx安装文件根目录,然后修改nginx.conf配置文件即可。
一般Nginx配置文件位于usr/local/nginx/conf文件夹下,但是因为我是用的是amh面板,nginx.conf文件include了单独的主机配置文件
比如我的是/home/wwwroot/lnmp_movie/vhost/*.conf,直接进入这个目录修改即可。
官方提供的修改配置如下:
ssl_certificate和ssl_certificate_key对应的地址是可以更换的,示具体上传的地址而定。
使用阿里云官方提供的配置,修改完配置文件,重启Nginx之后,使用HTTPS链接已经可以访问,但是如果不使用HTTPS而使用HTTP访问,出现了一个报错。
The plain HTTP request was sent to HTTPS port
网上查找之后有很多种解决办法,其中几种试了之后并不能解决问题,后来我试着修改了一下ssl on代码,配置改成如下,重启Nginx之后HTTP访问已经不再报错(具体原理我也讲不清
整体修改后的配置如下,比较重要的地方已经使用红框标注,其他配置文件与ssl无关。