【发布时间】:2020-09-06 20:08:57
【问题描述】:
我有一个旧版 WebServiceProject,它使用 axis2 和壁垒连接到启用了 ws-security 的 Web 服务。
这是我的axis2.xml:
<parameter name="OutflowSecurity">
<action>
<items>Timestamp UsernameToken Encrypt Signature</items>
<user>myUser</user>
<passwordCallbackClass>tr.com.mypackage.PWCBHandler</passwordCallbackClass>
<signaturePropFile>crypto.properties</signaturePropFile>
<signatureKeyIdentifier>IssuerSerial</signatureKeyIdentifier>
</action>
</parameter>
<parameter name="InflowSecurity">
<action>
<items>Timestamp Encrypt Signature</items>
<user>myUser</user>
<passwordCallbackClass>tr.com.mypackage.PWCBHandler</passwordCallbackClass>
<signaturePropFile>crypto.properties</signaturePropFile>
<signatureKeyIdentifier>IssuerSerial</signatureKeyIdentifier>
</action>
</parameter>
我正在准备测试环境并正确设置了crypto.properties,并且没有更改任何代码,因为它在生产中运行良好,而且我不熟悉axis2。 这是我的错误信息:
[WARN] 没有传输接收器 找到 org.apache.axis2.transport.http.AxisServletListener。一个实例 对于 HTTP 将自动配置。请更新您的 axis2.xml 文件!
C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\WebServiceProject\WEB-INF
2020 年 5 月 20 日 15:19:01.862 严重 [https-jsse-nio-443-exec-1]
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun 错误 运行套接字处理器 java.lang.NullPointerException 在 org.bouncycastle.crypto.signers.PSSSigner.generateSignature(未知 资源) 在 org.bouncycastle.jce.provider.JDKPSSSigner.engineSign(未知来源) 在 java.base/java.security.Signature$Delegate.engineSign(Signature.java:1403) 在 java.base/java.security.Signature.sign(Signature.java:712) 在 java.base/sun.security.ssl.CertificateVerify$T13CertificateVerifyMessage.(CertificateVerify.java:930) 在 java.base/sun.security.ssl.CertificateVerify$T13CertificateVerifyProducer.onProduceCertificateVerify(CertificateVerify.java:1110) 在 java.base/sun.security.ssl.CertificateVerify$T13CertificateVerifyProducer.produce(CertificateVerify.java:1103) 在 java.base/sun.security.ssl.SSLHandshake.produce(SSLHandshake.java:440) 在 java.base/sun.security.ssl.ClientHello$T13ClientHelloConsumer.goServerHello(ClientHello.java:1252) 在 java.base/sun.security.ssl.ClientHello$T13ClientHelloConsumer.consume(ClientHello.java:1188) 在 java.base/sun.security.ssl.ClientHello$ClientHelloConsumer.onClientHello(ClientHello.java:851) 在 java.base/sun.security.ssl.ClientHello$ClientHelloConsumer.consume(ClientHello.java:812) 在 java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:396) 在 java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:444) 在 java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1260) 在 java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1247) 在 java.base/java.security.AccessController.doPrivileged(AccessController.java:691) 在 java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask.run(SSLEngineImpl.java:1192) 在 org.apache.tomcat.util.net.SecureNioChannel.tasks(SecureNioChannel.java:443) 在 org.apache.tomcat.util.net.SecureNioChannel.handshakeUnwrap(SecureNioChannel.java:507) 在 org.apache.tomcat.util.net.SecureNioChannel.handshake(SecureNioChannel.java:238) 在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1575) 在 org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 在 java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 在 java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 在 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 在 java.base/java.lang.Thread.run(Thread.java:830)
还有底部的痕迹:
原因:javax.xml.stream.XMLStreamException:试图写入 END_DOCUMENT 当文档没有根时(即尝试输出空 文档)。 在 com.ctc.wstx.sw.BaseStreamWriter.throwOutputError(BaseStreamWriter.java:1473) 在 com.ctc.wstx.sw.BaseStreamWriter.reportNwfStructure(BaseStreamWriter.java:1502) 在 com.ctc.wstx.sw.BaseStreamWriter.finishDocument(BaseStreamWriter.java:1663) 在 com.ctc.wstx.sw.BaseStreamWriter.close(BaseStreamWriter.java:288) 在 org.apache.axiom.util.stax.wrapper.XMLStreamWriterWrapper.close(XMLStreamWriterWrapper.java:46) 在 org.apache.axiom.om.impl.MTOMXMLStreamWriter.close(MTOMXMLStreamWriter.java:222) 在 org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:192) 在 org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:74) ... 54 更多
它似乎无法找到某种签名。但我很确定我所做的所有更改都是正确的。
我错过了什么?
【问题讨论】:
标签: encryption axis2 ws-security