apache https反向代理设置方案


首先介绍一下何为反向代理:

  一.反向代理的概念
   反向代理也就是通常所说的WEB服务器加速,它是一种通过在繁忙的WEB服务器和Internet之间增加一个高速的WEB缓冲服务器(即:WEB反向代理服务器)来降低实际的WEB服务器的负载。
   Web服务器加速(反向代理)是针对Web服务器提供加速功能的。它作为代理Cache,但并不针对浏览器用户,而针对一台或多台特定Web服务器(这也是反向代理名称的由来)。实施反向代理(如上图所示),只要将Reverse Proxy Cache设备放置在一台或多台Web服务器前端即可。当互联网用户访问某个WEB服务器时,通过DNS服务器解析后的IP地址是Reverse Proxy Server的IP地址,而非原始Web服务器的IP地址,这时Reverse Proxy Server设备充当Web服务器,浏览器可以与它连接,无需再直接与Web服务器相连。因此,大量Web服务工作量被卸载到反向代理服务上。不但能够防止外部网主机直接和web服务器直接通信带来的安全隐患,而且能够很大程度上减轻web服务器的负担,提高访问速度。
  二.win+apache实现ssl
   首先,到http://hunter.campbus.com/去下载和自己的apache版本相同的的Apache_xxx-xxxOpenssl_xxx-Win32.zip。
   我用的是Apache_2.0.59,
   安装程序地址: http://apache.justdn.org/httpd/binaries/win32/apache_2.0.59-win32-x86-no_ssl.msi
   Apache_2.0.59-Openssl_0.9.8c-Win32.zip地址:
   http://209.61.202.80/apache/Apache_2.0.59-Openssl_0.9.8c-Win32.zip)。
   解压缩后找到这5个文件mod_ssl.so(modules目录),ssl.conf,ssl.default.conf(conf目录, 其中default.conf作为备份),libeay32.dll, ssleay32.dll(这2个都在bin目录)。把它们全都复制到你自己的apahce下的对应目录 。 
  ############################################################################### 
   接下来,更改设置文件 
   对于httpd.conf和ssl.conf,如果你的服务器没有域名,那么servername就填ip好了。 
  比如:ServerName 172.18.42.123:80(httpd.conf) 
  ServerName 172.18.42.123:443(ssl.conf) 
   
   打开httpd.conf: 
   找到#LoadModule ssl_module modules/mod_ssl.so,去掉前面的‘#‘,这样就在启动时加载了ssl模块。 
  
   打开ssl.conf: 
  找到#;和# ;,把前面的’#‘号都去掉,否则启动apache时还要加参数,麻烦。 
   如下设置: 
   SSLMutex default
   SSLCertificateFile conf/server.crt(服务器证书的位置) 
   SSLCertificateKeyFile conf/server.key (服务器私钥的位置) 
   SSLCACertificateFile conf/ca.crt (CA根证书的位置,进行客户端验证时需要)
   上面的文件被放到了conf目录下。
   DocumentRoot "xxxxx" (指向要ssl加密认证的文档目录,比如"f:/http") 
   SSLVerifyClient require (去掉前面的‘#’号,进行客户端验证时需要) 
   SSLVerifyDepth 1 (去掉前面的‘#’号,把10改为1,进行客户端验证时需要) 
  
  ############################################################################## 
   现在,就要制作证书了 
   去openvpn.net下载并安装openvpn。 
   http://openvpn.net/release/openvpn-2.0.9-install.exe
   这是一个虚拟个人网络制作工具,他能完美的在win(linux,BSD也行)下制作根、服务器、客户端证书。 
   安装完毕后,开始-程序-附件-命令提示符,进到openvpn的easy-rsa目录,比如: 
   c:\program files\openvpn\easy-rsa>
   输入: init-config 回车 
   会产生几个文件,切换出来,打开vars.bat文件,修改其中的KEY_COUNTRY(国家2位字母), KEY_PROVINCE(省2位字母), KEY_CITY(城市), KEY_ORG(组织), KEY_EMAIL(电子邮箱)这几个参数,免的后面制证时 
  
   反复输入麻烦。保存退出,继续使用命令提示符。 
   依次输入以下两个命令,当然是分别回车喽: 
   vars 
   clean-all (这两个是准备工作) 
  
  ####################################################################################
   1. 建立CA根证书 
   输入build-ca 回车(这个就是建立CA根证书啦) 
   然后显示: 
   ai:/usr/share/openvpn/easy-rsa # ./build-ca 
   Generating a 1024 bit RSA private key 
   ............++++++ 
   ...........++++++ 
   writing new private key to 'ca.key' 
   ----- 
   You are about to be asked to enter information that will be incorporated into your certificate request. 
   What you are about to enter is what is called a Distinguished Name or a DN. 
   There are quite a few fields but you can leave some blan k 
   For some fields there will be a default value, 
   If you enter '.', the field will be left blank. 
  ----- 
   Country Name (2 letter code) [KG]: 国家名2位字母,默认的参数就是我们刚才修改过的。 
   State or Province Name (full name) [NA]: 省、州名2位字母 
   Locality Name (eg, city) [BISHKEK]: 城市名 
   Organization Name (eg, company) [OpenVPN-TEST]: 组织名 
   Organizational Unit Name (eg, section) []: 组织里的单位名 
   Common Name (eg, your name or your server's hostname) []:这个是关键,应该输入颁发根证书单位的域名 
  ,不过因为是根证书,所以怎么填都无所谓。只有服务器证书才需要认真填。 
   Email Address [me@myhost.mydomain]: 电子邮箱 
  
   好了,CA根证书制作完成!在keys目录下,它的名字就叫ca.crt,CA的私钥是ca.key 
  
  
  ####################################################################### 
   2. 制作服务器证书: 
   在命令提示符下,输入 
   build-key-server server 回车 
   你会看到和上面很相似的东西,但要注意
   这里的Common Name (eg, your name or your server's hostname) []: 这个才是真正的关键。这里应该输入服务器的域名比如www.xxx.com。 
  如果没有域名,就应该填ip,与httpd.conf和ssl.conf里的设置对应, 
   ServerName 172.18.42.123:80(httpd.conf) 
   ServerName 172.18.42.123:443(ssl.conf) 
   也就是说填:172.18.42.123
  
   接下来看到 a challenge password []:填不填随便 
   an optional company name []: 填不填随便
  
   sign the certificate? [y/n] 敲y回车。用CA根证书对服务器证书签字认证。 
   1 out 1 certificate requests certified,commit? [y/n] 敲y回车,确认。 
  
   好了,建好了在keys目录下的server.crt(证书)和server.key(私钥) ####################################################################### 
   3. 制作客户端证书: 
   在命令提示符下,输入 
   build-key client1 回车 
   又是一通国家省市组织等等,comman name也是随便填的。 
   然后 :
   a challenge password []:填不填随便
   an optional company name []: 填不填随便
  
   sign the certificate? [y/n] 敲y回车。用CA根证书对客户端证书签字认证。 
   1 out 1 certificate requests certified,commit? [y/n] 敲y回车,确认。 
  
   好了,建好了在keys目录下的client1.crt(客户端证书)和client1.key(私钥) 
  
   等等, .crt的客户端证书是不能使用的,必须把它转化为.pfx格式的文件!! 
   所以,还是在命令提示符下,输入 
   openssl 回车 
   看到openssl>; 
   再输入 :
   pkcs12 -export –in keys/client1.crt -inkey keys/client1.key -out keys/client1.pfx 回车, 
   看到Enter export password:会要求你建立客户端证书的输出密码
   verifying-Enter export password再确认一遍,好了! 
  ######################################################################## 把keys目录下的ca.crt和server.crt,server.key都复制到apache的conf目录下,(ssl.conf需要) ca.key自己保留吧,找个合适的地方储存起来. 
  
  
  ######################################################################### 
   客户端安装证书 
   打开internet explorer(IE),工具-internet选项-内容-证书,点选'个人' 再点击导入,把客户端证书client1.pfx导入到个人组里(别忘了扩展名是pfx)。这里还要输入刚才建立的输出密码才能导入呢。 
   接着,点选'受信任的根证书颁发机构',点击导入,把CA根证书ca.crt导入到受信任的根证书颁发机构里。 
  #########################################################################   
    好啦,重新启动apache,打开IE, 
    在地址栏里输入https://172.18.42.123或者域名,弹出个窗口要选择个人的数字证书。 
   点选,然后确定。 
   如果服务器证书的common name填写正确的话,你就可以直接进入网站了,看到右下角的小锁头(可靠的SSL128位)。 
   如果服务器证书的common name填写不正确,就会弹出个‘安全警报’框,告诉你3条: 
   1.安全证书由信任的站点颁发 
   (如果说是由不信任的站点颁发,那就是你的ca根证书ca.crt没有导入到ie的受信任的根证书颁发机构里) 
  
   2.安全证书的日期有效 
   (这个日期缺省是10年,可以在openvpn的easy-rsa目录下的openssl.cnf里调整修改,然后重新制作一整套证书(openssl.cnf看起来像拨号网络的快捷方式,要用记事本,写字板打开修改)) 
   
   3.“安全证书上的名称无效,或者与站点名称不匹配” 
  这就是服务器证书的common name填写不正确所致,不过这也没关系,有人好像愿意这样。我是不想看到这个警告框,烦人。 
  
   即使有安全警报,你仍能进入网站,看到右下角的小锁头(可靠的SSL128位) 
  
  
  ################################# 
   最后,成功啦!用吧。 
  三.设置反向代理
   修改conf\httpd.conf文件
   先启动两个模块
   LoadModule proxy_module modules/mod_proxy.so
   LoadModule proxy_http_module modules/mod_proxy_http.so
   然后在文件最后加上
   SSLProxyEngine on 
   ProxyRequests Off
   ProxyPass / https://10.6.177.66
   ProxyPassReverse / https://10.6.177.66 
   

   ok了,重新启动apache,输入https://172.18.42.123 ,什么效果,自己试试就知道了!



<源自我在天涯的博客,已不再维护〉

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值