我正在按照以下步骤使用openssl生成证书和pkcs12文件:
//Create key
openssl genrsa -aes256 -out mykey.key 2048
//Create csr
openssl req -config openssl.cnf -key mykey.key -new -sha256 -out mycsr.csr
//Create cert
openssl ca -config openssl.cnf -extensions usr_cert -days 375 -notext -md sha256 -in mycsr.csr -out mycert.pem
//Create pkcs12 file
openssl pkcs12 -export -in mycert.pem -inkey mykey.key -out myp12.p12 -name NAME -CAfile ca.pem -caname MYCA
虽然我可以使用生成的证书来连接到服务器,但对于实际创建的内容却感到困惑。我假设公钥/私钥对由证书本身和私钥表示,但是最近我读到,需要创建私钥才能创建csr。所以我的问题是:
1:公钥是在csr创建过程中隐式创建的吗?
2:如果创建了公钥,为什么我的pkcs12文件不需要它?还是我最初认为证书是公共密钥是正确的?
我问这个问题的主要重点是避免潜在地暴露我的私钥。感谢您提前提出任何答案。
答案 0 :(得分:0)
您似乎可以在此线程上找到有关第一个问题的所有答案
Use RSA private key to generate public key?
关于第二个问题... X509证书不是公钥本身,但是X509证书将公钥绑定到身份(证书的主题)。 因此,当您创建pkcs#12文件时,您将在证书和私钥中放入证书,然后在命令中放入Certificate Autority证书。
我希望它能有所帮助。
Seba