这个……很多人都写了,但是……我还是写写我自己的版本。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
这个可以验证证书是否签署成功。
相关