OpenSSL密钥/证书制作

  1. OpenSSL源码编译
    1.1. 环境
    WIN7 64bit, vs2013。

    1.2. 编译
    1)下载OpenSSL源码,解压至C盘根目录;
    2)安装ActivePerl;
    3)cmd.exe,进入openssl源码目录,执行命令“perl Configure VC-WIN32”;
    4)执行命令“ms\do_ms”;
    5)切换至目录“C:\Program Files\Microsoft Visual Studio 12.0\VC\bin”,执行命令“vcvars32.bat”;
    6)切换至openssl源码目录,执行命令“nmake -f ms\ntdll.mak”。

    输出目录为out32dll,其中包括可执行文件若干、两个dll和两个lib文件: libeay32.dll, libeay32.lib, ssleay32.dll,ssleay32.lib

    1.3.遇到的问题
    1)“nmake不是内部或外部命令”:
    从“C:\Program Files\Microsoft Visual Studio 12.0\VC\bin”拷贝nmake.exe/cl.exe至openssl源码目录。
    2)“NMAKE : fatal error U1077”:
    cmd中,执行命令:Set Perl5Lib=” C:\Perl64\bin\” ,添加临时环境变量。该命令作用域为Session级的,即关闭cmd后环境变量失效。
    3)cversion.c中的cflags无法识别,未声明”:
    将cversion.c中小写的cflags 改成大写的CFLAGS。

  2. 密钥/证书生成
    1)从“\openssl源码目录\apps\”,拷贝openssl.cnf 至 out32dll目录;
    2)启动cmd,切换至out32dll目录;
    3)执行命令“set OPENSSL_CONF=openssl.cnf”,否则后续操作可能提示找不到openssl.cnf;
    4)制作CA。
    之所以自做CA,是因为CSR文件必须经CA签名后才可形成证书,也就是说需将CSR文件发送到verisign等地方由它验证并交纳一定费用,因此为避免麻烦,自做CA。

    openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf

    执行命令后,会提示要求输入一系列参数,其中有一项“Common Name (eg, YOUR name) []:”,对浏览器而言,应为服务器的域名。例如, 一个从“www.yoursite.com”网站发过来的证书就应该有一个内容是“www.yoursite.com” 的common name,否则浏览器就会提示该证书有问题。

    执行结果:
    生成3个文件:ca.key(CA的密钥文件)、ca.crt(CA的证书文件)、.rand。

    5)生成服务端私钥。

    openssl genrsa -des3 -out server.key 1024

    —>>>输入私钥加密密码。

    命令解析:采用des3加密算法及用户所输入的密码,对私钥文件进行加密。
    执行结果:生成文件:server.key(私钥文件)。
    注:若后续想移除密码,则执行命令:openssl rsa -in server.key -out server.key。

    6)制作Certificate Signing Request(CSR)文件。

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

    执行结果:生成server.csr。

    注:
    1)命令执行过程中要求输入一系列参数,其中“Common Name (eg, YOUR name) []:”最为重要,它代表证书要代表的目标,若为网站申请证书,则应填写响应域名。必须与CA证书的一致,否则后续签名会报错。
    2)输入的参数不能与制作CA证书时的参数完全一样,否则后续使用CA私钥进行签名时会报错:“openssl TXT_DB error number 2 failed to update database”。

    7)制作客户端私钥/CSR文件。方法同上,依次执行命令:

    openssl genrsa -des3 -out client.key 1024
    
    openssl req -new -key client.key -out client.csr -config openssl.cnf

    8)签名。即利用CA证书对server.csr、client.csr进行签名。

    openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
    
    penssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openssl.cnf

    执行结果:生成2个证书文件:server.crt/client.crt和01.pem。
    命令中添加选项“-days 3650”,可指定证书有效时间。

    9)制作.pem文件。即将.crt与.key文件合成一个.pem文件。

    Linux :
    cat server.crt server.key > server.pem
    
    Windows:
    type server.crt server.key > server.pem
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值