Saya memiliki WebServiceProject lawas yang terhubung ke layanan web berkemampuan ws-security menggunakan axis2 & benteng.

Ini axis2.xml saya:

<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>

Saya sedang mempersiapkan lingkungan pengujian dan mengatur crypto.properties dengan benar dan tidak mengubah kode apa pun karena berfungsi dengan baik pada produksi dan saya tidak terbiasa dengan axis2. Inilah pesan kesalahan saya:

[PERINGATAN] Tidak ada transportReceiver untuk org.Apache.axis2.transport.http.AxisServletListener ditemukan. Sebuah instance untuk HTTP akan dikonfigurasi secara otomatis. Harap perbarui file axis2.xml Anda!

C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\WebServiceProject\WEB-INF

20-Mei-2020 15:19:01.862 PARAH [https-jsse-nio-443-exec-1]

org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun Kesalahan menjalankan prosesor soket java.lang.NullPointerException di org.bouncycastle.crypto.signers.PSSSigner.generateSignature (Sumber Tidak Dikenal) di org.bouncycastle.jce.provider.JDKPSSSigner .engineSign(Sumber Tidak Dikenal) di java.base/java.security.Signature$Delegate.engineSign(Signature.java: 1403) di java.base/java.security.Signature.sign(Signature.java:712) di java.base /sun.security.ssl.CertificateVerify$T13CertificateVerifyMessage.(CertificateVerify.java:930) di java.base/sun.security.ssl.CertificateVerify$T13CertificateVerifyProducer.onProduceCertificateVerify(CertificateVerify.java/sunsecurity:1110) di java. ssl.CertificateVerify$T13CertificateVerifyProducer.produce(CertificateVerify.java:1103) di java.base/sun.security.ssl.SSLHandshake.produce(SSLHandshake.java:440) di java.base/sun.security.ssl.ClientHello$T13ClientHelloConsumer.goServerHello(ClientHello.java:1252) di java.base/sun.security.ssl.ClientHello$T13ClientHelloConsumer.consume(ClientHello.java:1188) di java.base /sun.security.ssl.ClientHello$ClientHelloConsumer.onClientHello(ClientHello.java:851) di java.base/sun.security.ssl.ClientHello$ClientHelloConsumer.consume(ClientHello.java:812) di java.base/sun.security .ssl.SSLHandshake.consume(SSLHandshake.java:396) di java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:444) di java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction .run(SSLEngineImpl.java:1260) di java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1247) di java.base/java.security.AccessController.doPrivileged(AccessController.java :691) di java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask.run(SSLEngineImpl.java:1192) di org.apache.tomcat.util.net.SecureNioChannel.tasks(SecureNioChannel.java:443) di org.apache.tomcat .util.net.SecureNioChannel.handshakeUnwrap(SecureNioChannel.java:507) di org.apache.tomcat.util.net.SecureNioChannel.handshake(SecureNioChannel.java:238) di org.apache.tomcat.util.net.NioEndpoint$SocketProcessor .doRun(NioEndpoint.java:1575) di org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) di java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128 ) di java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) di org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) di java. base/java.lang.Thread.run(Utas. jawa:830)

Dan bagian bawah jejak:

Disebabkan oleh: javax.xml.stream.XMLStreamException: Mencoba menulis END_DOCUMENT ketika dokumen tidak memiliki root (mis. mencoba mengeluarkan dokumen kosong). di com.ctc.wstx.sw.BaseStreamWriter.throwOutputError(BaseStreamWriter.java:1473) dan com.ctc.wstx.sw.BaseStreamWriter.reportNwfStructure(BaseStreamWriter.java:1502) di com.ctc.wstx.sw. (BaseStreamWriter.java:1663) di com.ctc.wstx.sw.BaseStreamWriter.close(BaseStreamWriter.java:288) di org.apache.axiom.util.stax.wrapper.XMLStreamWriterWrapper.close(XMLStreamWriterWrapper.java:46) di org.apache.axiom.om.impl.MTOMXMLStreamWriter.close(MTOMXMLStreamWriter.java:222) di org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:192) di org.apache.axis2 transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:74) ... 54 lainnya

Sepertinya tidak dapat menemukan semacam tanda tangan. Tapi saya cukup yakin saya telah membuat semua perubahan dengan benar.

Apa yang saya lewatkan?

0
Hamit 20 Mei 2020, 15:43

2 jawaban

Jawaban Terbaik

Saya memiliki pengecualian yang sama ketika saya mencoba mengatur Konektor HTTPS (dengan TLS 1.3) di Tomcat 9.0.16 dan Open JDK 11.0.8 di linux x64. Saya menggunakan BouncyCastle (BC) v1.63 di WebApp Lib saya.

 java.lang.NullPointerException
    at org.bouncycastle.crypto.signers.PSSSigner.generateSignature(Unknown Source)
    at org.bouncycastle.jcajce.provider.asymmetric.rsa.PSSSignatureSpi.engineSign(Unknown Source)
    at java.base/java.security.Signature$Delegate.engineSign(Signature.java:1404)
    at java.base/java.security.Signature.sign(Signature.java:713)

Kesalahan ini telah diberitahukan oleh Komunitas BC. Mengenai masalah BC ini, jelas bahwa saya perlu memutakhirkan lib BC saya:

Saya memutakhirkan dependensi aplikasi web dengan BC 1.66, sekarang berfungsi sempurna dengan OpenJDK 11.0.8.

2
jcamsler 19 Oktober 2020, 09:55

Saya menggunakan JDK 13, saya beralih kembali ke JDK 8, dan ya, berhasil!

0
Hamit 20 Mei 2020, 13:33