使用 .pfx (pkcs12) 文件而不是 .pem 文件建立 SSL 连接的编程方式
Programmatic way of using .pfx (pkcs12) file instead of .pem file for establishing SSL connection
到目前为止,我们使用的是.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和各种论坛中搜索了许多主题,例如:
转换。PFX 到 .PEM 以编程方式?
转换 .PEM 证书到 。PFX 以编程方式使用 OpenSSL
使用 openssl
将 pfx 转换为 pem...和其他几个。
但是找不到一种方法在 Linux 的 C/C++ 中以编程方式将.pfx
转换为.pem
。
是否有任何现成的OpenSSL API支持此功能?(例如,对于 .pem,我们有一个常数SSL_FILETYPE_PEM
]
无法
将转换与标准 C99/ANSI 库一起使用。您也可以尝试使用 system() 或 popen() 来调用 sys 函数,例如 OpenSSL。
$ openssl pkcs12 -in cert.pfx -out cert.pem
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在C++中查找文件
- c++库的公共头文件中应该包含什么
- 如何从 boost::asio::ssl::stream<boost::asio::ip::tcp::socket> 获取本机套接字文件描述器?
- 致命错误:openssl/ssl.h:没有这样的文件或目录
- 为什么我可以不将 SSL lib(-lssl) 链接到 so 的制作文件中?
- 使用 .pfx (pkcs12) 文件而不是 .pem 文件建立 SSL 连接的编程方式
- 使用POCO上传文件- SSL连接意外关闭异常
- 促进Asio:编写SSL服务器/客户端的文件类型太多