Security &引用;openssl编程简介;文章过期证书

Security &引用;openssl编程简介;文章过期证书,security,openssl,ssl-certificate,x509,Security,Openssl,Ssl Certificate,X509,我是openSSL库和PKI的新手。 我有一个简单的问题要问openSSL专家 有人知道如何为本文中的代码示例创建证书吗 Eric Rescorla的“OpenSSL编程简介(第I/II部分)” www.rtfm.com/openssl-examples/part1.pdf www.rtfm.com/openssl-examples/part2.pdf 我已从下载源代码 问题是证书已过期,我不知道如何创建新的根证书 如何创建根证书?如何为客户端和服务器应用程序创建证书?我应该使用哪种加密算法?

我是openSSL库和PKI的新手。 我有一个简单的问题要问openSSL专家

有人知道如何为本文中的代码示例创建证书吗 Eric Rescorla的“OpenSSL编程简介(第I/II部分)”

www.rtfm.com/openssl-examples/part1.pdf

www.rtfm.com/openssl-examples/part2.pdf

我已从下载源代码 问题是证书已过期,我不知道如何创建新的根证书

如何创建根证书?如何为客户端和服务器应用程序创建证书?我应该使用哪种加密算法? 据我所知,我应该做以下工作:

  • 创建密钥对。秘密和公开密钥
  • 创建证书请求(p10格式)
  • 创建自签名根证书(x509格式)
文章中的细节不清楚

以下是我尝试创建证书的方式:

1) 正在创建CA私钥和证书请求: openssl req-newkey rsa-keyout./ca_key.pem out.pem-out./ca_req.pem-days 1095-passin pass:“密码”-根据“有关ca的一些信息”-扩展v3_ca

2) 创建自签名CA证书 openssl ca-create_serial-in-ca_req.pem-out root.pem-days 1095-passin pass:“密码”-自签名-扩展v3_ca

3) 生成服务器私钥和证书请求 openssl req-newkey rsa-keyout server_key.pem out server_req.pem-days 1095-passin pass:“密码”-subc“关于服务器的一些信息”

4) 创建服务器证书(此证书不是自签名的。此证书由CA私钥签名) openssl ca-in server_req.pem-out server.pem-passin pass:“密码”

5) 生成用户私钥并请求证书 openssl请求-新密钥rsa-密钥输出用户\u key.pem out用户\u req.pem-第1095天-密码传递:“密码”-根据“有关客户端的一些信息”

6) 创建用户证书(此证书不是自签名的。此证书由CA私钥签名) openssl ca-in user_req.pem-out client.pem-passin pass:“密码”

我不确定这里的“rsa”算法。我可能会使用其他算法

所以我有root.pem,server.pem,client.pem 我将客户机密钥和证书放入client.pem server.pem也是如此。(与文章样本证书中的方式相同。)

但是,当我尝试使用这些新生成的证书启动服务器时,出现了一个错误: “无法打开DH文件。”

当我将旧DH文件放入当前文件夹并启动服务器时。 (dh1024.pem是什么?)

下一步。我启动客户端时,收到另一条错误消息:“Cetrificate未验证。”

错误代码是20。x509_vfy.h中代码20的说明为“无法在本地获取颁发者证书”

所有这些都意味着我创建的证书不正确。 我不知道如何正确地做这件事

有人知道吗?

错误代码为20“无法在本地获取颁发者证书”是因为没有CA证书。 客户机和服务器证书都需要由公共CA签名。

这就是解决方案。 也许它不是最优的,但它是有效的。问题解决方案的唯一区别是选项:“-des3 1024”


这是清楚的。我知道证书已过期,我的新证书不正确。问题是如何创建正确的证书、密钥和所有类似的东西。@Sauron。希望这个链接能有所帮助
#!/bin/sh

alg="rsa"

ossl="openssl"

passwd="password"

#certificate autority folder
caFolder="./demoCA"

#delete old certificates, CA folder and keys 
rm -rf *.pem

rm -rf $caFolder

#create folder structure
mkdir $caFolder
mkdir "$caFolder/private"
mkdir "$caFolder/newcerts"

#generate RSA private key for CA
$ossl genrsa -out ca_key.pem 1024

#Creating certificate request:
$ossl req -new -key ca_key.pem -out ./ca_req.pem -days 1095 -passin pass:$passwd  -passout pass:$passwd \
-subj /C=RU/ST=Moscow/L=Moscow/O=company/OU=TestCAs/CN=TestCA/emailAddress=TestCA@company.ru -extensions v3_ca

cp ca_key.pem "$caFolder/private/cakey.pem" 

touch "$caFolder/index.txt"

#Create self signed CA certificate 
$ossl ca -create_serial -in ca_req.pem -out ca_cert.pem -days 1095 -passin pass:$passwd -selfsign -extensions v3_ca -notext
cp ca_cert.pem "$caFolder/cacert.pem"


#generate SERVER private key and request for certificate 
$ossl genrsa -out server_key.pem -passout pass:$passwd -des3 1024

$ossl req -new -key server_key.pem  -passin pass:$passwd \
-passout pass:$passwd -out server_req.pem -days 1095 \
-subj /C=RU/ST=Moscow/L=Moscow/O=company/OU=SSLServers/CN=localhost/emailAddress=SSLServer@company.ru  

#create SERVER certifiate (this certificate is not self signed. This certificate signed by CA private key)
$ossl ca -in server_req.pem -out server_cert.pem -passin pass:$passwd -notext


#generate RSA private key for client
$ossl genrsa -out user_key.pem -passout pass:$passwd -des3 1024

#generate request certificate for client
$ossl req -new -key user_key.pem -out user_req.pem -days 1095 \
-passin pass:$passwd -passout pass:$passwd \
-subj /C=RU/ST=Moscow/L=Moscow/O=company/OU=Clients/CN=Client/emailAddress=Client@company.ru 

#create user certifiate (this certificate is not self signed. This certificate signed by CA private key) 
$ossl ca -in user_req.pem -out user_cert.pem -passin pass:$passwd -notext

#generate  DH   param
$ossl dhparam -out dh1024.pem 1024

cat ./user_key.pem ./user_cert.pem > client.pem  

cat ./server_key.pem  ./server_cert.pem  > server.pem

cp ./ca_cert.pem root.pem