You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:调用REST接口时Spring Boot应用出现Socket处理器错误(未引入BouncyCastle)

问题描述

我的Spring Boot应用调用某REST接口时突然报错,未在pom.xml中手动引入BouncyCastle依赖,当前使用JDK版本为1.8.0_302,求解决建议。

错误日志
20-10-2022 10:02:25.576 [ERROR] - [https-jsse-nio-27100-exec-1] o.apache.tomcat.util.net.NioEndpoint     : Error running socket processor
java.lang.NullPointerException: null
    at org.bouncycastle.crypto.signers.PSSSigner.generateSignature(Unknown Source)
    at org.bouncycastle.jcajce.provider.asymmetric.rsa.PSSSignatureSpi.engineSign(Unknown Source)
    at java.security.Signature$Delegate.engineSign(Signature.java:1382)
    at java.security.Signature.sign(Signature.java:698)
    at sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.<init>(DHServerKeyExchange.java:162)
    at sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeProducer.produce(DHServerKeyExchange.java:481)
    at sun.security.ssl.ClientHello$T12ClientHelloConsumer.consume(ClientHello.java:1020)
    at sun.security.ssl.ClientHello$ClientHelloConsumer.onClientHello(ClientHello.java:727)
    at sun.security.ssl.ClientHello$ClientHelloConsumer.consume(ClientHello.java:693)
    at sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:377)
    at sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:444)
    at sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:968)
    at sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:955)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.security.ssl.SSLEngineImpl$DelegatedTask.run(SSLEngineImpl.java:902)
    at org.apache.tomcat.util.net.SecureNioChannel.tasks(SecureNioChannel.java:443)
    at org.apache.tomcat.util.net.SecureNioChannel.handshakeUnwrap(SecureNioChannel.java:507)
    at org.apache.tomcat.util.net.SecureNioChannel.handshake(SecureNioChannel.java:238)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1616)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)
解决建议
  • 排查传递依赖:执行mvn dependency:tree命令生成依赖树,找出间接引入BouncyCastle的依赖项,确认其版本是否与JDK 1.8兼容。
  • 排除冲突依赖:如果发现传递引入的BouncyCastle版本存在兼容性问题,在pom.xml中对应依赖下添加排除配置,示例:
    <dependency>
        <groupId>你的依赖groupId</groupId>
        <artifactId>你的依赖artifactId</artifactId>
        <version>你的依赖版本</version>
        <exclusions>
            <exclusion>
                <groupId>org.bouncycastle</groupId>
                <artifactId>bcprov-jdk15on</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.bouncycastle</groupId>
                <artifactId>bcpkix-jdk15on</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
  • 检查JDK安全配置:打开JAVA_HOME/jre/lib/security/java.security文件,查看是否有security.provider条目包含BouncyCastle,如有则注释掉,让JDK使用默认安全提供者。
  • 手动引入兼容版本:如果业务确实需要BouncyCastle,直接在pom.xml中引入兼容JDK 1.8的稳定版本(如1.68及以上),覆盖传递依赖的旧版本。
  • 调整SSL加密套件:错误发生在SSL握手阶段,尝试禁用DH相关加密套件,改用RSA或ECDH类套件,避免因算法不兼容导致的签名NPE。

内容的提问来源于stack exchange,提问作者user2298581

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 17:56:09