现象:
报错1:Apache 服务由于下列服务特定错误而终止: 函数不正确。
报错2:Apache2.4 服务启动失败: 系统找不到指定的文件。
报错3:apache/conf/server.crt' does not exist or is empty
分析:
经检查在conf目录下没有正确的,server.crt与server.key文件。
解决办法:
在windows环境下,手动给APACHE生成相关的证书与KEY
提前准备工作:
修改apache配置文件
在httpd.conf中找到下面两行去掉前面的注释 #
LoadModule ssl_modulemodules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
在httpd-ssl.conf中:
SSLCertificateFile"D:/Apache/Apache/conf/server.crt"
SSLCertificateKeyFile"D:/Apache/Apache/conf/server.key"
其中“D:/Apache/Apache/conf”请自行修改为你们安装apache目录
创建文件及目录
在bin目录下创建demoCA文件夹,打开demoCA文件夹在目录下创建,两个文件:
index.txt、serial (注意serial没有文件后缀,要创建时注意不要建成serial.txt了)。
右击用记事本打开serial,输入内容01,保存。
生成OpenSSL证书的步骤:
1:运行-cmd-cd 切换到bin 目录
2:执行以下代码,得到CA.key(1024位):
openssl genrsa -out ca.key 1024
3:接着执行以代码,通过ca私钥ca.key得到CA.csr:
openssl req -new -x509 -days 365 -key ca.key -out ca.crt -config ..\conf\openssl.cnf
4:执行以下代码,得到1024位的server.key
openssl genrsa -out server.key 1024
5:执行以下代码,通过服务器server.key生成server.csr
openssl req -new -out server.csr -key server.key -config ..\conf\openssl.cnf
在些过程中,需要填一些国家、省份、城市、公司等信息,其中CommonName是必填项,填写域名或IP地址,即为需要设成下载证书才能访问的url,也就是我们要设定的https网站
6:执行以下代码,以CA为服务器签署证书,生成server.crt
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config..\conf\openssl.cnf
7:最后将生成的 server.crt,server.key复制到apache的conf文件夹下,到此服务器需要私钥和服务器证书已存在,可以正常启动ssl服务,apache服务正常启动
最后,因为SSL证书的应用还有其它知识。本文只针对windows下安装的apache因为启用了SSL而又无有效证书造成的不能启动问题。