我有点困惑这个命令如何从其他清晰的证书中生成自签名证书OpenSSL 教程:
openssl req \
-x509 -nodes -days 365 -sha256 \
-newkey rsa:2048 -keyout mycert.pem -out mycert.pem
我知道这会生成一个自签名 x509 证书请求,而不是由 CA 签名的证书请求,但是私钥位于生成的证书文件中,并且听起来很可疑,因为私钥不应与证书一起发送。
这是一个错误还是应该如何工作?
答案1
我知道这会生成一个自签名 x509 证书请求,而不是由 CA 签名的证书请求,但是私钥位于生成的证书文件中,并且听起来很可疑,因为私钥不应与证书一起发送。
它不会发送并附有证书。
证书和文件不是一回事。TLS 软件永远不会将实际文件原封不动地发送到任何地方——它读该文件,解释其内容,并加载它想要加载的数据。当您拥有包含多个项目的 PEM 格式文件时,程序很容易知道一个项目何时结束,另一个项目何时开始。
在这种情况下,使用 .pem 文件的程序将从中加载一个“证书”对象和一个“私钥”对象,此后原始来源不再相关 - 它可能是一个 .pem 文件、两个单独的 .pem 文件、一个 DER .crt 文件、一个 PKCS#12 .pfx 文件,或者甚至根本不是一个文件。该程序只关心现在内存中的实际证书 - 如果需要发送证书,它只会发送该证书。