原文地址:http://blog.youkuaiyun.com/decajes/article/details/41706739
2、修改两个配置文件,一个为conf/httpd.conf,另一个为conf/extra/httpd-ssl.conf
(a)修改httpd.conf
为了使apache启动的时候调用ssl的服务,我们需要在配置文件中做一些修改。找到以下两句话并去掉注释,则可以开启apache的时候启动ssl服务:
#LoadModule ssl_module modules/mod_ssl.so
#Include conf/extra/httpd-mpm.conf
(b)修改httpd-ssl.conf
修改的主要是我们生成的证书的路径(我把路径设置为conf下的key目录,把生成的证书放进这个目录,接下来会说怎么生成)
SSLCertificateKeyFile xxx/conf/key/server.key (服务器私钥的位置)
SSLCACertificateFile xxx/key/conf/ca.crt (CA根证书的位置,进行客户端验证时需要)
#SSLVerifyClient require (去掉前面的‘#’号,进行客户端验证时需要)
#SSLVerifyDepth 1 (去掉前面的‘#’号,把10改为1,进行客户端验证时需要)
打开httpd-ssl.conf,ctrl+f 搜关键字修改就可以了。
3、生成服务端和客户端的证书
win+R:cmd进入命令行,进去apache安装目录的bin文件夹,执行命令设置一下openssl的配置:
setOPENSSL_CONF=..\conf\openssl.cnf
执行命令:openssl genrsa -out server.key 1024,在目录bin下生成server.key文件
执行命令:openssl req -new -out server.csr -key server.key
(c)生成CA私匙
执行命令:openssl gensa -out ca.key 1024,在目录bin下生成ca.key文件
执行命令:openssl req -new -x509 -days 365 -key ca.key -out ca.crt-conf..\conf\openssl.cnf,在目录bin下生成ca.crt文件
执行命令:openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key
4、把当前文件夹中的server.crt,server.key和ca.crt文件复制到步骤2所说的目录conf/key下
5、为了方便,我把httpd.conf和httpd-ssl.conf文件中的ServerName分别改为
127.0.0.1:8080 (有些软件会占用80这个端口,所以改成8080)
127.0.0.1:443
6、重启apache,执行两个命令net stop Apache2.2和net start Apache2.2,假如遇到apache无法启动的时候,可以选我的电脑-》管理-》事件检查器-》应用程序日志,打开apache的错误报告,会有提示哪里出错了,一般都可以找到原因。
7、打开IE,输入127.0.0.1:8080出现It works。输入https://127.0.0.1:443的时候会弹出一个验证证书的地方,点击取消发现没能成功。上网查了一下,原来还要生成一个 .pfx 的证书并导入到IE中去。
打开刚才的命令行,执行命令openssl pkcs12 -export -in ca.crt -inkey ca.key -out ca.pfx,在bin下面生成一个ca.pfx的文件,中间有个输入密码的过程,要记住这个密码。打开IE浏览器-》工具-》Internet选项-》内容-》证书,按照提示导入,这里要输入刚才生成 .pfx 过程中输入的密码。导入之后,打开浏览器输入https://127.0.0.1:443出现 It works。搞掂!!!
多谢博主的文章,完全运行通过,做一点小小的补充来完善:
8.在步骤7中生成的.pfx是CA的个人证书,里面有公钥和私钥,一般情况下这个证书是不应该被安装到浏览器中的,安装到浏览器中的证书应该是CA颁发的客户端证书,颁发证书的过程和颁发服务器证书的过程一样,最后生成客户端证书命令如下:
openssl pkcs12 -export -in client.crt -inkey client.key -out client.pfx,client.crt和client.key都是用 步骤3 中类似的命令生成的。生成以后安装到浏览其中,就可以了。注意:在生成client.csr文件时,输入的Common Name就是用户自己的名字。
(注:本文为我在搭建环境中的大概过程,纯粹记录一下工作过程,并不深入理解各个点)
版权声明:本文为博主原创文章,未经博主允许不得转载。