nginx windows/linux cdn 下配置https

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文件名可以自定义)

输入密码后,再次重复输入确认密码。记住此密码,后面会用到。

扫描二维码关注公众号,回复: 432685 查看本文章

  (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个免费证书,单域名。

 

 

 

猜你喜欢

转载自520shuijing.iteye.com/blog/2396740