我是 openSSL 库和 PKI 的新手。我对 openSSL 专家有一个简单的问题。
有谁知道如何在 Eric Rescorla 撰写的本文“OpenSSL 编程简介(第一部分/第二部分)”中为代码示例创建证书
www.rtfm.com/openssl-examples/part1.pdf
www.rtfm.com/openssl-examples/part2.pdf
我从http://www.rtfm.com/openssl-examples下载了源代码 问题是证书已过期,我不知道如何创建新的根证书。
如何创建根证书?如何为客户端和服务器应用程序创建证书?我应该使用哪种加密算法?据我了解,我应该执行以下操作:
- 创建密钥对。密钥和公钥。
- 创建证书请求(p10 格式)。
- 创建自签名根证书(x509 格式)。
文章中的细节不清楚。
这就是我尝试创建证书的方式:
1)创建CA私钥和证书请求: openssl req -newkey rsa -keyout ./ca_key.pem out.pem -out ./ca_req.pem -days 1095 -passin pass:"password" -subj "some information about CA" -扩展 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 server"
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 client"
6)创建用户证书(此证书不是自签名的。此证书由 CA 私钥签名) openssl ca -in user_req.pem -out client.pem -passin pass:"password"
我不确定这里的“rsa”算法。可能是我应该使用其他算法。
所以我有root.pem、server.pem、client.pem 我把客户端密钥和证书放到client.pem 和server.pem 一样。(与文章样本证书中的方式相同。)
但是,当我尝试使用这些新生成的证书启动服务器时,出现错误:“无法打开 DH 文件。”
当我将旧 DH 文件放入当前文件夹并启动服务器时。(dh1024.pem 是什么?)
下一步。我启动客户端并收到另一条错误消息:“证书未验证。”
错误代码为 20。x509_vfy.h 中代码 20 的说明为“无法在本地获取颁发者证书”
所有这些都意味着我错误地创建了证书。我不知道如何正确地做到这一点。
有人有想法吗?