windows下配置apache+https

windows下配置apache+https

2018年01月10日 14:34:15

阅读数:6142

通过https反向代理映射到http地址,可实现以https的方式,访问普通的http网站。

主要涉及到以下三个配置文件的修改:

httpd.conf

httpd-ssl.conf

httpd-vhosts.conf

具体实现步骤:

1. 修改conf/httpd.conf

取消ssl及proxy相关注释

#LoadModule ssl_module modules/mod_ssl.so (去掉前面的#号)

#Include conf/extra/httpd-ssl.conf (去掉前面的#号)

#LoadModule proxy_module modules/mod_proxy.so (去掉前面的#号)

#LoadModule proxy_http_module modules/mod_proxy_http.so (去掉前面的#号)

2. 生成证书

cmd进入命令行,进入apache安装目录的bin目录。

windows下配置apache+https

2.1 设置OPENSSL_CONFIG配置

执行命令:set OPENSSL_CONF=..\conf\openssl.cnf

windows下配置apache+https

2.2 生成服务端的key文件

windows下配置apache+https

执行命令:openssl genrsa -out server.key 1024

windows下配置apache+https

完成后,会在bin目录下生成server.key文件

2.3 生成签署申请

执行命令:openssl req -new -out server.csr -key server.key

windows下配置apache+https

完成后,会在bin目录下生成server.csr文件,其中 Common Name <eg,YOUR name>[] 需要与配置文件中的ServerName一致,否则apache启动时将会报错。

2.4 生成CA的key文件

执行命令:openssl genrsa -out ca.key 1024

windows下配置apache+https

完成后,会在目录bin下生成ca.key文件

2.5 生成CA自签署证书

执行命令:openssl req -new -x509 -days 365 -key ca.key -out ca.crt

windows下配置apache+https

完成后,会在目录bin下生成ca.crt文件,此处填写的信息与2.3步中类似。

2.6 生成CA的服务器签署证书

执行命令:openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key

windows下配置apache+https

此处如果没有创建好相关目录,将会报如下错误:windows下配置apache+https

windows下配置apache+https

windows下配置apache+https

根据提示,手动创建相关目录:

在bin下新建demoCA文件夹

bin/demoCA

在demoCA下新建index.txt

bin/demoCA/index.txt

在demoCA下新建serial.txt,其内容为01,重命名删除.txt后缀

bin/demoCA/serial

在demoCA下新建newcert文件夹

bin/demoCA/newcerts

完成后,会在bin目录下生成server.crt文件。demoCA目录的最终结构如下:

windows下配置apache+https

3. 修改conf/extra/httpd-ssl.conf文件

3.1 修改https端口号

根据需要修改httpd-ssl.conf的默认端口号"443",这里将所有的443修改为"6443",同时修改ServerName。

具体如下:

Listen 6443

<VirtualHost _default_:6443>

ServerName localhost

提示:此处如果保持https默认的443端口,则访问的时候,无需再加端口号。

3.2 修改相关证书路径

在apache安装目录的conf目录下,新建一个key目录,名称随意,然后将bin目录中的相关证书复制到key目录中。key目录最终的文件结构如下:

windows下配置apache+https

windows下配置apache+https

接着修改conf/extra/httpd-ssl.conf文件中的如下内容:

SSLCertificateFile "xxx/conf/key/server.crt"

SSLCertificateKeyFile "xxx/conf/key/server.key"

SSLCACertificateFile "xxx/conf/key/ca.crt"

#SSLVerifyClient require (去掉前面的#号,进行客户端验证时需要)

#SSLVerifyDepth 1 (去掉前面的#号,把10改为1,进行客户端验证时需要)

4. 重启apache

在浏览器中,输入https://localhost:6443,如果页面出现提示 It works! ,则说明https配置成功了。如图:

windows下配置apache+https

5. 项目部署方式

修改conf/extra/httpd-vhosts.conf,新增内容如下:

NameVirtualHost *:6443

注意:

