SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上,也称为SSL服务器证书。SSL 证书就是遵守 SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。
当前在部署后台程序时,如微信公众号、小程序时都需要网站支持https,本文档主要如何让后台接口支持SSL,通过Nginx。
前置条件:
操作系统: centos6
Nginx: 版本:1.12.1,源码目录:/opt/nginx-1.12.1,安装目录:/usr/local/nginx/
SLL证书: 通过阿里云申请了免费域名证书
在Nginx安装SLL模块
通过SecureCRT登录到服务器:
1、是否安装SSL模块
/usr/local/nginx/sbin/nginx -v //查看nginx安装的模块
如果执行命令之后如果展示了上图红色中的部分就表示已经安装了SSL模块,如果未展示表示未安装。如果安装了就不用执行下一章节,可以直接进行配置章节。
2、安装SSL模块
切换到源码包
cd /opt/nginx-1.12.1/
增加SSL模块
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
执行make
make
备份原有nginx
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
把新编译好的包覆盖原有的nginx,执行此命令时nginx必须在停止状态(nginx -s stop)
cp ./objs/nginx /usr/local/nginx/sbin/
执行上面命令时出现以下问题需要处理:
如提醒如下信息:
cp:是否覆盖"/usr/local/nginx/sbin/nginx"? y
cp: 无法创建普通文件"/usr/local/nginx/sbin/nginx": 文本文件忙
nginx二进制文件繁忙,可以停止nginx,再试一次就可以了)
执行完成以后就可以启动nginx了,可以再执行一次,看看nginx是否已经成功安装SSL了
/usr/local/nginx/sbin/nginx -v //查看nginx安装的模块
上传证书文件
从阿里云下载申请的免费SSL证书,并上传到nginx/conf/cert目录中。cert目录如果不存在,需要创建。
配置nginx中的nginx.conf文件
本文配置的是https与http共存,可以使用http和https访问网站。
nginx.conf配置文件位于/usr/local/nginx/conf/nginx.conf
原文件内容如下:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
}
原配置中只支持通过http访问,只需要增加支持https访问即可
server {
listen 80;
listen 443 ssl; #增加ssl访问支持
server_name localhost;
#配置ssl证书文件
ssl_certificate cert/214938964360088.pem;
ssl_certificate_key cert/214938964360088.key;
ssl_session_timeout 5m;
##指定加密算法
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#指定SSL服务器端支持的协议版本
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#在使用SSLv3和TLS协议时指定服务器的加密算法要优先于客户端的加密算法
ssl_prefer_server_ciphers on;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
}
完成以上配置之后,重启nginx就完成了配置。
重启之后,就可以通过http和https两个协议访问网站了