Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在OpenSSL中创建新CRL的问题_C_Ssl_Openssl_Certificate Revocation - Fatal编程技术网

在OpenSSL中创建新CRL的问题

在OpenSSL中创建新CRL的问题,c,ssl,openssl,certificate-revocation,C,Ssl,Openssl,Certificate Revocation,我正在使用OpenSSL创建一个第三方应用程序,为嵌入式系统创建一个新的证书吊销列表。 这是我的密码 crl = X509_CRL_new(); X509_CRL_set_version(crl, CRL_VERSION); X509_NAME *id = X509_NAME_new(); X509_NAME_add_entry_by_txt(id, "C", MBSTRING_ASC, (const unsigned char*) CRL_ISSUER_C

我正在使用OpenSSL创建一个第三方应用程序,为嵌入式系统创建一个新的证书吊销列表。 这是我的密码

    crl = X509_CRL_new();

    X509_CRL_set_version(crl, CRL_VERSION);

    X509_NAME *id = X509_NAME_new();
    X509_NAME_add_entry_by_txt(id, "C",  MBSTRING_ASC, (const unsigned char*) CRL_ISSUER_COUNTRY, -1, -1, 0);
    X509_NAME_add_entry_by_txt(id, "ST", MBSTRING_ASC, (const unsigned char*) CRL_ISSUER_STATE, -1, -1, 0);
    X509_NAME_add_entry_by_txt(id, "L",  MBSTRING_ASC, (const unsigned char*) CRL_ISSUER_COUNTRY, -1, -1, 0);
    X509_NAME_add_entry_by_txt(id, "O",  MBSTRING_ASC, (const unsigned char*) CRL_ISSUER_ORGANIZATION, -1, -1, 0);
    X509_NAME_add_entry_by_txt(id, "OU", MBSTRING_ASC, (const unsigned char*) CRL_ISSUER_ORGANIZATIONAL_UNIT, -1, -1, 0);
    X509_NAME_add_entry_by_txt(id, "CN", MBSTRING_ASC, (const unsigned char*) CRL_ISSUER_COMMON_NAME, -1, -1, 0);

    X509_CRL_set_issuer_name(crl, id);

    X509_CRL_set_lastUpdate(crl, tmptm);

    char filename[50];
    strcpy(filename, RW_CRL_LOCATION);
    strcat(filename, "crl.pem");

    fPointer = fopen(filename, "w+");
    result = PEM_write_X509_CRL(fPointer, clr);
当我运行它时,它会创建一个CRL文件,当我尝试使用openssl命令读取它时,它无法加载

OpenSSL 1.0.2d 9 Jul 2015
root@imx6ulevk:/vp/test/crl# 
root@imx6ulevk:/vp/test/crl# openssl crl -in crl.pem -noout -text
unable to load CRL
1995560144:error:0D0C40D8:asn1 encoding routines:c2i_ASN1_OBJECT:invalid object encoding:a_object.c:283:
1995560144:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:694:Field=algorithm, Type=X509_ALGOR
1995560144:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:694:Field=sig_alg, Type=X509_CRL_INFO
1995560144:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:694:Field=crl, Type=X509_CRL
1995560144:error:0906700D:PEM routines:PEM_ASN1_read_bio:ASN1 lib:pem_oth.c:83:
但是,当我在32位linux PC上编译并运行同一段代码,并尝试打开创建的crl文件时,它就工作了

OpenSSL 1.0.1f 6 Jan 2014
thilinaur@ubuntu:~/openssl-testing/code/crl$ openssl crl -in crl.pem -noout -text
Certificate Revocation List (CRL):
    Version 3 (0x2)
Signature Algorithm: itu-t
    Issuer: /C=SL/L=SL/O=VIVOPAY/OU=PISCES
    Last Update: Nov 11 05:44:25 2016 GMT
    Next Update: NONE
No Revoked Certificates.
Signature Algorithm: itu-t
然后将使用我的PC创建的crl文件复制到嵌入式文件系统,并尝试在那里打开它,效果很好。并将嵌入式系统创建的crl复制到PC并尝试打开,但失败。
有谁能帮我解决这个问题吗?

很晚了,但我终于意识到:你没有在CRL上签字。签名填写两个算法字段以及实际签名;1.0.1解码中的两行
签名算法:itu-t
是一个旧缺陷(或至少是不符合特征),其中缺失/空OID“解码”为
itu-t
,因为它被分配了顶部弧0。1.0.2显然更为严格,并抓住了这一点


根据系统手册页调用
X509\u CRL\u sign
X509\u CRL\u sign\u ctx

您可能为32位体系结构编译了代码。所以在PC机上(我猜是64位)它不起作用。啊,好的,我要补充,不,我编译并测试了这两种语言architectures@ThilinaRathnasooriya-如果它确实是PEM,那么
文件crl.PEM
将返回
ASCII
。如果它返回
二进制
,则其顺序为。尝试将
-inform
选项添加到crl.pem-noout-text中的
openssl crl-in。使用PEM或DER:
-通知DER
-通知PEM
。另请参阅。