c#把.crt证书转为.pfx证书

        private static X509Certificate2 LoadPrivateKey(X509Certificate2 cert, string privateKeyPath)
        {
            // 读取 PEM 文件内容
            var privateKeyPem = File.ReadAllText(privateKeyPath);

            // 移除 PEM 文件的头尾
            privateKeyPem = privateKeyPem.Replace("-----BEGIN PRIVATE KEY-----", "")
                                           .Replace("-----END PRIVATE KEY-----", "")
                                           .Replace("\n", "")
                                           .Replace("\r", "");

            // 将 Base64 编码的字符串转换为字节数组
            var privateKeyBytes = Convert.FromBase64String(privateKeyPem);

            // 使用 RSA 创建私钥
            using var rsa = RSA.Create();
            try
            {
                rsa.ImportRSAPrivateKey(privateKeyBytes, out _);
            }
            catch (CryptographicException)
            {
                try
                {
                    rsa.ImportPkcs8PrivateKey(privateKeyBytes, out _);
                }
                catch (CryptographicException)
                {
                    using var ecdsa = LoadEccPrivateKey(privateKeyBytes);
                    return cert.CopyWithPrivateKey(ecdsa);
                }
            }

            return cert.CopyWithPrivateKey(rsa);
        }
        private static ECDsa LoadEccPrivateKey(byte[] privateKeyBytes)
        {
          
            // 使用 ECDsa 创建私钥
            ECDsa ecdsa = ECDsa.Create();
            ecdsa.ImportPkcs8PrivateKey(privateKeyBytes, out _);
            return ecdsa;
        }

        static void filetest()
        {
            var certificatePath = "fullchain.crt";
            var privateKeyPath = "private.pem";

            var cert = X509CertificateLoader.LoadCertificateFromFile(certificatePath);
            cert = LoadPrivateKey(cert, privateKeyPath);



            var pfx_file_data = cert.Export(X509ContentType.Pkcs12, "123456");

            //var cert2 = X509CertificateLoader.LoadPkcs12(pfx_file_data , "123456");

        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值