あなたは.NETのコアに切り替えることができるしている場合は、2.0 previewが出ていると証明書作成へのインボックスソリューションを持っています。 RSAキーポストpreview1用の証明書への互換性に影響する変更があります
using System.Security.Cryptography.X509Certificates;
...
private static X509Certificate2 MakeLocalhostCert()
{
using (ECDsa key = ECDsa.Create(ECCurve.NamedCurves.nistP384))
{
var request = new CertificateRequest(
"CN=localhost",
key,
HashAlgorithmName.SHA384);
request.CertificateExtensions.Add(
new X509BasicConstraintsExtension(false, false, 0, true));
const X509KeyUsageFlags endEntityTypicalUsages =
X509KeyUsageFlags.DataEncipherment |
X509KeyUsageFlags.KeyEncipherment |
X509KeyUsageFlags.DigitalSignature |
X509KeyUsageFlags.NonRepudiation;
request.CertificateExtensions.Add(
new X509KeyUsageExtension(endEntityTypicalUsages, true));
var sanBuilder = new SubjectAlternativeNameBuilder();
sanBuilder.AddDnsName("localhost");
sanBuilder.AddIpAddress(IPAddress.Loopback);
sanBuilder.AddIpAddress(IPAddress.IPv6Loopback);
request.CertificateExtensions.Add(sanBuilder.Build());
request.CertificateExtensions.Add(
new X509EnhancedKeyUsageExtension(
new OidCollection
{
// server authentication
new Oid("1.3.6.1.5.5.7.3.1"),
},
false));
DateTimeOffset now = DateTimeOffset.UtcNow;
return request.CreateSelfSigned(now, now.AddDays(90));
}
}
、RSASignaturePadding必要なパラメータは、RSAのためのCertificateRequestのCTORに追加されました。
証明書を生成する目的は何ですか? – Crypt32
これらの証明書を暗号化に使用します。これらの証明書は暗号化された形式でデータベースに格納されます。これらの証明書を暗号化する鍵は、HSMで維持されます。 – Aashish
暗号化には対称キーを使用し、HSMのマスターキーでこれらのキーを保護する必要があります。 – Crypt32