0

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.

これを理解するのに役立つと思われる2つの質問があると思います。

  1. この方法でキーを生成する場合、パスワードは のパスフレーズと同じにする必要がありますPRIVATE KEYか?
  2. が私のものであることを証明するために X.509 証明書を配布しますかPUBLIC KEY(証明書で私の名前とペアになっています)、それとも証明書を と同じように安全かつ秘密に保つ必要がありPRIVATE KEYますか? また、自己署名証明書はどのような用途に使用されますか?
4

2 に答える 2

1

PKCS#12 ファイルには、証明書と秘密鍵の両方を含めることができます。ただし、それらは別個の別個のオブジェクトとして格納されます。証明書自体には、公開鍵が埋め込まれています。証明書には公開鍵のみが含まれているため、これも「公開」と見なされます。秘密にしておくべき秘密鍵が含まれていないため、証明書を自由に配布できます。これが非対称暗号の安全性の基本です。

PKCS#12 ファイルには両方の項目が含まれているため、ファイル内の秘密キーを保護するためにパスワードで暗号化されています。つまり、秘密鍵を使用して、配布する証明書が自分のものであることを証明します。たとえば、ドキュメントにデジタル署名を使用することによって。

それが役立つことを願っています!

于 2013-07-23T18:30:45.087 に答える