- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将最近在 Windows 中安装的证书导入到 Java 中以与 xades4j 一起使用。不幸的是,我对证书和 key 等方面还很陌生。
但是每次运行该程序时,都会收到以下错误:
>xades4j.verification.UnexpectedJCAException: The keystore couldn't be initialized
at xades4j.providers.impl.KeyStoreKeyingDataProvider.ensureInitialized(KeyStoreKeyingDataProvider.java:179)
at xades4j.providers.impl.KeyStoreKeyingDataProvider.getSigningCertificateChain(KeyStoreKeyingDataProvider.java:189)
at xades4j.production.SignerBES.sign(SignerBES.java:159)
at xades4j.production.SignerBES.sign(SignerBES.java:130)
at com.logic.test.signBes(test.java:138)
at com.logic.test.<init>(test.java:80)
at com.view.FrmMenu.<init>(FrmMenu.java:41)
at com.view.FrmMenu$9.run(FrmMenu.java:289)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.security.KeyStoreException: KeyStore instantiation failed
at java.security.KeyStore$Builder$FileBuilder.getKeyStore(KeyStore.java:1862)
at xades4j.providers.impl.KeyStoreKeyingDataProvider.ensureInitialized(KeyStoreKeyingDataProvider.java:175)
... 21 more
Caused by: java.io.IOException: DER input, Integer tag error
at sun.security.util.DerInputStream.getInteger(DerInputStream.java:192)
at sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1940)
at java.security.KeyStore.load(KeyStore.java:1445)
at java.security.KeyStore$Builder$FileBuilder$1.run0(KeyStore.java:1848)
at java.security.KeyStore$Builder$FileBuilder$1.run(KeyStore.java:1807)
at java.security.KeyStore$Builder$FileBuilder$1.run(KeyStore.java:1796)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.KeyStore$Builder$FileBuilder.getKeyStore(KeyStore.java:1858)
... 22 more
>
我需要使用 XaDeS-BES 格式签署 XML 文档。我已从光盘导入 key (或证书?),它位于 Windows 受信任的根证书颁发机构证书中。我从 Windows 证书管理器 (certmgr.msc) 将其导出到 C 驱动器的根目录。
我找到了one post on this website提到尝试以下方法来初始化 KeyStore:
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(null, null);
不幸的是,没有任何变化。
我使用的代码基于 the example wiki :
private static final String CERT_FOLDER = "C:/";
private static final String CERT = "testkey.cer";
private static final String PASS = "test1234"; //the same in cert and keystorage
private static final String SIGNED = "persistent/xml/001-001-000000000new1.xml";
private static final String DOCUMENT = "persistent/xml/001-001-000000000.xml";
private static void signBes() throws Exception {
Document doc = DocumentBuilderFactory
.newInstance()
.newDocumentBuilder()
.parse(new File(DOCUMENT));
Element elem = doc.getDocumentElement();
DOMHelper.useIdAsXmlId(elem);
KeyingDataProvider kdp = new FileSystemKeyStoreKeyingDataProvider(
"pkcs12",
CERT_FOLDER + CERT,
new FirstCertificateSelector(),
new DirectPasswordProvider(PASS),
new DirectPasswordProvider(PASS),
true);
DataObjectDesc obj = new DataObjectReference("#" + elem.getAttribute("Id"))
.withTransform(new EnvelopedSignatureTransform());
SignedDataObjects dataObjs = new SignedDataObjects().withSignedDataObject(obj);
// KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
// ks.load(null, null);
XadesSigner signer = new XadesBesSigningProfile(kdp).newSigner();
signer.sign(dataObjs, elem);
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File(SIGNED));
transformer.transform(source, result);
}
感谢您提供的所有帮助。
最佳答案
要执行签名操作,您需要一个 key /证书对,即 PKCS12 容器。在 Windows 上,该对通常是 .pfx
或 .p12
文件。我不确定问题是什么,但以下一些注意事项可能会对您有所帮助:
FileSystemKeyStoreKeyingDataProvider
,因此信任链实际上不太相关。当您验证签名时,它就会变得相关。.cer
)。我不知道您最初是如何获得证书的,但应该与 key 一起提供,可能捆绑在受密码保护的 .pfx
文件中。FileSystemKeyStoreKeyingDataProvider
时,您应该传递 PKCS12 文件(例如 .pfx
)希望这有帮助。
关于java - Xades4j: keystore 无法初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54404810/
我正在尝试验证由 xades4j 签名的文档,但我对证书验证不感兴趣。我唯一需要知道的是该文档已正确签署,并且自签署以来没有任何更改。 我尝试了几种不同的方法,但每种方法都使用 PKIXCertifi
Java 程序将 PDF 文档发送到外部系统并接收该文档的 XADES 标志。 我想检查 PDF 文档的哈希值是否与 Xades 符号中包含的哈希值匹配。所以我计算了PDF文档的SHA1,但它与ds:
我必须为一个项目创建我自己的 XAdES 签名,除了分离的签名之外,一切都工作正常。据我了解,我必须添加对 XML 对象的引用,该对象将指向存储原始文档的容器。我已经尝试使用 ResolverAnon
有了 XAdES-BES 签名,其中嵌入了签名内容,是否可以分离签名内容,以便拥有带有 ObjectReference 的 XAdES。 所以简单来说 - 我需要一种方法,它采用带有嵌入式文件的 XA
我正在尝试使用 xades4j 库使用分离的 XAdES 签名“test.zip.xades”来验证文件“test.zip”的完整性。我知道更简单的方法是使用 md5,但我需要使用 XAdES。我不想
我正在寻找与 microsoft.net 框架兼容的库,它允许创建和验证 XAdES 签名(XAdES、XAdES-C、XAdES-XL 等...)。 让程序员能够选择的库很重要: 1.- 签名过程中
我正在尝试通过2019-09-20T14:57:46到一个函数并使用根 中包含的数字签名对其进行签名标签 这是预期的结果: 2019-09-20T14:57:46
我是数字签名领域的新手。我想知道 CMS、CAdES_T、XAdES/XAdES_T、PAdES 文档是否都具有 .p7m 扩展名。如果是,我如何确定 .p7m 的签名类型?BouncyCaSTLe
我正在为使用 XAdES 的消息签名而苦恼。我已经搜索了将我带到下面代码的解决方案。但是我尝试连接的服务告诉我签名错误。我做错了什么? public static class Signature
我需要你的帮助:拜托,拜托。我有一个 Xades 签名的 XML 文档,我将其作为 byteArray 接收:所以我将我的 byteArray 转换为字符串。之后,我尝试解码以便获得映射的 Java
我们想创建一个验证“XADES”签名的 java web 应用程序,这个应用程序应该有两个文件:原始文件和他的分离签名。 我正在使用 XADES4j 库,这是一个很棒的项目。使用 XADES4j 有没
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 4 年前。
我需要使用 XAdES 模板签署 xml。我正在使用 2 个引用。第二个问题是,如果我添加 Transform,它将正常工作(signedXml.CheckSignature() 返回 True),如
我找不到任何理由说明为什么有人更愿意实现面向 CAdES 的电子签名软件解决方案而不是面向 XAdES 的电子签名软件解决方案。 互联网上有更多 XAdES 的开放库和实现案例和示例,但我仍然认为这不
我找到了 Xades Signature for Python GitHub。我的计划是将 Xades-EPES 签名应用于 XML 文件。根据 GitHub 的工作,它能够执行此过程,但我无法运行。
几天来,我一直在为如何计算 XAdES 签名中 SignedProperties 元素的摘要而苦苦思索。我有一个引用 XML 文件,其中计算了两个摘要值(正在签名的文件和已签名的属性),我知道它很好,
几天来,我一直在为如何计算 XAdES 签名中 SignedProperties 元素的摘要而苦苦思索。我有一个引用 XML 文件,其中计算了两个摘要值(正在签名的文件和已签名的属性),我知道它很好,
我正在尝试使用 XAdES4j 库通过封装签名对 xml 进行签名。从我读到的所有内容来看,似乎可以完全按照我想做的事情进行,但我无法找到一个简单的示例来帮助我更好地理解工作流程。该库位于此处: ht
我正在尝试在 Android 中使用 XADES-BES 签署文件。我找到了一个关于这个的图书馆。构建和创建 APK 工作正常。选择文件并单击“签名”按钮后,出现运行时错误。经过调试发现Context
我正在签署的文件看起来像这样。 我正在使用 xadesjs使用以下代码签署此 XML: const crypto = new Crypto(); xadesjs.Application.setE
我是一名优秀的程序员,十分优秀!