httpd-vhosts.conf配置文件中原有的NameVirtualHost *:80不要修改,下面新增一行即可。

NameVirtualHost *:6443

5.1 以https的方式部署项目

在conf/extra/httpd-vhosts.conf配置文件中,新增如下内容:

 
  1. <VirtualHost *:6443>

  2. ServerName localhost

  3. DocumentRoot D:/javapro/bms

  4. SSLEngine on

  5. SSLProxyEngine on

  6. SSLCertificateFile "D:/myplatform/Apache2.2/conf/key/server.crt"

  7. SSLCertificateKeyFile "D:/myplatform/Apache2.2/conf/key/server.key"

  8. <Directory "/">

  9. Options None

  10. AllowOverride All

  11. Order allow,deny

  12. Allow From All

  13. </Directory>

  14. </VirtualHost>

上面的配置含义是,在浏览器中输入https://localhost:6443,即可访问DocumentRoot对应目录下的项目。

5.2 以反向代理的方式部署项目

5.2.1 以二级目录的方式部署反向代理

此时,被代理的虚拟机,必须要设置别名,否则,首页之外的其它url,将无法实现代理。

在conf/extra/httpd-vhosts.conf配置文件中,新增如下内容:

#部署被代理的虚拟机local.bms

 
  1. <VirtualHost *:80>

  2. ServerName local.bms

  3. DocumentRoot "D:/javapro/bms"

  4. Alias /bms "D:/javapro/bms"

  5. <Directory "/">

  6. Options None

  7. AllowOverride All

  8. Order allow,deny

  9. Allow From All

  10. </Directory>

  11. </VirtualHost>

此处,增加了Alias别名配置,以便通过http://local.bms/bms可以访问到http://local.bms,为后面的反向代理做准备。

#部署反向代理虚拟机

 
  1. <VirtualHost *:6443>

  2. ServerName localhost

  3. SSLEngine on

  4. SSLProxyEngine on

  5. SSLCertificateFile "D:/myplatform/Apache2.2/conf/key/server.crt"

  6. SSLCertificateKeyFile "D:/myplatform/Apache2.2/conf/key/server.key"

  7. ProxyRequests Off

  8. <Proxy *>

  9. Order allow,deny

  10. Allow from all

  11. </Proxy>

  12. ProxyPass /bms http://local.bms/bms

  13. ProxyPassReverse /bms http://local.bms/bms

  14. </VirtualHost>

上面的配置含义是,将https://localhost:6443/bms的请求,映射到http://local.bms/bms,其中,url结尾处的bms,就相当于一个虚拟的二级目录。

注意:此处被代理的url结尾处,不要加斜杠"/"。

5.2.2 以一级目录的方式部署反向代理

此时,被代理的虚拟机,无需设置别名。

在conf/extra/httpd-vhosts.conf配置文件中,新增如下内容:

#部署被代理的虚拟机local.bms

 
  1. <VirtualHost *:80>

  2. ServerName local.bms

  3. DocumentRoot "D:/javapro/bms"

  4. <Directory "/">

  5. Options None

  6. AllowOverride All

  7. Order allow,deny

  8. Allow From All

  9. </Directory>

  10. </VirtualHost>

#部署反向代理虚拟机

 
  1. <VirtualHost *:6443>

  2. ServerName localhost

  3. SSLEngine on

  4. SSLProxyEngine on

  5. SSLCertificateFile "D:/myplatform/Apache2.2/conf/key/server.crt"

  6. SSLCertificateKeyFile "D:/myplatform/Apache2.2/conf/key/server.key"

  7. ProxyRequests Off

  8. <Proxy *>

  9. Order allow,deny

  10. Allow from all

  11. </Proxy>

  12. ProxyPass / http://local.bms/

  13. ProxyPassReverse / http://local.bms/

  14. </VirtualHost>

上面的配置含义是,将https://localhost:6443的请求,映射到http://local.bms

注意:此处被代理的url结尾处,必须要加斜杠"/"。