使用Java中的XAdES-EPES对XML进行签名

时间:2017-12-25 23:32:21

标签: java xml sign xades4j

我目前正在为我的国家制定一些法律要求(电子发票)但我仍然坚持签署部分,这里是背景:

  1. 政府为每个用户提供.p12证书文件
  2. 生成XML后,必须根据前面提到的.p12证书使用XAdES-EPES进行签名。
  3. 我对证书和安全工件并不是很了解,我发现了一个名为Xades4J的java库,但是大多数例子都提到了KeyStore和TSA(我们真的不明白什么是TSA),我所使用的场景看起来非常简单,但我相信大多数提到的例子都很复杂。

    有人可以帮我解释这些概念和/或提供一个如何使用已经有p12文件的XAdES-EPES进行签名的示例吗?

    我看到了一些我也会测试的C#示例,我大部分都是用Java编写的。

    提前致谢

2 个答案:

答案 0 :(得分:2)

最近,在xades4j Github问题上,围绕一个与您的要求非常相似的场景进行了对话。查看此问题:

https://github.com/luisgoncalves/xades4j/issues/134

它包含使用p12文件作为证书/密钥的示例代码。 希望这会有所帮助。

答案 1 :(得分:1)

让我们从头开始。

KeyStore:在一个简单的概念中,它是您存储证书的地方,在签名过程之前,您必须选择通常从KeyStore中提取的证书 - > Here you get a complete perspective about what is a keyStore.

TSA:Time Stamp Autoriry,这是一个外部实体,如果您需要政府接受您的签名,它必须是正式实体。这将为您提供时间戳标记,并将为您之前的签名添加额外信息,确保您的证书有效且签名在该时间段内是正确的。 Here is a close context to extend your information about signatures

  

请注意,不推荐使用XAdES-EPES,您应该使用它   XAdES-A(如果您需要定期时间戳)或AdES-LTA。

如果您的申请在西班牙拥有法律背景,您可以使用此工具做您需要的工作:Sing and validate signatures

希望这有帮助。