Smile 笑容

apache2 openssl win32 配置攻略

这个……很多人都写了,但是……我还是写写我自己的版本。2006年第一版。 (如何在win32+apache服务器上配置ssl)

安装包建议选择 openssl和apache2组装好的win32版安装包。

下载地址: http://hunter.campbus.com/

感谢 Hunter 长久以来的支持。

这个安装过程比较简单。

下载比较新得php,如果你用php的话。

配置好apache之后,记得打开 443端口的监听。

然后你要准备 http://tud.at/programm/openssl.cnf 文件到你的电脑(apache的bin目录下

成功的主要因素在于证书的生成

openssl req -config openssl.cnf -new -out my-server.csr

上面这句用于生成一个证书请求文件(csr)和私密文件(privkey.pem)

openssl rsa -in privkey.pem -out my-server.key

这句话我的理解是移除了一些信息后,保留私密的key部分,就是说根据私密pem文件,取其中的key出来。

openssl x509 -in my-server.csr -out my-server.cert -req -signkey my-server.key -days 365

生成自签署证书

openssl x509 -in my-server.cert -out my-server.der.crt -outform DER

兼容旧版本的浏览器,可以生成der格式的证书。不这么做也行,如果你不需要支持ie4。

以上主要是说如何生成一个服务器证书,现在还有个问题就是如何模仿真正的ca进行一个证书链的管理。

那么开始你要做的是生成一个Your Corp Root CA

这个RootCA也可以取真正的CA处申请签署。只要提供csr就行吧。

我是这么做的,先按前面的办法生成个自己的CA。

这个CA证书在网站上提供下载,可以选择装入信任区域。

然后我用这个CA去签署Server证书。就是和真正的CA一样了(唯一不一样的地方就是我的RootCA没有被预先埋到浏览器里,而实际上各个浏览器差不多都预埋了一些RootCA的证书。只是你还不知道:)

生成Root证书和前面差不多,在Common Name的地方,可以写上 Your Company Root CA 字样。

ca证书准备好后,把ca证书相关文件都复制到ca目录下

包括 pem 私密,注意,一定记得备份这个 pem私密,以后有用,并且要注意保密

在bin目录还要准备一个ca.config

[ ca ]
default_ca              = default_CA
[ default_CA ]
dir                     = .
certs                   = $dir
new_certs_dir           = $dir/ca.db.certs
database                = $dir/ca.db.index
serial                  = $dir/ca.db.serial
RANDFILE                = $dir/random-bits
certificate             = $dir/ca.crt
private_key             = $dir/ca.key
default_days            = 365
default_crl_days        = 30
default_md              = md5
preserve                = no
x509_extensions  = server_cert
policy                  = policy_anything
[ policy_anything ]
countryName             = optional
stateOrProvinceName     = optional
localityName            = optional
organizationName        = optional
organizationalUnitName  = optional
commonName              = supplied
emailAddress            = optional
[ server_cert ]
#subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always
extendedKeyUsage = serverAuth,clientAuth,msSGC,nsSGC
basicConstraints = critical,CA:false

要建立 ca.db.certs 目录

建立文件 ca.db.serial 内容为 01

建立空文件 ca.db.index

openssl ca -config ca.config -out server.crt -infiles server.csr

意思是签署这个证书申请(csr)用ca来签署,生成crt证书。同时可能会生成key文件不?我没测试。

然后把证书和key文件复制到conf目录,注意key文件的保密。

openssl verify -CAfile ca.crt server.crt

这个可以验证证书是否签署成功。

相关

Uniform Server 整合Apache环境专家

win32环境配置apache 1.3.33 php 4.3.11 和eAccelerator 0.92a 加速器

Win32 平台下Apache+SSL 配置指南

在apache下限制每个虚拟主机的并发数

apache2 openssl win32 配置攻略

SHTML - SSI技术