win32编译openssl并生成C/S模式的证书

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.

至此,所有的证书文件都生成成功了。



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值