APACHE代理https转发到http解决https跨域问题

昨天开发一个chrome插件浏览器插件:插件自动把当前浏览的页面html代码抓去,通过ajax的方式html代码发送到服务器解析。抓去的站点是https的,我们的解析就普通的tomcat用得的http,做的过程中遇到以下问题:

was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://127.0.0.1/'. This request has been blocked; the content must be served over HTTPS.

 

原因是源站点是https的,我本地tomcat是http的,存在跨域问题,所以就需要用到apache代理把本地http包一个https的外壳。

 

一、配置Apache支持SSL

步骤1:配置 APACHE以支持SSL

找到下面两行去掉前面的注释 #

LoadModule ssl_module modules/mod_ssl.so

Include conf/extra/httpd-ssl.conf

步骤2: 为网站服务器生成证书及私钥文件

C:/Program Files/Apache Software Foundation/Apache2.2/bin>openssl genrsa -out server.key 1024

生成一个server.key

步骤3:生成签署申请

C:/Program Files/Apache Software Foundation/Apache2.2/bin>openssl req -new -out server.csr -key server.key -config ../conf/openssl.cnf

此时生成签署文件 SERVER.CSR

步骤4:使用OPENSSL生成CA私钥

C:/Program Files/Apache Software Foundation/Apache2.2/bin>openssl genrsa -out ca.key 1024

多出CA.key文件

步骤5:利用CA的私钥产生CA的自签署证书

C:/Program Files/Apache Software Foundation/Apache2.2/bin>openssl req -new -x509 -days 365 -key ca.key -out ca.crt -config ../conf/openssl.cnf

步骤6:在bin目录下新建demoCA目录,在demoCA下新建index.txt,newcerts,serial 目录结构如下

demoCA

|--index.txt(文本,内容为空)

|--newcerts(文件夹)

|--serial(文本,内容为 01)

步骤7:准备为网站服务器签署证书

C:/Program Files/Apache Software Foundation/Apache2.2/bin>openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config ../conf/openssl.cnf

生成 server.crt文件

步骤8:将 server.crt server.key复制到 conf文件夹下

------------------配置ssl常见问题---------------------

win7系统64位在配置过程中,在重启apache时可能会出现问题

问题1:apache重启失败,报错信息Syntax error on line 62 of C:/Program Files (x86)/Apache Software Foundation/Apache2.2/conf/extra/httpd-ssl.conf:

SSLSessionCache: Invalid argument: size has to be >= 8192 bytes

解决办法:

将conf/extra/httpd-ssl.conf中61-63行修改成下面这样即可SSLSessionCache "dbm:C:/Program Files (x86)/Apache Software Foundation/Apache2.2/logs/ssl_scache"

# SSLSessionCache "shmcb:C:/Program Files (x86)/Apache Software Foundation/Apache2.2/logs/ssl_scache(512000)"

SSLSessionCacheTimeout 300

 

二、设置代理

修改http.cnf文件

步骤1:打开代理moduls

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

LoadModule proxy_connect_module modules/mod_proxy_connect.so

LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

LoadModule proxy_http_module modules/mod_proxy_http.so

步骤2:添加一下代码

# 正向代理开关  

ProxyRequests On  

ProxyVia On  

  

<Proxy *>  

Order deny,allow  

Allow from all  

</Proxy>  

 

# 设置反向代理  

ProxyPass / http://127.0.0.1:8080/

# 设置反向代理使用代理服务的HOST重写内部原始服务器响应报文头中的Location和Content-Location  

ProxyPassReverse / http://127.0.0.1:8080/

 

猜你喜欢

转载自mzllyl.iteye.com/blog/2348888
今日推荐