1. 安装Openssl
下载地址:http://slproweb.com/products/Win32OpenSSL.html (根据系统选择32位或者64位版本下载安装)。
2.在环境变量中添加环境变量
变量名: OPENSSL_HOME 变量值:D:\OpenSSL-Win64\bin; (变量值为openssl安装位置)
在path变量结尾添加如下 : %OPENSSL_HOME%;
3.(1) 首先在 nginx安装目录中创建ssl文件夹用于存放证书。比如我的文件目录为 C:\wnmp\nginx\ssl
以管理员身份进入命令行模式,进入ssl文件夹。 命令为: cd c:/wnmp/nginx/ssl
(2) 创建私钥
在命令行中执行命令: openssl genrsa -des3 -out lee.key 1024 (lee文件名可以自定义)
输入密码后,再次重复输入确认密码。记住此密码,后面会用到。
(3)创建csr证书
在命令行中执行命令: openssl req -new -key lee.key -out lee.csr (key文件为刚才生成的文件,lee为自定义文件名)
执行上述命令后,需要输入信息。输入的信息中最重要的为 Common Name,这里输入的域名即为我们要使用https访问的域名,如果多个子域名,可以输入如:*.baidu.com
以上步骤完成后,ssl文件夹内出现两个文件
(4)去除密码。
在加载SSL支持的Nginx并使用上述私钥时除去必须的口令,否则会在启动nginx的时候需要输入密码。
复制lee.key并重命名为lee.key.org
可以使用此命令行,也可以使用鼠标操作 copy lee.key lee.key.org
去除口令,在命令行中执行此命令: openssl rsa -in lee.key.org -out lee.key (lee为自定义文件名)
(5)生成crt证书
在命令行中执行此命令: openssl x509 -req -days 365 -in lee.csr -signkey lee.key -out lee.crt (lee为自定义文件名)
证书生成完毕,ssl文件夹中一共生成如下4个文件,我们需要使用到的是lee.crt和lee.key。
5. 修改nginx.conf文件
nginx.conf文件位于:C:\wnmp\nginx\conf
找到该文件中如下代码的位置进行修改: 保证本机的端口不被占用 443 和 80
server {
listen 443;
server_name a.baidu.com;
ssl on;
root html;
index index.html index.htm;
ssl_certificate /etc/nginx/ssl/aa.pem;
ssl_certificate_key /etc/nginx/ssl/aa.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.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location ^~ /user/ {
add_header 'Access-Control-Allow-Origin' *;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' *;
proxy_pass http://192.168.1.188:9000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Cookie $http_cookie;
}
}
linux 下也基本一样
如果需要主页由http直接跳转为 hppts
而在http的转发里加上
# 首页重定向https
location =/ {
rewrite ^(.*) https://$server_name$1 permanent;
}
/sbin/iptables -L -n
查看防火墙
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
开启防火墙443端口
特别要注意的是443端口有没有开,而在阿里云的服务器,不止服务器防火墙要开而且在阿里云的控制台上也要把443端口允许了才行。
如果有用cdn那么也要在cdn上开启https,并把证书.crt,和秘钥.key传到cdn上,生效后就可以访问了
今天 在刷新cdn缓存时一直发现没有刷到最新服务器上的页面,最后检查发现原来阿里云上cdn有个‘协议跟随回源’ 这个设置要开启才行,不然就算刷新回源去服务器上抓取数据时也是走http,这个设置后就会走https了,这才能拿到正确的数据。
阿里云上有个ca证书,免费的,每个账号可以添加20个免费证书,单域名。