如何解决如何向 CertificateRequest 提供 X509KeyStorageFlags
可以在 X509Certificate2 构造函数中指定 X509KeyStorageFlags,如下所示:
var cert = new X509Certificate2(bytes,password,X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
但就我而言,我使用 CertificateRequest 创建自签名证书,因此我没有证书构造函数:
var rsaKeyPair = RSA.Create();
var request = new CertificateRequest(
$"cn = {Environment.MachineName}",rsaKeyPair,HashAlgorithmName.SHA256,RSASignaturePadding.Pkcs);
request.CertificateExtensions.Add(
new X509KeyUsageExtension(X509KeyUsageFlags.KeyEncipherment |
X509KeyUsageFlags.DigitalSignature,true));
var certificate = request.CreateSelfSigned(new DateTimeOffset(DateTime.UtcNow),new DateTimeOffset(DateTime.UtcNow.AddYears(2)));
有没有办法将 KeyStorageFags 添加到 request.CertificateExtension 或类似的东西?
解决方法
如何向 CertificateRequest 提供 X509KeyStorageFlags
CertificateRequest 对密钥存储一无所知。它所做的只是构建证书,然后调用 nlpObject = spacy.load('/path_to_models/en_core_web_lg-3.0.0/en_core_web_lg/en_core_web_lg-3.0.0')
。
移动目标:
如何为 CopyWithPrivateKey 提供 X509KeyStorageFlags
CopyWithPrivateKey 复制当前状态的密钥。临时密钥保持短暂。持久化密钥保持持久化。
移动目标:
如何向 RSA.Create() 提供 X509KeyStorageFlags
RSA.Create() 总是创建临时密钥,它根本不了解密钥存储。您必须使用理解持久性的特定 RSA 实现——但这会将您锁定在 Windows 中(当然,您的调用代码可能因操作系统而异)。
cert.CopyWithPrivateKey(privateKey)
有没有更简单的方法?
当然,只需导出/导入临时文件即可。
RSA rsaKeyPair = BuildMachinePersistedKeyPair(2048);
...
private static RSA BuildMachinePersistedKeyPair(int keySize)
{
CngKeyCreationParameters creationParameters = new CngKeyCreationParameters()
{
ExportPolicy = CngExportPolicies.Exportable,Provider = CngProvider.MicrosoftSoftwareKeyStorageProvider,KeyCreationOptions =
CngKeyCreationOptions.OverwriteExistingKey |
CngKeyCreationOptions.MachineKey,};
CngProperty keySizeProperty = new CngProperty(
KeyPropertyName.Length,BitConverter.GetBytes(keySize),CngPropertyOptions.None);
creationParameters.Parameters.Add(keySizeProperty);
using (CngKey cngKey = CngKey.Create(CngAlgorithm.Rsa,Guid.NewGuid().ToString(),creationParameters))
{
return new RSACng(cngKey);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。