首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在带有自签名证书的web服务上使用WSIT安全性(Glassfish)

在带有自签名证书的web服务上使用WSIT安全性(Glassfish)
EN

Stack Overflow用户
提问于 2011-10-20 11:19:18
回答 1查看 2.8K关注 0票数 2

我使用本指南为Metro:证书创建证书

现在我有了servicestore.jks和clientstore.jks。

当我检查密钥存储时,我发现servicestore.jks中的servicestore.jks是myservicekey,trustedCertEntry是myclientkey。反之亦然,在clientstore.jks。

我在客户机xml中使用这些,服务使用xml。我按照WSIT官方教程在Netbeans中这样做。一切都部署得很好。

因此,在测试来自客户端的方法调用时,我会得到以下异常:

#|2011-10-19T08:59:38.465+0200|INFO|glassfish3.1.1|com.sun.metro.policy|_ThreadID=81;_ThreadName=http-thread-pool-8080(1);|WSP5018:从文件中加载WSIT配置: file:/opt/glassfish3/glassfish/domains/domain1/applications/testwebapp/WEB-INF/classes/META-INF/wsit-client.xml.|# 验证入站消息安全性时出现[#|2011-10-19T08:59:41.171+0200|SEVERE|glassfish3.1.1|com.sun.xml.wss.provider.wsit|_ThreadID=84;_ThreadName=http-thread-pool-8080(4);|WSITPVD0035:错误。自签名证书的验证在com.sun.xml.wss.impl.misc.WSITProviderSecurityEnvironment.validateCertificate(WSITProviderSecurityEnvironment.java:937) at com.sun.xml.ws.security.opt.impl.incoming.X509BinarySecurityToken.validate(X509BinarySecurityToken.java:185) at com.sun.xml.ws.security.opt.impl.incoming.SecurityRecipient.handleSecurityHeader(SecurityRecipient.java:396) at com.sun.xml上失败.ws.security.opt.impl.incoming.SecurityRecipient.cacheHeaders(SecurityRecipient.java:275) at com.sun.xml.ws.security.opt.impl.incoming.SecurityRecipient.validateMessage(SecurityRecipient.java:225) at com.sun.xml.wss.provider.wsit.WSITServerAuthContext.verifyInboundMessage(WSITServerAuthContext.java:586) .

当我尝试在客户端xml中使用一个错误的密码时,我得到了一个不同的异常,当我使用错误的文件名时,我得到了一个文件,而不是找到的异常。所以它至少找到了客户商店。

因此,我认为服务密钥存储可能有问题(我认为它可能使用默认的glassfish,而不是我自己的),并在domain.xml中找到了一些选项。所以我改变了这些:

-Dcom.sun.enterprise.security.httpsOutboundKeyAlias=myservicekey -Djavax.net.ssl.keyStore=${com.sun.aas.instanceRoot}/config/servicestore.jks -Djavax.net.ssl.keyStorePassword=sspas -Djavax.net.ssl.trustStore=${com.sun.aas.instanceRoot}/config/servicestore.jks -Djavax.net.ssl.trustStorePassword=sspass -DSERVER_KEY_ALIAS=myservicekey -DCLIENT_KEY_ALIAS=myclientkey

但是,当我重新启动服务器时,我得到了这个异常,无法访问管理控制台的登录:

.原因: java.io.IOException: Keystore被篡改,或者密码在sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:772),sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55),java.security.KeyStore.load(KeyStore.java:1214),com.sun.enterprise.security.ssl.impl.SecuritySupportImpl.loadKS(SecuritySupportImpl.java:254),com.sun.enterprise.security.ssl.impl.SecuritySupportImpl.loadStores(SecuritySupportImpl.( sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:770):208). 63多个原因: java.security.UnrecoverableKeyException:密码验证在java.security.UnrecoverableKeyException上失败了67

然后,我在WSIT教程中阅读了以下内容:为了在GlassFish上使用WSIT安全性,您必须将受信任的存储区导入Glassfish,并从NetBeans IDE中指定这些证书。

所以我不能用自己的钥匙店?当我改变domain.xml的时候,我错过了什么吗?还是在出现jvm选项之前就出错了?

EN

回答 1

Stack Overflow用户

发布于 2011-10-20 13:20:14

从“验证自签名证书失败”的期望消息来看,我认为服务器不信任签署/加密soap消息的客户端证书。

您应该检查glassfish使用哪个信任库,以及它是否包含客户端证书。我对玻璃鱼不太了解,但这里似乎是一些方向。是作为信任库使用的servicestore.jks,并且真正包含了确切的某些客户端证书。您可以轻松地重新生成clientstore.jks并忘记重新创建信任库。

如果信任库包含预期的证书并实际由glassfish使用,则还应检查客户端发送的证书。查看标题并查看BinarySecurityToken。根据您对WSIT的选择,它包含消息中使用的证书。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7835147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档