转载: http://hi.baidu.com/%C6%A6%D7%D3%B2%CC/blog/item/efc17e1e1ebecdf11bd576ca.html 供大家学习:

本方法仅适应于已经架设了证书服务器的前提下。

本实例的环境为 Windows Server 2003,Microsoft Windows 证书服务,Apache 2.2.8,OpenSSL 0.9.8,所有操作是在test.tj1844.cn的服务器上面进行的操作。

平常在网上看到架设SSL服务器,不过都是本机生成证书,本机给本机签名,仅仅是测试而已。现在公司里面已经有证书服务器了,心痒痒的,总是觉得WEB服务应该要和现有的证书发布结合起来使用才舒服。经过许久测试和搜索资料,终于成功的实现了由Windows给Apache服务器颁发证书,同理可以适用于所有适用OpenSSL加密的应用。

具体步骤如下:

1.首先在命令提示行下面定位到OpenSSL所在的目录,确认该目录下面同时有文件OpenSSL.cnf;

当前是在C:\Apache2\Conf 下面,OpenSSL.exe文件是从C:\Apache2\Bin 下面复制过来的。

2.执行如下命令生成RSA密钥 (private key);

  1. openssl genrsa -des -out server.key 1024  
  2. 按照提示设置密码 

此处也可以使用 openssl genrsa -out ca.key,值得注意的是如果此处使用 openssl genrsa -des3 -out server.key 1024 来生成RSA密钥的话,在Windows平台下面可能出现错误,比如在Apache下面会提示“SSLPassPhraseDialog builtin is not supported on Win32”。

3.生成有效期为10年的证书请求文件server.csr

 

  1. openssl req -new -days 3650 -key server.key -out server.csr -config openssl.cnf 

 

4.根据提示输入:

如果提示为Enter pass phrase for server.key:,则此处需要输入在第二步时的密码,如果没有提示,则可以参考下面的输入修改对应项即可。

Country Name (2 letter code) [AU]:CN
State or Province Name (full name) []:Hunan
Locality Name (eg, city) []:Changde
Organization Name (eg, company) []:Tj1844.cn Studio.
Organizational Unit Name (eg, section) []:Tsaijun
Common Name (eg, YOUR name) []:test.tj1844.cn
Email Address []:Tj1844@Tj1844.CN

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:Tj1844.cn Studio.

5.申请证书

到证书服务器上面申请证书,打开证书申请页面 --> 申请一个证书 --> 高级证书申请 --> 使用 base64 编码的 CMC 或 PKCS #10 文件提交 一个证书申请,或使用 base64 编码的 PKCS #7 文件续订证书申请。 --> 浏览要插入的文件选择第三步生成的server.csr文件(或者用记事本之类的文本编辑器打开粘贴到保存的申请区域) --> 证书模板选择 Web服务器 --> 提交 --> 下载证书和证书链,保存为 server.crt 和 ca.p7b

6.将证书链文件由DER格式转换成PEM格式

如果选择base64编码的用

 

  1. openssl pkcs7 -in ca.p7b -out ca.crt -print_certs  

如果选择DER编码,用
 

  1. openssl pkcs7 -in ca.p7b -inform DER -print_certs -out ca.pem
  2. ren ca.pem ca.crt  

7.如果在证书服务器上保存证书时,保存为server.crt,就跳过这步.如果保存为CER文件,将服务器证书文件由DER格式转换成PEM格式

  1. openssl x509 -in server.cer -inform DER -out server.pem
  2. ren server.pem server.crt 

 8.设置服务器

这个时候请确认在目录C:\Apache2\Conf 下有如下文件,其中 Default 和 Extra 是目录,如果可能的话,请注意备份下面的文件:

ca.crt
ca.p7b
charset.conv
default
extra
httpd.conf
magic
mime.types
openssl.cnf
openssl.exe
server.cer
server.crt
server.csr
server.key

9.设置服务器

首先打开 C:\Apache2\Conf\httpd.conf 将下面两处的 # 去掉

#LoadModule ssl_module modules/mod_ssl.so
#Include conf/extra/httpd-ssl.conf

然后打开 C:\Apache2\Conf\extra\httpd-ssl.conf 对下面的几处进行适当修改

SSLCertificateFile C:/Apache2/conf/server.crt
SSLCertificateKeyFile C:/Apache2/conf/server.key
SSLCertificateChainFile C:/Apache2/conf/ca.crt

10.对上述修改进行保存,然后打开 https://test.tj1844.cn 即可看到效果。

 

如果有什么错误,请根据提示操作,认真分析。

 

openssl pkcs7 -in ca.p7b -inform DER -print_certs -out ca.pem
ren ca.pem ca.crt