前段时间公司网站要求加上HTTPS安全CA证书,公司服务器全是阿里云服务器,并且配有负载均衡,所以选择直接在阿里云购买CA证书,阿里云有一种证书可以免费试用一年,决定申请此证书,阿里云证书需要验证,阿里云有详细教程
配置之后发现所有在HTTPS访问的网站下的所有连接都需要是HTTPS访问,所以还是需要自己进行配置
配置方案记录一下,方便以后自己配置查找
环境
Centos6.8 Nginx yum安装
首先要将下载的CA证书上传到服务器上面 , 然后打开/etc/nginx/conf.d/自己配置文件名.conf
然后将下面代码添加进去
ssl_certificate /etc/nginx/conf.d/.pem;#此处为安全成熟的pem文件需要根据自己的实际情况配置路径
ssl_certificate_key /etc/nginx/conf.d/.key;#同上
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-
SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1. TLSv1.;
ssl_prefer_server_ciphers on;
添加后如下显示
server {
listen ;
server_name 自己的域名; #charset koi8-r;
#access_log /var/log/nginx/host.access.log main; location / {
try_files $uri $uri/ /index.php?$query_string;
client_max_body_size 1000m;
}
root 项目目录;
index index.php; ssl_certificate /etc/nginx/conf.d/.pem;
ssl_certificate_key /etc/nginx/conf.d/.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1. TLSv1.;
ssl_prefer_server_ciphers on;
.....以下省略
然后在后来配置Windows服务器的时候,用的PHPStudy集成环境配置发现还需要加入
SSL on
重启之后生效。
网站本身需要一个实时数据推送,所以我采用了node.js的socket.io模块进行推送,然后找到配置方法如下
var http = require('http');
var https = require('https');
var fs = require('fs'); var options = {
key: fs.readFileSync('./214521058020981.key'),//配置自己的证书
cert: fs.readFileSync('./214521058020981.pem')//同上
} var server = https.createServer(options).listen(监听端口);
var io = require('socket.io')(server);
此为配置方法,引入时用https://自己域名进行引入即可
注意:同一个服务器无法进行node.js和Nginx同时配置HTTPS,因为占用同一个443端口发生冲突,至于是不是可以采用Nginx来为node.js提供Https访问,我没试验