Creating a self-signed certificate in C#から自己署名デジタル署名を生成する方法を見て、CreateSelfSignCertificatePfxを呼び出して、X509Certificate2オブジェクト内で署名するために使用できるバイト配列のPXFデータを取得できます確認します。例...PFXの自己署名付きx509証明書をパスワードで保護
byte[] pfx = Certificate.CreateSelfSignCertificatePfx("O=Company,CN=Firstname,SN=Lastname", DateTime.Now, DateTime.Now.AddYears(1), "password");
X509Certificate2 cert = new X509Certificate2(pfx, "password");
byte[] publicBytes = cert.RawData;
RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)cert.PrivateKey;
byte[] signedData = rsa.SignData(new System.Text.UTF8Encoding().GetBytes("Test"), new SHA1CryptoServiceProvider());
RSACryptoServiceProvider rsa2 = (RSACryptoServiceProvider)new X509Certificate2(publicBytes).PublicKey.Key;
bool verified = rsa2.VerifyData(new System.Text.UTF8Encoding().GetBytes("Test"), new SHA1CryptoServiceProvider(), signedData);
これは機能します。私の懸念は、上記の元のバイトであるbyte [] pfxがDBに格納されている必要があります。問題は、この形式のバイトがどれくらい安全かということです。秘密鍵で新しいX509Certificate2を構築するためにパスワードが必要だと知っていますが、一般的な意味では、パスワードなしでバイトがどれくらい安全ですか?これらのバイトを追加レイヤーとして暗号化する際に問題はありませんが、それは必要ですか?
正しいパスワードでこのコンストラクタを呼び出すX509Certificate2.X509Certificate2(Byte[], String) Constructor
によると、秘密鍵を復号化し、キーコンテナに保存します。
秘密鍵がパスワードなしで安全であることを確認したいだけです。
私は遅刻の応答、休日およびすべてのために私の謝罪します。問題は、パスワードだけでX509証明書がどの程度安全であるかということでした。パスワードをお持ちの場合、秘密鍵はありますが、パスワードなしで秘密鍵はどのくらい安全ですか? – user1097974