需求是服务器上正式环境安装的apache2.2,只用于http请求的反向代理,https的没有开启。今天在本地测试安装了apache,配置了对于https请求的反向代理。
1.下载带有ssl的apache安装程序
我安装的是apache2.2.25,不同版本配置步骤可能不一样。不过一定要记得下载带有ssl模块的版本,我下载如下:
httpd-2.2.25-win32-x86-openssl-0.9.8y.msi
2. 安装apache
安装都选默认就好了,安装完后,确认conf文件夹下有openssl.cnf
3.配置文件修改
1. 去掉前面的# #LoadModule ssl_module modules/mod_ssl.so
2. 去掉下面语句的注释,目的是使用Apache自带的ssl配置文件httpd-ssl.conf进行修改,减少我们的工作量。 #Include conf/extra/httpd-ssl.conf
4.创建自己的ssl证书,用于服务器的话,之后我会去购买阿里云的ssl付费证书使用
- 打开cmd,到apache的安装目录下bin文件夹下,运行
openssl req -config ..\conf\openssl.cnf -new -out my-server.csr
中间需要输入几个问题答案:
Enter PEM pass phrase: (输入密码)
Verifying - Enter PEM pass phrase: (再次输入密码)
Country Name (2 letter code) [AU]: (国家缩写)
State or Province Name (full name) [Some-State]: (省名)
Locality Name (eg, city) []: (城市名)
Organization Name (eg, company) [Internet Widgits Pty Ltd]: (组织名或者公司名)
Organizational Unit Name (eg, section) []: (部门名)
Common Name (eg, YOUR name) []: (服务器域名或IP地址)
Email Address []: (邮件地址)
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []: (密码)
An optional company name []: (公司别名)
全部完成之后会生成一个my-server.csr和 privkey.pem 文件在bin文件夹中.要注意查看有没有生成,我第一次因为不是管理员权限运行的cmd,没有生成相应的文件
- 运行下面的语句,需要输入密码,就是上面自己设置的密码
openssl rsa -in privkey.pem -out my-server.key
- 生成一个3650以后过期的证书
openssl x509 -in my-server.csr -out my-server.cert -req -signkey my-server.key -days 3650
- 运行
openssl x509 -in my-server.cert -out my-server.der.crt -outform DER
全部运行完后会在bin目录下生成6个文件,建议在conf下面新建一个cert文件夹存放这些文件
.cnt
privkey.pem
my-server.der.crt
my-server.scr
my-server.key
my-server.cert
5.设置apache支持ssl
- 打开conf/httpd,释放两个被注释了的文件
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
- 打开conf/extra/httpd-ssl.conf,更改如下配置
SSLMutex default
SSLCertificateFile "[Apache安装目录]/conf/cert/my-server.der.crt"
SSLCertificateKeyFile "[Apache安装目录]/conf/cert/my-server.key"
这两个后缀.crt和.key结尾的文件,就是之前用命令行生成,放到了conf/cert/文件夹下面的文件,使用绝对路劲把这两个参数配置好
6.测试
- 保存配置文件
- 在开始菜单中运行Apache的Test Configuration工具, 检查设置文件是否正确
- 启动apache,访问 https://localhost ,能出现It works!,则配置成功
7.启动中可能出现的报错
我遇到启动不成功的情况
将httpd-ssl文件中的这个注释:
#SSLSessionCache “shmcb:C:/Program Files (x86)/Apache Software Foundation/Apache2.2/logs/ssl_scache(512000)”
#SSLSessionCacheTimeout 300
8.设置反向代理
<VirtualHost _default_:443>
SSLEngine on
SSLProxyEngine On
SSLProxyCheckPeerCN Off
SSLProxyVerify none
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPreserveHost On
ProxyRequests Off
ProxyPass /yuyin http://localhost:8080/YuYinTest/user/
ProxyPassReverse /yuyin http://localhost:8080/YuYinTest/user/
</VirtualHost>
完毕,收工