使用 GnuTLS 导入证书期间出现错误代码 -207

error code -207 during import of certificate using GnuTLS

本文关键字:错误代码 -207 GnuTLS 导入 证书 使用      更新时间:2023-10-16

我尝试导入证书,以在C++代码中处理它。我做错了什么?以下是我在代码中执行的步骤:

我以gnutls_global_init()开始

我在程序中得到了一个文件类型的反对,using fopen and fread

我将包含证书和文件类型长度的文件类型 obejct 保存到一个 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 创建的自签名证书。

我的导入链出了什么问题?

今天我得到了相同的错误代码。就我而言,我使用了错误的缓冲区,并尝试使用 gnutls_x509_crt_import 加载私钥而不是证书。似乎错误代码-207是"我没有找到任何许可证"的通用代码。

因此,如果发生此错误,则应始终检查输入缓冲区以获取正确的数据。