xml-signature - Xades4j:策略“自我:策略/一般”错误
问题描述
我正在尝试使用 xades4j 为西班牙政府签署发票。他们为签名的 xml 提供了一个在线检查器,并且只有一个整体检查的步骤失败了:
Step: Checks if the signature policy is correct
Result: Unknown policy self:policy/general
完整性和证书状态等其他步骤都可以。
我的猜测是 self:policy/general 是 xades4j 库中的某种占位符,我应该以某种方式覆盖它?
现在我正在将此代码用于政策
SignaturePolicyInfoProvider policyInfoProvider = new SignaturePolicyInfoProvider()
{
String FACTURAE_URL = "http://www.facturae.es/politica_de_firma_formato_facturae/politica_de_firma_formato_facturae_v3_1.pdf";
public SignaturePolicyBase getSignaturePolicy()
{
InputStream is = null;
try {
URL url = new URL(FACTURAE_URL);
URLConnection conn = url.openConnection();
is = conn.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
SignaturePolicyBase base = new SignaturePolicyIdentifierProperty(new ObjectIdentifier(FACTURAE_URL),is);
return base;
}
};
要求在此在线文档(西班牙语)中https://www.facturae.gob.es/politica_de_firma_formato_facturae/politica_de_firma_formato_facturae_v3_1.pdf
我的 xml 输出似乎符合:
<xades:SignaturePolicyIdentifier>
<xades:SignaturePolicyId>
<xades:SigPolicyId>
<xades:Identifier>http://www.facturae.es/politica_de_firma_formato_facturae/politica_de_firma_formato_facturae_v3_1.pdf</xades:Identifier>
</xades:SigPolicyId>
<xades:SigPolicyHash>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>2jmj7l5rSw0yVb/vlWAYkK/YBwk=</ds:DigestValue>
</xades:SigPolicyHash>
</xades:SignaturePolicyId>
</xades:SignaturePolicyIdentifier>
解决方案
我的猜测是 self:policy/general 是 xades4j 库中的某种占位符,我应该以某种方式覆盖它?
没有这样的事情。这可能是验证应用程序的一个细节。
我注意到问题文本中的 URL 是 HTTPS,而代码中的 URL 是 HTTP。似乎后者重定向到 HTTPs,但似乎URLConnection
在协议不同时不遵循重定向。
尝试在代码中使用最终的 HTTPS URL。
推荐阅读
- python - KeyError 'R',定义一个函数
- c++ - 如何分隔循环中奇数的计数
- javascript - 当 onClick 处理程序中有阻塞代码时如何显示加载程序?
- javascript - 克隆对象的奇怪行为
- codeigniter - Autodesk Forge API 与 Codeigniter
- amazon-web-services - 我想将已经创建的 docker 图像推送到 aws ecr
- python - 如何在 django 中使用相同的列表视图进行搜索和类别查询集
- css - 为什么媒体查询会影响元素定位?
- node.js - 在expressjs中获取url参数到html标签
- javascript - VueRouter导航到没有#符号的哈希?