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。密钥/证书生成
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
OpenSSL密钥/证书制作
最新推荐文章于 2024-05-13 17:29:35 发布