https 改造

来源:互联网 发布:淘宝店铺违规发布商品 编辑:程序博客网 时间:2024/04/29 12:57

目前开发的网站是普通的http网站,为了提高网站安全性,大概主要有三种方法

1.应用自行对传递的数据进行加密处理

优点:灵活性非常高

缺点:上传下载的流数据没法在浏览器中进行干扰(除非使用flash等插件,这里主要指用form提交下载数据),所以无法保证这种数据的安全。

   提高了系统复杂度。

2.使用VPN保证数据安全

优点:本人认为这是最安全的方式,速度快

缺点:要求所有访问系统的人必须进行VPN连接,对用户量大的系统非常不方便

3.使用 https 代理

优点: 无需改造现有Web系统,只需要在Web应用和用户之间加一层https代理,实现简单,安全性很高

缺点: 正规机构颁发的https证书是要钱的,使用自签发证书浏览器会有安全提示,而且确实有可能被第三方伪造而用户无法识别,

但个人认为如果直接使用ip访问而不用域名访问应该没什么大问题


本文主要记录对第三种方案的实现

第一步,使用openssl 制作秘钥和证书

openssl下载地址 : http://slproweb.com/products/Win32OpenSSL.html

通过命令行运行如下命令:

创建文件里面包含公钥和私钥
openssl genrsa -des3 -out server.key 1024

创建签名请求的证书:
openssl req -new -key server.key -out server.csr

提取私钥:
openssl rsa -in server.key.org -out server_private.key

生成证书:
openssl x509 -req -days 3650 -in server.csr -signkey server_private.key -out server.crt


第二步,https代理服务器使用nginx就可以(nginx 真是个负载均衡,反向代理,集群的无上法宝啊~~~,在这里十分感谢nginx开发们),nginx 配置如下

upstream real_server {                                                         
        server 192.168.1.4:80;                                    
        keepalive 2000;

}

server {
        listen          443 ssl;
        server_name     localhost;
 
        ssl on;
        ssl_certificate         C:\OpenSSL-Win64\bin\server\server.crt;
        ssl_certificate_key     C:\OpenSSL-Win64\bin\server\server_private.key;
 
        ssl_verify_client       off;
        ssl_session_timeout     5m;
        ssl_protocols   SSLv2 SSLv3 TLSv1;
        ssl_ciphers     HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers   on;
 
        location / {
            proxy_pass http://real_server/;
proxy_set_header   Host             $host;  
proxy_set_header   X-Real-IP        $remote_addr;  
proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;  
proxy_connect_timeout 60;  
proxy_read_timeout 600;  
proxy_redirect http:// $scheme://;
proxy_set_header   X-Forwarded-Proto $scheme;  
        }
}


最后启动 nginx 就可以了~~~



0 0