最近开发项目的时候,由于要用到https协议,所以就在网上找了一下教程,但是网上的教程大部分都感觉有点问题,所以在这里总结一下,

首先,我是用的免安装的apache服务器,并不是用的集成的那种像xampp服务器,首先,需要把conf文件夹下的httpd.conf文件打开,把

LoadModule ssl_module modules/mod_ssl.so 
Include conf/extra/httpd-ssl.conf
这两行的前面的分号去掉,
然后把httpd-ssl.conf文件打开,修改
SSLCertificateFile "C:/Apache2.2/conf/server.crt" 
SSLCertificateKeyFile "C:/Apache2.2/conf/server.key" 
把里面的值改为apache的安装目录
打开管理员命令行窗口,win+x,win就是指那个键盘上
有windows图标的按键,用快捷方式打开管理员的命令行窗口以后,定位到apache服务器安装的conf目录,这里我的apahce服务器安装在D盘
的Aserver文件夹下,所以先输入D:就可以定位到D盘的根目录下,然后输入cd aserver就可以定位到aserver文件夹,然后 cd apache24就可以定
位到apache的文件夹,再输入 cd conf 就可以了,然后输入:set OPENSSL_CONF=..\conf\openssl.cnf,就可以设置环境变量了,然后 cd.. ,返回
上一级目录,再输入cd bin 就可以定位到bin文件夹,
接下来:
生成服务器的私钥 :openssl genrsa  -out server.key 1024
生成签署申请-new  –out server.csr -key server.key -config ..\conf\openssl.cnf 
会出现一系列让你填的信息:比如国家,省份,城市,等一列的信息,其中最重要的是common name 这个要与apahce httpd.conf文件中的Server name
一致,这里我的是 locahost:80,
然后是通过CA为网站服务器签署证书
1、生成CA私钥 
-out ca.key 1024 
2、利用CA的私钥产生CA的自签署证书 
 -new -x509 -days 365 -key ca.key -out ca.crt -config ..\conf\openssl.cnf //意思是有效期是365天
   common name 仍为localhost:80

3、CA为网站服务器签署证书

  首先我们需要在bin文件夹下面新建一个demoCA文件夹,在里面创建newcerts文件夹,然后在denmoCA文件夹下面创建index.txt文件,serial文件,没有后缀名

里面的内容为01,接下来执行下面的代码:

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

然后会有一些提示,按它的提示操作就行

然后将bin文件夹下 server.crt,server.key复制到apache的conf文件夹下

这个时候重启apache服务器的时候提示失败,我看事件日志的时候上面提示443端口重复监听,所以这个时候需要修改extarl文件夹下的httpd-ssl,conf文件了里面的监听

端口,把里面的443全部改成没有被监听的端口就行,这里我用的是1000,修改完,保存,重启apahce服务器就可以了,但是由于这里的CA证书并不是官方认证的,所以

在浏览器输入的时候,会提示证书有问题。直接点击继续访问就可以了。