tra*_*ver 21 .net x509certificate2
我从网上搜索它,找到许多样本从.net中的文件生成一个新的x509Certificate2,但没有一个示例显示如何从.net开头生成一个全新的x509Certificate2.
有没有人可以告诉我如何在.net中做到这一点?
非常感谢你.
Two*_*ick 21
签出证书请求(名称空间:System.Security.Cryptography.X509Certificates)...
 public static X509Certificate2 GenerateSelfSignedCertificate()
    {
        string secp256r1Oid = "1.2.840.10045.3.1.7";  //oid for prime256v1(7)  other identifier: secp256r1
        
        string subjectName = "Self-Signed-Cert-Example";
        var ecdsa = ECDsa.Create(ECCurve.CreateFromValue(secp256r1Oid));
        var certRequest = new CertificateRequest($"CN={subjectName}", ecdsa, HashAlgorithmName.SHA256);
        //add extensions to the request (just as an example)
        //add keyUsage
        certRequest.CertificateExtensions.Add(new X509KeyUsageExtension(X509KeyUsageFlags.DigitalSignature, true));
        X509Certificate2 generatedCert = certRequest.CreateSelfSigned(DateTimeOffset.Now.AddDays(-1), DateTimeOffset.Now.AddYears(10)); // generate the cert and sign!
        X509Certificate2 pfxGeneratedCert = new X509Certificate2(generatedCert.Export(X509ContentType.Pfx)); //has to be turned into pfx or Windows at least throws a security credentials not found during sslStream.connectAsClient or HttpClient request...
     return pfxGeneratedCert;
}
Ars*_*ray 15
这是您可以使用的代码:
    static X509Certificate2 GenerateCertificate(string certName)
    {
        var keypairgen = new RsaKeyPairGenerator();
        keypairgen.Init(new KeyGenerationParameters(new SecureRandom(new CryptoApiRandomGenerator()), 1024));
        var keypair = keypairgen.GenerateKeyPair();
        var gen = new X509V3CertificateGenerator();
        var CN = new X509Name("CN=" + certName);
        var SN = BigInteger.ProbablePrime(120, new Random());
        gen.SetSerialNumber(SN);
        gen.SetSubjectDN(CN);
        gen.SetIssuerDN(CN);
        gen.SetNotAfter(DateTime.MaxValue);
        gen.SetNotBefore(DateTime.Now.Subtract(new TimeSpan(7, 0, 0, 0)));
        gen.SetSignatureAlgorithm("MD5WithRSA");
        gen.SetPublicKey(keypair.Public);           
        var newCert = gen.Generate(keypair.Private);
        return new X509Certificate2(DotNetUtilities.ToX509Certificate((Org.BouncyCastle.X509.X509Certificate)newCert));
    }
为此,请不要忘记添加对BouncyCastle库的引用
小智 9
1.从以下链接下载 Win64 Openssl。(Win64 OpenSSL v1.1.0j - 37mb 安装程序) URL - https://slproweb.com/products/Win32OpenSSL.html
2.安装后设置系统路径环境变量。(path = C:\OpenSSL-Win64\bin)
3.打开命令提示符并将目录更改为桌面。
4.密钥创建命令:私钥:openssl req -x509 -days 365 -newkey rsa:2048 -keyout cert-key.pem  -out cert.pem
输入命令并按照说明进行操作。
5.现在桌面上有 2 个名为 cert-key.pem 和 cert.pem 的文件。要创建 .pfx 文件,请运行以下命令
openssl pkcs12 -export -in cert.pem -inkey cert-key.pem -out x509-cert.pfx
并按照说明进行操作(输入相同的密码)。
6.公钥创建命令:
openssl pkcs12 -in x509-cert.pfx -clcerts -nokeys -out x509-cert-public.pem
并按照说明进行操作。
7.将证书注册到mmc。
Żub*_*wka -1
我认为你不能使用该 API 来做到这一点。但是您可以使用 Bouncy Castle (http://www.bouncycastle.org) 创建一个对象,然后将该对象转换为 X509Certificate2 对象(BC 有一些实用程序类可以执行此操作)。
-编辑- 看看这些 BC 类:X509V3CertificateGenerator 和 X509Certificate
稍后将 BC X509Certificate 对象转换为常规 X509Certificate2 对象的 BC 实用程序类是:DotNetUtilities
| 归档时间: | 
 | 
| 查看次数: | 19193 次 | 
| 最近记录: |