gpt4 book ai didi

c# - 如何使用 Mono.Security 设置 X509 SubjectAltName (SAN)?

转载 作者:太空宇宙 更新时间:2023-11-03 14:40:25 27 4
gpt4 key购买 nike

Chrome 58 弃用了省略主题备用名称 (SAN) 的自签名证书。我使用 Mono.Security.X509 X509CertificateBuilder() 在“本地主机”上为 Windows OWIN 服务创建证书,使浏览器能够与 TWAIN 扫描仪通信。该证书目前只设置了 Common Name,因此对于 Chrome 58 来说是不够的。

使用 Mono.Security.X509 创建使 Chrome 能够与本地主机上的 OWIN 服务通信的自签名证书的正确方法是什么?

    RSA subjectKey = new RSACryptoServiceProvider(2048);

X509CertificateBuilder cb = new X509CertificateBuilder(3);
cb.SerialNumber = GenerateSerialNumber();
cb.IssuerName = "CN=localhost";
cb.NotBefore = notBefore;
cb.NotAfter = notAfter;
cb.SubjectName = "CN=localhost";
cb.SubjectPublicKey = subjectKey;
cb.Hash = "SHA256";

byte[] rawcert = cb.Sign(subjectKey);
PKCS12 p12 = new PKCS12();
p12.Password = password;

Hashtable attributes = GetAttributes();
p12.AddCertificate(new X509Certificate(rawcert), attributes);
p12.AddPkcs8ShroudedKeyBag(subjectKey, attributes);

return p12.GetBytes();

最佳答案

var san = new SubjectAltNameExtension(new string[0], new string[1] { "localhost" }, new string[0], new string[0]); 
cb.Extensions.Add(san);

我在 Jexus Manager 中对此进行了测试,

https://github.com/jexuswebserver/JexusManager/blob/master/JexusManager.Features.Certificates/SelfCertificateDialog.cs

关于c# - 如何使用 Mono.Security 设置 X509 SubjectAltName (SAN)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43744320/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com