【问题标题】:OpenSSL how to load CA cert with DER formatOpenSSL如何加载DER格式的CA证书
【发布时间】:2013-08-15 07:24:39
【问题描述】:

我是 OpenSSL 的新手,如果我问什么愚蠢的问题,请原谅我。

我需要将使用 axTLS 的现有服务器项目转换为 OpenSSL。由于服务器需要客户端身份验证,我需要加载服务器证书文件、私钥文件和 CA 证书文件。所有 3 个文件都是 DER 格式。

对于服务器证书文件和私钥文件,我可以使用SSL_CTX_use_certificate_file()SSL_CTX_use_PrivateKey_file() 加载DER 格式文件(ASN1 格式)。但是,我找不到任何以 DER 格式加载 CA 证书的 API。 SSL_CTX_load_verify_locations()SSL_load_client_CA_file() 似乎只适用于 PEM 格式。

我可以使用任何其他 API/方法来解决此问题吗?

谢谢。

【问题讨论】:

  • 根据document,它只支持PEM格式。
  • 所以这意味着 OpenSSL API 无法加载 DER 格式(.cer 文件扩展名)CA 证书??我很难说服自己,因为 axTLS 能够做到这一点,而且 axTLS 应该是 SSL 实现的“精简”版本。

标签: c openssl x509


【解决方案1】:

我会回答我自己的问题。正如余浩所说,OpenSSL 中似乎没有可用的 API 来加载 DER(ANS1) 格式的 CA 证书。我必须得到 PEM 格式版本的 CA 证书才能最终使用。

【讨论】:

    【解决方案2】:

    首先,DER 文件可以有.crt.cer.der 结尾。

    至于您的问题,它可能是众多问题之一。您现有的服务器项目是否已经工作?在什么程度上?

    您能否先尝试将 DER 文件转换为 PEM 并告诉我们进展如何?

    openssl x509 -inform der -in certificate.cer -out certificate.pem
    

    【讨论】:

    • 现有的服务器项目已经与其他使用 axTLS 的客户端完美配合。抱歉,我是 SSL 新手,我不确定您希望看到的转换结果。 DER 文件 (.cer) 首先是从 PEM 格式转换而来的。由于客户端平台的一些限制,服务器和客户端选择使用DER格式。
    • @AngelaYan 您能否发布失败的代码,而不仅仅是正在使用的 API 方法。
    • 我没有“失败”的代码,因为我仍在尝试找出应该使用什么 API 来加载 DER 格式的 CA 证书。到目前为止,我只能找到这 2 个 API 用于加载 CA 证书:SSL_CTX_load_verify_locations()SSL_load_client_CA_file()。但是从文档来看,这两个 API 都只支持 PEM 格式的 CA 证书。你的意思是尽管文档说我仍然应该尝试使用这 2 个 API 来查看它们是否可以加载 DER 格式的 CA 证书?
    • @AngelaYan 首先使用SSL_CTX_set_default_passwd_cb() 设置(如果有)服务器证书密码,然后使用SSL_CTX_use_certificate_chain_file() 加载服务器证书,然后使用SSL_CTX_use_PrivateKey_file() 加载私钥文件,然后使用SSL_CTX_load_verify_locations() 与受信任的CA'a 进行验证,然后使用BIO_new_file()PEM_read_bio_DHparams()SSL_CTX_set_tmp_dh() 从文件中加载DH 参数,然后使用SSL_get_verify_result() 验证对等X509 证书,最后使用SSL_get_peer_certificate()从对等方获取证书。
    • @AngelaYan 还有一件事,您可能还应该使用SSL_set_verify() 验证对等方。
    猜你喜欢
    • 2019-06-07
    • 1970-01-01
    • 2012-04-10
    • 2013-03-25
    • 2017-09-16
    • 2018-11-29
    • 2016-12-07
    • 2012-12-08
    • 2018-12-28
    相关资源
    最近更新 更多