This question already has answers here:
Closed 4 years ago.
How to load a PKCS#12 file in OpenSSL programmatically?
(3个答案)
到目前为止,我们正在使用一个.pem文件,我们能够建立一个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++中以编程方式将是否有现成的OpenSSL API支持这一点?(例如,对于.pem,我们有一个常数.pfx]

最佳答案

无法使用标准C99/ANSI libs的转换。
您也可以尝试使用system()或popen()调用sys函数,如OpenSSL。
$openssl pkcs12-入证书.pfx-出证书.pem

关于c++ - 使用.pfx(pkcs12)文件而非.pem文件的编程方式来建立SSL连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26974148/

10-09 09:01