• windows下apache+https环境配置


    windows下apache+https环境配置

    转 https://www.cnblogs.com/sandaizi/p/7519370.html

     

    1、修改配置文件conf/httpd.conf,去掉以下语句注释符号‘#’:

     

    修改配置文件conf/extra/httpd-ssl.conf,把相应的选项改成如下:

     

     

    2、配置php(php-5.6.30)

    将php路径加入系统环境变量:

    右击计算机 -> 属性 -> 高级系统设置 -> 高级 -> 环境变量 -> 用户变量 -> 新建环境变量。

    变量名:PHP_HOME

    变量值:D:wampphp-5.6.30

     

    3、生成证书

    3.1 cmd进入命令行模式,切换至apache的bin目录:cd D:wamphttpd-2.4.25in;

     

    3.2 设置OPENSSL_CONFIG配置,执行命令:set OPENSSL_CONF=../conf/openssl.cnf

     

    3.3 首先要生成服务端的私钥(key文件):openssl genrsa -des3 -out server.key 1024

     

    3.4 生成server.csr,Certificate Signing Request(CSR),生成的csr文件交给CA签名后形成服务端自己的证书。屏幕上将有提示,依照其提示一步一步输入要求的个人信息即可。

          openssl req -new -key server.key -out server.csr -config ../conf/openssl.cnf

     

    3.5 对客户端也用同样的命令生成key及csr文件

          openssl genrsa -des3 -out client.key 1024

          openssl req -new -key client.key -out client.csr -config ../conf/openssl.cnf

     

    3.6 CSR文件必须有CA的签名才可形成证书。可将此文件发送到verisign等地方由它验证,要交一大笔钱,何不自己做CA呢。

          openssl req -new -x509 -keyout ca.key -out ca.crt -config ../conf/openssl.cnf

     

    3.7 在bin目录下新建一个demoCA文件夹,进入它

      新建newcerts文件夹,不需要进入

      新建index.txt

      新建serial,打开后输入01保存即可

     

    3.8 用生成的CA的证书为刚刚生成的server.csr,client.csr文件签名:

         openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config ../conf/openssl.cnf

         openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config ../conf/openssl.cnf

     

       注:如果指令出现如下错误,进入demoCA,然后打开index.txt.attr,把unique_subject=no即可。

       

    3.9 生成一个ca.pfx:

        openssl pkcs12 -export -in ca.crt -inkey ca.key -out ca.pfx

     

    3.10 导入证书

      打开IE浏览器 -> 工具 -> Internet选项 -> 内容 -> 证书,按照提示导入ca.pfx,这里要输入刚才生成ca.pfx过程中输入的密码。

     

    3.11 以上操作生成了

         client使用的文件有: ca.crt,  client.crt,  client.key

         server使用的文件有:ca.crt,  server.crt,  server.key

      把ca.crt, server.crt, server.key复制到conf目录下去。

     

    3.12 重启apache,访问https://127.0.0.1/index.php

     

    3.15 如果出现以下错误

    Starting the 'Apache2.4' service

    The 'Apache2.4' service is running.

    sl:emerg] [pid 8200:tid 500] AH02577: Init: SSLPassPhraseDialog builtin is not supported on Win32 (key file D:/wamp/httpd-2.4.25/conf/server.key)

    [Tue Mar 14 16:37:57.740113 2017] [ssl:emerg] [pid 8200:tid 500] AH02311: Fatal error initialising mod_ssl, exiting. See D:/wamp/httpd-2.4.25/logs/error.log for more information

    [Tue Mar 14 16:37:57.740113 2017] [ssl:emerg] [pid 8200:tid 500] AH02564: Failed to configure encrypted (?) private key example:1443:0, check D:/wamp/httpd-2.4.25/conf/server.key

    [Tue Mar 14 16:37:57.740113 2017] [ssl:emerg] [pid 8200:tid 500] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag

    [Tue Mar 14 16:37:57.740113 2017] [ssl:emerg] [pid 8200:tid 500] SSL Library Error: error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error

    [Tue Mar 14 16:37:57.740113 2017] [ssl:emerg] [pid 8200:tid 500] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag

    [Tue Mar 14 16:37:57.740113 2017] [ssl:emerg] [pid 8200:tid 500] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Type=RSA)

    [Tue Mar 14 16:37:57.740113 2017] [ssl:emerg] [pid 8200:tid 500] SSL Library Error: error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib

    [Tue Mar 14 16:37:57.740113 2017] [ssl:emerg] [pid 8200:tid 500] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag

    [Tue Mar 14 16:37:57.740113 2017] [ssl:emerg] [pid 8200:tid 500] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Type=PKCS8_PRIV_KEY_INFO)

    AH00016: Configuration Failed

    这就是说windows不支持加密密钥,还记得生成server.key输入的密码吗?就是这个地方的错误,现在取消它。

         openssl rsa -in server.key -out server.key

    把生成的server.key复制到conf目录下覆盖原来的。

     

    5.参考资料

     http://blog.csdn.net/wlmnzf/article/details/50244409

     http://blog.csdn.net/decajes/article/details/41706739

    windows下配置apache+https

     版权声明:本文为博主(木鱼大叔)原创文章,未经博主允许不得转载。 https://blog.csdn.net/tdcqfyl/article/details/79023431
    通过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目录。
    2.1 设置OPENSSL_CONFIG配置
    执行命令:set OPENSSL_CONF=..confopenssl.cnf
    2.2 生成服务端的key文件
    执行命令:openssl genrsa -out server.key 1024
    完成后,会在bin目录下生成server.key文件
    2.3 生成签署申请
    执行命令:openssl req -new -out server.csr -key server.key
    完成后,会在bin目录下生成server.csr文件,其中 Common Name <eg,YOUR name>[] 需要与配置文件中的ServerName一致,否则apache启动时将会报错。
    2.4 生成CA的key文件
    执行命令:openssl genrsa -out ca.key 1024
    完成后,会在目录bin下生成ca.key文件
    2.5 生成CA自签署证书
    执行命令:openssl req -new -x509 -days 365 -key ca.key -out ca.crt
    完成后,会在目录bin下生成ca.crt文件,此处填写的信息与2.3步中类似。
    2.6 生成CA的服务器签署证书
    执行命令:openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key
    此处如果没有创建好相关目录,将会报如下错误:
    根据提示,手动创建相关目录:
    在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目录的最终结构如下:
    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目录最终的文件结构如下:
    接着修改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配置成功了。如图:

    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结尾处,必须要加斜杠"/"。
  • 相关阅读:
    java中高级软件工程师面试总结
    失败的面试经历
    解决webstorm打开包含node_modules项目卡死问题
    通俗易懂的理解javascript闭包
    javascript实现silverlight pivotViewer控件
    javascript面向对象
    吐槽一下万网空间
    html5的Canvas
    前端CSS兼容的一些思路
    Win10 Ubuntu子系统访问Windows目录
  • 原文地址:https://www.cnblogs.com/it-tsz/p/10753950.html
Copyright © 2020-2023  润新知