我是openSSL库和PKI的新手 . 我对openSSL专家有一个简单的问题 .
在本文“Eric Rescorla的OpenSSL编程简介(第I / II部分)”中,是否有人知道如何为代码示例创建证书
www.rtfm.com/openssl-examples/part1.pdf
www.rtfm.com/openssl-examples/part2.pdf
我从http://www.rtfm.com/openssl-examples下载了源代码 . 问题是证书已过期,我不知道如何创建新的根证书 .
如何创建根证书?如何为客户端和服务器应用程序创建证书?我应该使用哪种加密算法?据我所知,我shuld做以下事情:
-
创建密钥对 . 秘密和公钥 .
-
创建证书申请(p10格式) .
-
创建自签名根证书(x509格式) .
细节不清楚 .
这就是我尝试创建证书的方式:
1)创建CA私钥和证书请求:openssl req -newkey rsa -keyout ./ca_key.pem out.pem -out ./ca_req.pem -days 1095 -passin pass:“password”-subj“关于CA的一些信息” -extensions v3_ca
2)创建自签名CA证书openssl ca -create_serial -in ca_req.pem -out root.pem -days 1095 -passin pass:“password”-selfsign -extension v3_ca
3)生成服务器私钥并请求证书openssl req -newkey rsa -keyout server_key.pem out server_req.pem -days 1095 -passin pass:“password”-subj“some information about information”
4)创建服务器证书(此证书不是自签名的 . 此证书由CA私钥签名)openssl ca -in server_req.pem -out server.pem -passin pass:“password”
5)生成用户私钥并请求证书openssl req -newkey rsa -keyout user_key.pem out user_req.pem -days 1095 -passin pass:“password”-subj“some information about information”
6)创建用户证书(此证书不是自签名的 . 此证书由CA私钥签名)openssl ca -in user_req.pem -out client.pem -passin pass:“password”
我不确定这里的“rsa”算法 . 可能是我shuold使用其他algorthm .
所以我有root.pem,server.pem,client.pem我把客户端密钥和证书放到client.pem和server.pem一样 . (与文章样本证书中的方式相同 . )
但是,当我尝试使用这些新生成的证书启动服务器时,我有一个错误:“无法打开DH文件 . ”
当我把旧的DH文件放到当前文件夹并且服务器启动时 . (dh1024.pem这是什么?)
下一步 . 我启动客户端,我收到另一条错误消息:“Cetrificate不验证 . ”
错误代码为20. x509_vfy.h中代码20的解释是“无法在本地获取颁发者证书”
所有这些意味着我已经错误地创建了证书 . 我不知道如何正确地做到这一点 .
有人有想法吗?
2 回答
这是解决方案 . 可能它不是最佳但它有效 . 与问题解决方案的唯一区别是选项:“ - dedes 1024”
由于没有CA证书存在,导致错误代码为20“无法在本地获取颁发者证书” . 客户端和服务器证书都需要由公共CA签名 .