0

我正在尝试从 OpenXPKI 服务器获取 CRL(使用默认配置)。可以请求和轮询证书。

在 OpenXPKI 服务器上,我撤销了一些证书,创建了 CRL 并发布了列表。为了获得 CRL,我尝试了不同的方法。

第一种方法:

X509CRL crl = client.getRevocationList(jscepCertificate, jscepKeyPair.getPrivate(), 
              certificate.getIssuerX500Principal(), certificate.getSerialNumber());

第二种方法:

X509CRL crl = client.getRevocationList(jscepCertificate, jscepKeyPair.getPrivate(), 
              crlIssuer, crlSerialNumber);

在服务器上,我的 CRL 具有以下信息:

CRL Serial: 511
CRL Issuer: CN=CA ONE,OU=Test CA,DC=OpenXPKI,DC=ORG
Items: 25

当我尝试上面的代码示例(以及其他一些)时,我在 CRL 请求者上收到以下错误:

org.jscep.transaction.OperationFailureException:操作因 badCertId 而失败

在 OpenXPKI 服务器上,我收到以下错误:

openxpki.application.ERROR:12156 [OpenXPKI::Service::SCEP::Command::PKIOperation (/usr/lib/x86_64-linux-gnu/perl5/5.20/OpenXPKI/Service/SCEP/Command/PKIOperation.pm:255 ); scep-server-1()@f68c] SCEP getcrl - 找不到序列号 511 的发行者和发行者 DC=ORG,DC=OpenXPKI,OU=Test CA,CN=CA ONE

始终找不到序列号 XXX 和颁发者 YYY 的颁发者(XXX 和 YYY 取决于 CRL 请求的发送信息)。

拜托,有人可以帮我或给我一些建议吗?- 提前致谢!

4

1 回答 1

0

我在 JSCEP 和 OpenXPKI 社区的帮助下解决了这个问题。问题是颁发者的 DN 被颠倒了,这意味着例如CN=CA,OU=Test CA,DC=OpenXPKI,DC=ORG被更改为DC=ORG,DC=OpenXPKI,OU=Test CA,CN=CA ONE并且getCRL来自 OpenXPKI 的 DN 没有反向颁发者的条目。

一个简单的解决方法是通过更改get_getcrl_issuer_serial.pm文件中的代码来反转getCRL请求的颁发者(检查OpenXPKI 修复)。在第 107 行添加以下代码:

$issuer = join ",", reverse split (/,/, $issuer);

未来的解决方案是让getCRL逻辑请求者独立,并根据请求对发布者进行排序。

于 2017-05-30T09:40:47.830 回答