【发布时间】:2015-06-11 09:02:28
【问题描述】:
我尝试导入证书,以便在我的 C++ 代码中处理它。我究竟做错了什么?以下是我在代码中执行的步骤:
我用gnutls_global_init()发起
我的程序中有一个 FILE 类型的对象,using fopen and fread
我将包含证书和 FILE 类型长度的 FILE 类型对象保存到 gnutls_datum_t 类型对象 (loaded_file) 中
我用gnutls_x509_crt_init(&cert)初始化了一个gnutls证书
我用gnutls_x509_crt_import(cert, &loaded_file, GNUTLS_X509_FMT_PEM)
我收到错误代码-207: Base64 unexpected header error...这是什么意思?
当我想使用 gnutls_x509_crt_print() 打印证书信息时,我得到以下信息:
证书[1424]:
X.509 证书信息:
版本:1
错误:get_serial:ASN1 解析器:找不到值。
发行人:
有效期:
Not Before: Wed Dec 31 23:59:59 UTC 1969 Not After: Wed Dec 31 23:59:59 UTC 1969主题:
错误:get_signature_algorithm:ASN1 解析器:找不到值。
警告:使用可伪造的损坏签名算法进行签名。
错误:get_signature:ASN1 解析器:找不到值。
其他信息:
错误:get_fingerprint:ASN1 解析器:找不到值。
错误:get_key_id:ASN1 解析器:找不到值。
我尝试导入的证书是使用 certtool 创建的自签名证书。
我的导入链出了什么问题?
【问题讨论】:
-
您尝试导入的证书似乎没有签名。你确定这不仅仅是一个证书请求吗?
-
当我查看属性时,它说我的证书是 X.509-Certificate。这在我看来是一个有效的证书,可以将其导入 gnuTLS 格式,对吧?此外,它是自签名的。这会导致问题吗?
-
检查证书格式(PEM、DEM)和功能预期
-
证书格式是 PEM,正如您在上面看到的,预期的格式也是 PEM。
标签: certificate x509 c++ error-handling