Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6551014
  • 博文数量: 915
  • 博客积分: 17977
  • 博客等级: 上将
  • 技术积分: 8846
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-26 09:59
个人简介

一个好老好老的老程序员了。

文章分类

全部博文(915)

文章存档

2022年(9)

2021年(13)

2020年(10)

2019年(40)

2018年(88)

2017年(130)

2015年(5)

2014年(12)

2013年(41)

2012年(36)

2011年(272)

2010年(1)

2009年(53)

2008年(65)

2007年(47)

2006年(81)

2005年(12)

分类: PHP

2014-09-30 13:10:55

Apache2.4配置SSL后启动报错:AH02577: Init: SSLPassPhraseDialog builtin is not supported on Win32 (key file C:/Apache24/conf/server.key)
原因是因为Win32不支持加密。启动Apache时就产生了上述错误,如何解决呢?

在解决问题之前,先看看产生问题的环境,本人研究https环境是:

1、httpd-2.2.15-win32-x86-openssl-0.9.8m-r2.msi

2、windows2003

3、Openssl-windows-0.9.8k out32dll

基于ssl基础知识,网上很多,这里就不多说了,自己去查阅吧。

 

问题的产生过程(自签证书):openssl req -new -x509 -days 360 -keyout server.key -out server.crt -subj /CN=testby -config D:/soft/apache/Apache2.2/conf/openssl.cnf

在执行过程中要求输入密码,输入密码后,没有任何问题,出现server.key 及server.crt文件,把两个文件移动到conf文件夹下,

运行apache httpd -k start 发现,不能启动,查看Logs发现:

SSLPassPhraseDialog builtin is not supported on Win32 (key file D:/soft/apache/Apache2.2/conf/server.key)。

原来Win32平台不支持加密密钥,晕了。。。,客户非得使用windows作为服务器,咋办呢?

 

问题解决思路:既然不支持加密,就把server.key的文件解密,同时注释掉httpd-ssl.conf文件中SSLPassPhraseDialog 。

1、复制server.key 为server.key.org

2、对server.key.org解密 openssl rsa -in server.key.org -out server.key s输入密码后解密成功

3、打开httpd-ssl.conf 找到SSLPassPhraseDialog  builtin 在前面加上#

好了,重新httpd -k start 成功运行apche,问题解决。

PS:使用OpenSSL生成证书

x509证书一般会用到三类文,keycsrcrt

Key 是私用密钥openssl格,通常是rsa算法。

Csr 是证书请求文件,用于申请证书。在制作csr文件的时,必须使用自己的私钥来签署申,还可以设定一个密钥。

crtCA认证后的证书文,(windows下面的,其实是crt),签署人用自己的key给你签署的凭证。 

 

1.key的生成 

openssl genrsa -des3 -out server.key 2048 

这样是生成rsa私钥,des3算法,openssl格式,2048位强度。server.key是密钥文件名。为了生成这样的密钥,需要一个至少四位的密码。可以通过以下方法生成没有密码的key:

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

 

server.key就是没有密码的版本了。 

 

2. 生成CAcrt

openssl req -new -x509 -key server.key -out ca.crt -days 3650 

生成的ca.crt文件是用来签署下面的server.csr文件。 

 

3. csr的生成方法

openssl req -new -key server.key -out server.csr 

需要依次输入国家,地区,组织,email。最重要的是?有一个common name,可以写你的名字或者域名。如果为了https申请,这个必须和域名吻合,否则会引发浏览器警报。生成的csr文件交给CA签名后形成服务端自己的证书。 

 

4. crt生成方法

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

openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt

输入key的密钥后,完成证书生成。-CA选项指明用于被签名的csr证书,-CAkey选项指明用于签名的密钥,-CAserial指明序列号文件,而-CAcreateserial指明文件不存在时自动生成。

最后生成了私用密钥:server.key和自己认证的SSL证书:server.crt

证书合并:

cat server.key server.crt > server.pem


 

阅读(6731) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~