OpenXPKI 与 JSCEP 请求 CRL

OpenXPKI with JSCEP to request CRL

我正在尝试从 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: Operation failed due to 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 - no issuer found for serial 511 and issuer DC=ORG,DC=OpenXPKI,OU=Test CA,CN=CA ONE

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

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

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

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

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

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