我正在尝试了解有关 X.509 数字证书的更多信息。周围似乎有很多矛盾之处。我正在使用Bouncy Castle
生成密钥对,使用
public static void SaveToFile(X509Certificate newCert, AsymmetricCipherKeyPair kp, string filePath, string certAlias, string password)
{
var newStore = new Pkcs12Store();
var certEntry = new X509CertificateEntry(newCert);
newStore.SetCertificateEntry(certAlias, certEntry);
newStore.SetKeyEntry(certAlias,
new AsymmetricKeyEntry(kp.Private), new[] { certEntry });
using (var certFile = File.Create(filePath))
newStore.Save(certFile, password.ToCharArray(), new SecureRandom(new CryptoApiRandomGenerator()));
}
这会将生成的证书保存到磁盘。有些文章告诉我们不需要密码保护证书,因为那里没有PRIVATE KEY
存储证书。然后这篇文章说证书确实包含PRIVATE KEY
.
我想我有两个问题希望能帮助我理解这一点:
- 如果我以这种方式生成我的密钥,密码是否应该与密码相同
PRIVATE KEY
? - 我是否分发 X.509 证书以证明它
PUBLIC KEY
是我的(在证书中与我的名字配对),或者证书应该像自签名证书一样安全和保密,PRIVATE KEY
还有什么用途?