zoukankan      html  css  js  c++  java
  • window下为apache配置ssl证书

    转载自 子非鱼 的博客稍作修改

    第一步:依赖

    配置Apache服务器支持https协议和SSL证书,最基本的要求是Apache包含openssl模块。还好apache/bin目录下有libeay32.dllopenssl.exessleay32.dll,自带了ssl模块,若没有该模块,需自行下载单独的openssl。

    第二步:启动模块

    启动模块比较简单,打开apache的配置文件conf/httpd.conf,去掉ssl模块前面的#

    LoadModule ssl_module modules/mod_ssl.so
    ...
    Include conf/extra/httpd-ssl.conf
    

    第三步:配置证书

    如果你有证书了,那么会有malinlin.cn.crt malinlin.cn.key,两个文件,在conf下建立个ssl文件夹存放证书。将原先conf/extra/httpd-ssl.conf备份后,新建一个httpd-ssl.conf。以下是我为蛋总配置的:

    Listen 443
    SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
    SSLPassPhraseDialog  builtin
    
    <VirtualHost *:443>
    DocumentRoot "c:/wamp/www"
    ServerName malinlin.cn:443
    ServerAdmin admin@example.com
    ErrorLog "C:/wamp/bin/apache/apache2.2.22/logs/ssl-error.log"
    TransferLog "C:/wamp/bin/apache/apache2.2.22/logs/sll-access.log"
    SSLEngine on
    
    SSLCertificateFile "C:/wamp/bin/apache/apache2.2.22/conf/ssl/malinlin.cn.crt"
    SSLCertificateKeyFile "C:/wamp/bin/apache/apache2.2.22/conf/ssl/malinlin.cn.key"
    SSLCertificateChainFile "C:/wamp/bin/apache/apache2.2.22/conf/ssl/malinlin.cn.crt"
    
    </VirtualHost>
    

    如果想在原先httpd-sll.conf修改也行,记得将这三行注释掉。没有注释的话启动wamp会是失败的枯黄色。

    #SSLSessionCache         "dbm:D:/wamp/bin/apache/apache2.4.9/logs/ssl_scache"
    #SSLSessionCache        "shmcb:D:/wamp/bin/apache/apache2.4.9/logs/ssl_scache(512000)"
    #SSLSessionCacheTimeout  300
    

    测试

    配置好后重启wamp,重启完毕后,浏览器就可以访问了。
    https_malinlin.cn.png

    额外

    如果到这已经解决你的问题了,那就没必要往下看了,下面是介绍没有证书的情况下也能体验,我们强大的openssl也是可以生成证书的,之后访问https://localhost(哎,什么域名都是ok的啦)

    1、使用DOS命令进入Apache bin目录

    因为该目录才有libeay32.dllopenssl.exessleay32.dll等文件。

    2、设置openssl环境变量

    使用DOS命令在bin目录下执行命令:set OPENSSL_CONF=..confopenssl.cnf,通过此命令设置openssl的环境变量,如果不执行此命令,后面的操作会报错。

    set OPENSSL_CONF=..confopenssl.cnf
    

    3、生成server.key

    DOS下执行命令:openssl genrsa 4096 > server.key,执行了这个命令,会在bin目录下生成server.key。注释:这是使用128位的RSA算法生成的密钥,还可以使用其他的算法生成密钥,相关的用法可以使用搜索引擎搜索。4096是密钥的长度,这个值最好使用4096以上的值,必须是2的整数次方。

    openssl genrsa 4096 > server.key
    

    4、生成未签署的server.csr

    DOS命令下执行:openssl req -new -key server.key > server.csr,这个命令使用生成的密钥文件 server.key生成证书请求文件server.csr,执行这一命令之后,后面还要输入很多参数。

    openssl req -new -key server.key > server.csr
    
    
    Country Name (2 letter code) [AU]:CN   ISO国家代码(只支持两位字符)
    State or Province Name (full name) [Some-State]:Hu Bei  所在省份
    Locality Name (eg, city) []:Wu Han    所在城市
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:Mark Company  公司名称
    Organizational Unit Name (eg, section) []:IT   组织名称
    Common Name (e.g. server FQDN or YOUR name) []:www.phpmarker.com 申请证书的域名
    Email Address []:phpmarker@163.com     管理员邮箱
    Please enter the following ‘extra’ attributes
    to be sent with your certificate request
    A challenge password []:        交换密钥 可空
    An optional company name []:    可空
    

    5、签署服务器证书文件server.crt

    DOS命令下执行:openssl req -x509 -days 365 -key server.key -in server.csr > server.crt,这个命令使用第三步和第四步生成的密钥和证书来生成证书server.crt,-days参数表示证书有效期,单位为天,x509表示生成的是X.509证书。

    openssl req -x509 -days 365 -key server.key -in server.csr > server.crt
    

    6、查看证书详细信息

    DOS下执行命令:openssl x509 -noout -text -in server.crt,这个命令可以查看证书的详细信息

    openssl x509 -noout -text -in server.crt
    

    7、开始部署

    执行上面所有的命令之后,在Apache的bin目录下生成了三个文件server.keyserver.csrserver.crt。可以将其移动到专门放证书的文件夹。
    修改httpd-ssl.conf,以下是我的配置:

    Listen 443
    SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
    SSLPassPhraseDialog  builtin
    
    #SSLSessionCache         "dbm:D:/wamp/bin/apache/apache2.4.9/logs/ssl_scache"
    #SSLSessionCache        "shmcb:D:/wamp/bin/apache/apache2.4.9/logs/ssl_scache(512000)"
    #SSLSessionCacheTimeout  300
    
    
    <VirtualHost _default_:443>
    
    DocumentRoot "e:/kuaipan/code/win_www"
    ServerName localhost:443
    ServerAdmin admin@example.com
    ErrorLog "D:/wamp/bin/apache/apache2.4.9/logs/ssl-error.log"
    TransferLog "D:/wamp/bin/apache/apache2.4.9/logs/sll-access.log"
    SSLEngine on
    
    SSLCertificateFile "D:/wamp/bin/apache/apache2.4.9/conf/ssl/server.crt"
    SSLCertificateKeyFile "D:/wamp/bin/apache/apache2.4.9/conf/ssl/server.key"
    SSLCertificateChainFile "D:/wamp/bin/apache/apache2.4.9/conf/ssl/server.crt"
    
    </VirtualHost>
    

    8、重启Apache服务器

    重启后浏览器访问https://localhost
    https_localhost.png

    可用,但是https是个叉,不像上面的图是绿色的。出现这种情况,因为我们自己制作的证书,不被浏览器所信赖。我们查看证书详细情况:

    https_ca.png

  • 相关阅读:
    thinkphp3.2.3版本在windows本地apache环境运行正常,上传到centos服务器apache环境中出现:thinkphp 上传根目录不存在!请尝试手动创建:uploads/
    [POI2013]LUK-Triumphal arch
    【背包问题】
    2016 acm香港网络赛 A题. A+B Problem (FFT)
    tomcat部署项目的三种方式
    仿照ArrayList自己生成的MyList对象
    使用回调函数实现回文判断
    关于angularjs的model的一些问题
    关于使用Tomcat服务器出现413错误的解决办法(Request Entity Too Large)
    关于angularjs+typeahead的整合
  • 原文地址:https://www.cnblogs.com/malinlin/p/5071747.html
Copyright © 2011-2022 走看看