将证书转换为PFX或P12文件格式



convert .crt,.csr和.key Files to .pfx或.p12使用Windows Server 2016上的PowerShell。

我有.cert,.csr和.key文件。但是,为了执行" netsh http add sslcert ..."命令,我需要.pfx或.p12文件。我需要在PowerShell中完成。OpenSSL不是一个选项。

我已经使用OpenSSL完成了上述。但是IM现在仅限于下载软件,因此不再是一个选择。我正在寻找相当于powershell中的 openssl pkcs12 -export -out domain.name.pfx -inkey key.key -in cert.crt命令。

这是一个旧线程我会在这里分享下一个幸运的灵魂。

有一个内置的Windows实用程序呼叫certutil,可以从PS调用,并将做到这一点。它至少可以在2012年的服务器上开箱即用。

certutil –MergePFX certfile.cer certfile.pfx

要牢记的几件事,-MergePFX仅提示CERTFILE而不是关键,因此:

  • 私钥文件必须具有.key扩展名。
  • 证书和密钥文件必须具有相同的基本文件名。
  • 证书和密钥文件必须在同一目录中。

如果您可以使用.net core 3.0:

  • 通过cert = new X509Certificate2(certFile)
  • 加载证书
  • 如果密钥文件是PEM编码的(例如,以" -----开始"开头(,然后加载它,请记住它是什么类型(人类或软件(,请在标头和页脚之间找到base64内容,然后运行该内容通过convert.frombase64String获取键的BER/DER编码格式。
  • key = RSA.Create()
  • key.ImportPkcs8PrivateKey(bytes, out _)key.ImportEncryptedPkcs8PrivateKey(password, bytes, out _)key.ImportRSAPrivateKey(bytes, out _);取决于私钥文件的格式。
  • certWithKey = cert.CopyWithPrivateKey(key)
  • File.WriteAllBytes("new.pfx", certWithKey.Export(X509ContentType.Pkcs12, password))

如果您可以使用.NET Core 2.1/.NET框架4.7.2:

  • 加载证书,如上所述。
  • 手动加载密钥:
    • rsaprivateKey
      • 如何仅在C#
      • 中获得RsacryptoserviceProvider公共和私钥
      • 如何解析(转换为rsaparameters(X.509 C#?
      • 中的私钥
    • PKCS#8 PrivateKeyInfo
      • C#中的数字签名不使用Bouncycastle
    • PKCS#8 EncryptedPrivateKeyinfo
      • x509certificate2.import with ncrypt_allow_lallawall_plaintext_export_flag(emigitionencryptedpkcs8overwrite方法(
  • 使用copywithprivatekey/export/writeallbytes如上所述

如果您陷入了年龄较大的东西:

您可以尝试使用CERT.SET.PRIVATEKEKEN,将密钥手动加载到rsacryptoserviceProvider中,并导出它。仅在.NET框架上工作(从.NET核心删除,因为它具有太多的副作用,尤其是在持久证书存储中已经完成的证书时(。

相关内容

  • 没有找到相关文章

最新更新