1. 编译OpenSSL
1.1 安装Perl环境支持,这里安装的是ActivePerl-5.6.1.629-MSWin32-x86-multi-thread[可能需要手动配置环境变量 如D:/perl/bin]
1.2 打开控制台程序,在openssl解压后的目录下执行Perl Configure VC-WIN32命令,注意,一定要在这个目录下执行该命令,否则找不到Configure文件,当然,你也可以指定完整的Configure文件路径。顺利通过。
1.3 根据openssl的帮助说明,在解压目录下执行ms\do_masm(和ms_\do_ms)命令,成功通过。[这两个步骤不能颠倒,否则会报错]
1.4 配置VC环境变量,我在相同的控制台程序下转到VC所在目录下的vc98\bin目录,执行vcvars32批处理命令,设置VC的环境变量,然后再转到openssl解压包的根目录下。
1.5 在openssl解压目录下执行nmake -f ms\ntdll.mak,如果没有错误,就完成编译了。输出的文件在out32dll里面,包括应用程序的可执行文件、两个Lib文件和两个dll文件。
2. 利用OpenSSL生成C/S模式的证书
C/S模式证书的生成步骤:
一、服务器端
1.生成服务器端的私钥:
Openssl genrsa -des3 -outserver.key 1024
2.生成服务器端证书签名请求文件 csr
Openssl req -configC:\openssl\apps\openssl.cnf -new -key server.key -out server.csr
[这里输入的密码是openssl]
【提示】openssl rsa -in server.key -out server.key
以后可以通过此命令去除key文件的密码,因为当HTTPS启动apache daemon时,总提示输入密码,很烦人,影响开机自动启动服务
二、客户端
1.客户端也同样生成key和csr文件
Openssl genrsa -des3 -outclient.key 1024
Openssl req -new -keyclient.key -out client.csr
三、生成CA证书文件:
1.首先生成CA的key文件:
openssl genrsa -des3 -out ca.key 1024
2.生成CA自签名文件:
Openssl req -new -x509 -keyca.key -out ca.crt [-days 365]
四、利用CA证书进行签名:
用生成的CA证书为server.csr,client.csr 文件签名,利用openssl 中附带的CA.pl文件
1.ca.pl -newca 在提示输入已有的证书文件时,输入上面已生成的ca.crt证书文件;
2. 生成服务端证书文件
Openssl ca -in server.csr-out server.crt -cert ca.crt -keyfile ca.key [-config C:\openssl\apps\openssl.cnf]
这里提示在./demoCA/newcerts目录下找不到任何crt文件,我们把建立一个demoCA/newcerts目录并把ca.crt复制进来。
再来一次,这时可以看到签名已经成功了:
3. 生成客户端证书文件
Openssl ca -in client.csr-out client.crt -cert ca.crt -keyfile ca.key [-config openssl.cnf]
但是客户端的签名居然没有生成成功:
解决方法:删除上次生成的 demoCA目录下的index.txt文件,新建一个index.txt.
至此,所有的证书文件都生成成功了。