ssl - 我们如何使用 x509certificates 加载证书签名请求?
问题描述
我的问题:
从证书签名请求如下:
例子:
-----BEGIN CERTIFICATE REQUEST-----
MIIClDCCAXwCAQAwTzELMAkGA1UEBhMCVk4xEDAOBgNVBAMMB2RldmljZTMxCjAI ...
-----BEGIN CERTIFICATE REQUEST-----
我正在使用system.security.cryptography.x509certificates,我会将其加载为CertificateRequest/X509Certificate2对象,以从证书签名请求创建新证书。
有谁知道怎么做?
我的尝试
输入:
- 作为 CA 的自签名证书
- 证书签名请求
我的代码
string rootCA = ""; // root certificate
string scrString = ""; // certificate signing request
byte[] rootRawData = Convert.FromBase64String(rootCA);
X509Certificate2 rootCert = new X509Certificate2(rootRawData);
var generator = X509SignatureGenerator.CreateForRSA(rootCert.GetRSAPrivateKey(), RSASignaturePadding.Pkcs1);
byte[] scrRawData = Convert.FromBase64String(scrString);
X509Certificate2 scrDeviceCert = new X509Certificate2(scrRawData); ------> ERROR: : 'Cannot find the requested object.'
CertificateRequest scrDeviceReq = new CertificateRequest(scrDeviceCert.IssuerName, scrDeviceCert.PublicKey, HashAlgorithmName.SHA256);
var deviceCert = scrDeviceReq.Create(rootCert.IssuerName, generator, DateTimeOffset.UtcNow.AddDays(1), DateTimeOffset.UtcNow.AddDays(6), new byte[] { 1, 2, 3, 4 });
解决方案
.NET Core 中没有读取 CSR 的内置功能。您必须使用 3rd 方库来解码 CSR。
推荐阅读
- python - 使用 CreateProcessW 捕获 Python Sys.Exit 代码
- mysql - 通过在特定条件下添加具有特定值的字段从两个表中进行选择
- swagger - 我可以将 Swashbuckle 与我自己的 OpenAPI 规范 Json 一起使用吗?
- laravel - 运行测试时未触发事件
- xamarin - 登录到 Visual Studio App Center 时,未处理的 Xamarin Android 异常具有错误的堆栈跟踪
- amazon-web-services - 无法通过 CloudFormation 启动 Elastic Beanstalk 应用程序
- node.js - Mongodb 更新功能仅在包含 .then() 时才有效
- python - Google App Engine:AttributeError:“VerifiedHTTPSConnection”对象没有属性“_tunnel_host”
- haskell - 把镜头放在唱片里
- javascript - 如何修复 JavaScript HTML 元素未显示错误?