- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的应用程序正在使用 java 安全 API 来签署文件并验证它。在签名时,我使用 PFX 文件和密码作为输入,签名后我使用字节生成签名文件。在验证过程中,我使用签名文件、证书文件和签名文件作为输入。请在下面找到我在验证中使用的代码:
// KeyFilePath= path of certificate file
// fileToVerify = path of signed file
// signatureFilePath = path of signature file
InputStream inputStream = new FileInputStream(KeyFilePath);
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
X509Certificate x509Certificate = (X509Certificate) certificateFactory.generateCertificate(inputStream);
// input the signature bytes
String sigFile = signatureFilePath;
FileInputStream sigFileInputStream = new FileInputStream(sigFile);
byte[] sigToVerify = new byte[sigFileInputStream.available()];
sigFileInputStream.read(sigToVerify);
sigFileInputStream.close();
PublicKey pubKey = x509Certificate.getPublicKey();
Signature signature = Signature.getInstance(signAlgorithm);
signature.initVerify(pubKey);
// Update and verify the data
try {
FileInputStream dataFileInputStream = new FileInputStream(fileToVerify);
BufferedInputStream bufferedInputStream = new BufferedInputStream(dataFileInputStream);
byte[] buffer = new byte[IVerifyDigitalSignature.BYTE_SIZE];
int bufferedInputStreamLength;
while (bufferedInputStream.available() != IVerifyDigitalSignature.ZERO_LENGTH) {
bufferedInputStreamLength = bufferedInputStream.read(buffer);
signature.update(buffer, IVerifyDigitalSignature.ZERO_LENGTH, bufferedInputStreamLength);
}
bufferedInputStream.close();
// Verify the Signature
x509Certificate.verify(pubKey);
verifyDigitalSignature = signature.verify(sigToVerify);
请帮我解决该问题,因为它尚未关闭。
最佳答案
如果您想自己执行此操作,是的,您必须迭代链中的证书从信任 anchor 到您所需的证书,无论它有多长(对于不同的 CA、类别和不同的时间,它可能会有所不同)。使用“父”(下一个更高级别)证书中的公钥验证每个“子”(较低级别)证书上的签名只是一个其中相当小的一部分;还需要许多其他步骤。通常,找到正确的证书就可能是一个问题;如果您已经拥有正确的链条,那么您就拥有了领先优势。但你确定你拥有“正确的”链条吗?通常,给定的证书有多个可能的链,有时其中一些是有效的,但另一些已经过期或变得无法验证。Verisign 特别发布了我相信所有最近的证书都在其 G5 根下,但提供了替代路径对于不是最新的,有时甚至无法更新的依赖者,返回(有效)G1。
大多数情况下的算法在“PKIX”RFC5280中定义。 ,除了 OCSP RFC6960代替 CRL 进行撤销正变得越来越普遍。您可能会忽略跨层次结构和名称约束,据我所知实际上并没有使用它们由 Verisign 等公共(public) CA 提供,以及 CA 确实使用但用户/依赖者不关心的策略内容。 https://security.stackexchange.com/questions/37409/certificate-chain-checking有一个很好但不完整的介绍。
但是你可能会更好使用Java的(实际上是JCE的)CertPathValidator for "PKIX" - 如果需要CertPathBuilder -我已经向您介绍过。这已经由专家编写和测试。只是调用它还是有点复杂,但远没有重写它所做的所有事情那么复杂。
关于java - 我的代码可以验证自签名证书,但在使用 VeriSign 颁发的证书时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26607365/
我使用了以下命令: C:\Verisign>signtool sign /v /ac "MSCV-VSClass3.cer"/s MY /n "ABC Company LTD" /t http://
我正在开发基于 Eclipse 的产品,目前在其上安装插件时遇到问题。尽管证书是由 VeriSign 颁发的(并且插件在导出时使用证书正确签名),但在安装“您信任这些证书吗?”时窗口仍然弹出。 现在,
我希望在我的 Azure 托管站点上安装证书,但据我所知,他们只接受 Verisign 证书。这是不幸的,因为威瑞信非常昂贵。还有其他选择吗? 最佳答案 看起来 Windows Azure MSDN
我正在处理一个本地数据库,并希望到该服务器的所有连接都使用 SSL。我读到自签名 SSL 证书不是很安全,最好使用受信任的证书颁发机构,如 Verisign。是否可以在本地服务器上设置 Verisig
在 Java 桌面应用程序中,我需要连接到 SSL URL。当我尝试时,出现异常: SSLHandshakeException:sun.security.validator.ValidatorExce
我在尝试使用 HttpsURLConnection 连接到我们的后端时验证 Verisign 证书时遇到问题。 当前的认证链:$openssl s_client -connect 主机:443 0 s
我写了一个与网络通信无关的 .Net 应用程序。整个应用程序中没有一行代码使用 NIC,但是我的防火墙在应用程序启动时发现它出于某种原因尝试联系 Verisign。这不会经常发生;事实上,它只发生过两
我的应用程序正在使用 java 安全 API 来签署文件并验证它。在签名时,我使用 PFX 文件和密码作为输入,签名后我使用字节生成签名文件。在验证过程中,我使用签名文件、证书文件和签名文件作为输入。
我正在通过 SSL 使用来自远程服务器的网络服务。 远程服务器有一个Tomcat FE。我们让 Verisign 签署了远程服务器证书,证书链是: o:remote.server.comi:VeriS
我有 glassfish 3.1.2 并且需要配置 SSL,所以我引用了 This site .一切似乎都很好,直到我到达最后一个命令 -import -v -alias myservkey -fil
你好 我写了一个程序,我的老板让我对apk文件进行签名而不是自签名,我如何从任何权威机构(如VeriSign)获得证书? 谢谢 最佳答案 您不能使用 Verisign 或其他商业代码签名证书来签署 A
我有许多来自供应商的内部 .NET 应用程序,它们需要很长时间才能启动。他们的一些服务最多需要 1.5 分钟才能启动。经过进一步调查,我注意到在 Process Explorer 的 TCP/IP 选
我在 Solaris 服务器上运行 tomcat,我想知道如何安装 VeriSign 的中间 CA 证书? 我已经苦苦挣扎了好几天,一直有 keytool 错误:java.io.EOFExceptio
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve th
我在信任库中有 Symantec CA。在与 PayPal 服务器握手期间,我收到“未找到受信任的证书”错误。我在 PayPal 开发人员网站上看到了以下内容 If you receive a han
我正在尝试让 jboss 使用 ssl 协议(protocol),使用之前从 verisign 生成的证书,我将证书、服务器证书和 ca 证书都导入到 keytore 文件中,我配置 server.x
我想使用威瑞信中间 CA 对 J2ME midlet 进行签名。有没有人知道如何做到这一点,或者有谁成功地进行了 verisign 代码签名。请帮我完成这些步骤。 最佳答案 您需要一个 Verisig
我有一个脚本需要使用 cURL 来安全地连接到网站 foo.bar.com,该网站由 *.bar.com 的通配符 SSL 证书覆盖。 通配符证书由威瑞信颁发,所有浏览器都信任它,没有任何问题。但是,
我遇到了一个问题并试图调试它。我们购买了 Verisign 证书。当我们使用时: openssl> s_client -connect myweb.com:443 -showcerts SSL 握手从
我分发了一个 Windows 桌面应用程序,其中所有可执行文件均由威瑞信 3 类代码签名证书进行了数字签名。对于绝大多数用户来说,这似乎工作正常。 然而,少数用户报告证书无效。他们说它会出现消息“证书
我是一名优秀的程序员,十分优秀!