netty wss证书验证失败

简介: netty wss证书验证失败

出现这个


Caused by: javax.net.ssl.SSLHandshakeException: no cipher suites in common
可能是证书路径,或者证书有问题
我再重构系统的时候碰到了这个问题ws的时候没问题,wss的时候证书验证不通过。
但是老版本的可以正常跑,搞了一两天发现是加载证书的时候路径有问题
%% Initialized:  [Session-1, SSL_NULL_WITH_NULL_NULL]
nioEventLoopGroup-9-1, fatal error: 40: no cipher suites in common
javax.net.ssl.SSLHandshakeException: no cipher suites in common
%% Invalidated:  [Session-1, SSL_NULL_WITH_NULL_NULL]
nioEventLoopGroup-9-1, SEND TLSv1.2 ALERT:  fatal, description = handshake_failure
nioEventLoopGroup-9-1, WRITE: TLSv1.2 Alert, length = 2
nioEventLoopGroup-9-1, fatal: engine already closed.  Rethrowing javax.net.ssl.SSLHandshakeException: no cipher suites in common
[Raw write]: length = 7
SSL_NULL_WITH_NULL_NULL 这个主要是匹配加密算法的
复制代码


运行参数可以打印网络连接的过程和数据


-Djavax.net.debug=all
复制代码


ssl的流程还是复杂的,可以简单的看下里面的主要信息

服务端日志


如果打印的日志如果没有下面这个,可能是证书加载的路径有问题
*** ServerHello, TLSv1.2
复制代码


客户端的协议


*** ClientHello, TLSv1.2
复制代码


网络异常,图片无法展示
|


证书生成工具 mkcert


mkcert -p12-file keystore.p12 -pkcs12 -client 192.168.0.103 127.0.0.1 localhost
复制代码


或者 keytool


注意指定这里的RSA算法
keytool -genkey -keysize 2048 -validity 365 -keyalg RSA -keypass changeit -storepass changeit -keystore wss.jks
复制代码


查看web请求的协议


网络异常,图片无法展示
|


wss的证书加载


SSLContext sslContext = SslUtil.createSSLContext("PKCS12",
        ResourceUtils.getFile("classpath:keystore.p12").getPath(), "changeit"); // SSLEngine engine =
    sslContext.createSSLEngine();
    SSLEngine sslEngine = sslContext.createSSLEngine();
    sslEngine.setNeedClientAuth(false);
    sslEngine.setUseClientMode(false);
    logger.info(sslContext.getProtocol());
    logger.info("支持的协议: " + Arrays.asList(sslEngine.getSupportedProtocols()));
    logger.info("启用的协议: " + Arrays.asList(sslEngine.getEnabledProtocols()));
    logger.info("支持的加密套件: " + Arrays.asList(sslEngine.getSupportedCipherSuites()));
    logger.info("启用的加密套件: " + Arrays.asList(sslEngine.getEnabledCipherSuites()));
    pipeline.addFirst(new SslHandler(sslEngine));
复制代码


public class SslUtil {
    private static volatile SSLContext sslContext = null;
    public static SSLContext createSSLContext(String type ,String path ,String password) throws Exception {
        if(null == sslContext){
            synchronized (SslUtil.class) {
                if(null == sslContext){
                    // 支持JKS、PKCS12
                    KeyStore ks = KeyStore.getInstance(type);
                    // 证书存放地址
                    InputStream ksInputStream = new FileInputStream(path);
                    //InputStream ksInputStream = SslUtil.class.getClass().getClassLoader().getResourceAsStream("keystore.p12");
                    ks.load(ksInputStream, password.toCharArray());
                    KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
                    kmf.init(ks, password.toCharArray());
                    sslContext = SSLContext.getInstance("TLSv1.2");
                    sslContext.init(kmf.getKeyManagers(), null, null);
                }
            }
        }
        return sslContext;
    }
}


相关文章
|
8月前
|
Java API 开发者
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录——slf4j 介绍
在软件开发中,`System.out.println()`常被用于打印信息,但大量使用会增加资源消耗。实际项目推荐使用slf4j结合logback输出日志,效率更高。Slf4j(Simple Logging Facade for Java)是一个日志门面,允许开发者通过统一方式记录日志,无需关心具体日志系统。它支持灵活切换日志实现(如log4j或logback),且具备简洁占位符和日志级别判断等优势。阿里巴巴《Java开发手册》强制要求使用slf4j,以保证日志处理方式的统一性和维护性。使用时只需通过`LoggerFactory`创建日志实例即可。
605 0
|
存储 JavaScript 前端开发
史上最详细JavaScript数组去重方法(11种)
使用set和Array.from ()方法 array.from可以将set结构转成数组
323 7
|
11月前
|
人工智能 算法 数据挖掘
开源更新|通义3D-Speaker多说话人日志功能
开源更新|通义3D-Speaker多说话人日志功能
|
人工智能 Java 测试技术
JDK11下Mock框架进化:从PowerMockito到Mockito Only
本文探讨了从使用PowerMock的测试环境迁移到仅使用Mockito(Mockito Only)策略的必要性和实践方法。
525 10
|
存储 前端开发 API
PyMuPDF 1.24.4 中文文档(四)(1)
PyMuPDF 1.24.4 中文文档(四)
184 0
|
Java 网络安全
Java 信任所有SSL证书(解决PKIX path building failed问题)
Java 信任所有SSL证书(解决PKIX path building failed问题)
27125 3
|
机器学习/深度学习 搜索推荐 算法
AIGC对金融行业的影响
【1月更文挑战第20天】AIGC对金融行业的影响
388 4
AIGC对金融行业的影响
|
负载均衡 安全 应用服务中间件
Nginx + Tomcat+HTTP/HTTPS实现负载均衡实例
Nginx + Tomcat+HTTP/HTTPS实现负载均衡实例
387 0
|
Web App开发 Serverless Linux
以 selenium + chromium 为例在函数计算中安装复杂依赖
以 selenium + chromium 为例在函数计算中安装复杂依赖
1020 0
|
安全 网络安全
逆向小知识:SSLHandshake: Received fatal alert: certificate_unknown
逆向小知识:SSLHandshake: Received fatal alert: certificate_unknown
1981 0
逆向小知识:SSLHandshake: Received fatal alert: certificate_unknown