1. 程式人生 > 其它 >OpenSSL證書轉PFX

OpenSSL證書轉PFX

OpenSSL證書轉pfx

pem證書轉pfx證書分兩種,一種帶ca證書轉換,一種不帶ca證書轉換

1. pem轉pfx(不帶ca證書)

以test.pem轉test.pfx為例

openssl rsa -in test.pem -out test.key
openssl x509 -in test.pem -out test.crt
openssl pkcs12 -export -out test.pfx -inkey test.key -in test.crt

2. pem轉pfx(帶ca證書)

以test.pem和ca.crt(ca.pem)轉 test_ca.pfx為例

openssl rsa -in test.pem -out test.key
openssl x509 -in test.pem -out test.crt
openssl pkcs12 -export -out test_ca.pfx -inkey test.key -in test.crt -CAfile ca.crt

3. 如果ca證書為pem格式

openssl pkcs12 -export -out test_ca.pfx -inkey test.key -in test.crt -CAfile ca.pem
openssl pkcs12 -export -out client-ca.pfx -inkey client-key.pem -in client-cert.pem -CAfile cacert.pem
openssl pkcs12 -export -out client.pfx -inkey client-key.pem -in client-cert.pem

主要解決實際場景問題

asp.net https使用Cloudflare 簽名證書

  1. 首先,到 Cloudflare 申請證書.

  2. 然後 下載/複製 pem格式證書到本地.

  3. (可選)下載Cloudflare官方的CA證書.

    根據你申請證書的加密方式,選擇對應的CA證書:

  1. 下載Windows平臺最新編譯的OpenSSL

  2. 執行OpenSSL命令

openssl pkcs12 -export -out Cloudflare.pfx -inkey key.pem -in certificate.pem -password pass:"123456"

openssl pkcs12 -export -out Cloudflare2.pfx -inkey key.pem -in certificate.pem -CAfile origin_ca_rsa_root.pem -password pass:"123456"
public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>()
                .UseKestrel(options =>
                {
                    options.AddServerHeader = false;
                    options.ListenAnyIP(80);
                    options.ListenAnyIP(443, lopr =>
                    {
                        lopr.UseHttps(
                            new System.Security.Cryptography.X509Certificates.X509Certificate2(
                                "Cloudflare.pfx", "123456"));
                    });
                });


        });