首页 文章

使用.pfx(pkcs12)文件而不是.pem文件 Build SSL连接的编程方式[重复]

提问于
浏览
1

这个问题在这里已有答案:

到目前为止,我们正在使用 .pem 文件,我们可以 Build SSL连接(仅供参考,代码如下):

ASSERT(true == ::SSL_CTX_use_certificate_file(
         m_Attribute.m_pContext, certificateFileName.c_str(), SSL_FILETYPE_PEM),
       "Unable to use certificate file.");

ASSERT(true == ::SSL_CTX_use_PrivateKey_file(
         m_Attribute.m_pContext, certificateFileName.c_str(), SSL_FILETYPE_PEM),
       "Unable to load private key file.");

::SSL_CTX_set_options(m_Attribute.m_pContext, g_SSLChoice[version].m_Negotiation);

// ... some more relevant code

ASSERT(true == ::SSL_set_tlsext_host_name(m_pSSL, hostName.c_str()),
       "Cannot enable server name indication for " + hostName);

{
  int result = ::SSL_connect(m_pSSL);
  ASSERT(result == 1, "Cannot build an SSL connection, error = " +
      Util::Convert::to_string(::SSL_get_error(m_pSSL, result)));
}

但是现在要求已经改变,我们必须使用 .pfx 文件 . 在OpenSSL中,我找不到使用它的选项/功能 .

在SO和各种论坛中搜索了许多主题,例如:
Converting .PFX to .PEM programatically?
Convert a .PEM certificate to .PFX programmatically using OpenSSL
Converting pfx to pem using openssl
......还有其他人 .

但是找不到用Linux在C / C中以编程方式将 .pfx 转换为 .pem 的方法 .
有没有现成的OpenSSL API支持这个? (例如.pem我们有一个常数 SSL_FILETYPE_PEM ]

1 回答

  • 0

    没有办法使用标准C99 / ANSI库的转换 . 您也可以尝试使用system()或popen()来调用sys函数,比如OpenSSL .

    $ openssl pkcs12 -in cert.pfx -out cert.pem

相关问题