netty整合websocket支持自签证书出现netty websocket ssl Received fatal alert: certificate_unknown

这篇具有很好参考价值的文章主要介绍了netty整合websocket支持自签证书出现netty websocket ssl Received fatal alert: certificate_unknown。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

自签证书

  1. win+r cmd

received fatal alert: certificate_unknown,netty,ssl,netty
  1. 生成自己jks文件,指向自己要生成jks的文件位置下,我直接生成到项目resources下

#换成自己的本地ip
keytool -genkey -alias server -keyalg RSA -validity 3650 -keystore D:\code\my_code\netty-demo-m\src\main\resources\mystore.jks -ext san=ip:192.168.3.7,ip:127.0.0.1,dns:localhost -storepass 1234567
received fatal alert: certificate_unknown,netty,ssl,netty
keytool -list -keystore  mystore.jks -v  //查看信息

2.生成证书

keytool  -alias server -exportcert  -keystore D:\code\my_code\netty-demo-m\src\main\resources\mystore.jks -file D:\code\my_code\netty-demo-m\src\main\resources\mystore.cer -storepass 1234567
received fatal alert: certificate_unknown,netty,ssl,netty
3.迁移到行业标志
keytool -importkeystore -srckeystore D:\code\my_code\netty-demo-m\src\main\resources\mystore.jks -destkeystore D:\code\my_code\netty-demo-m\src\main\resources\mystore.jks -deststoretype pkcs12

成功生成证书

received fatal alert: certificate_unknown,netty,ssl,netty

项目运行

将jks文件考入项目resources下

received fatal alert: certificate_unknown,netty,ssl,netty

yaml配置:


server:
  port: 8080
  ssl:
    key-store: classpath:mystore.jks
    key-store-password: 1234567
    key-store-type: JKS
#    key-alias: server
    enabled: true

netty证书加载

这里我就只上关键代码了


@Override
    protected void initChannel(SocketChannel ch) throws Exception {
        if (openssl){ //true
                SSLEngine sslEngine = getServerSslContext().createSSLEngine();
                sslEngine.setNeedClientAuth(false);
                sslEngine.setUseClientMode(false);
                SslHandler sslHandler = new SslHandler(sslEngine);
                ch.pipeline().addLast(sslHandler);
        }
        ch.pipeline().addLast("http-codec", new HttpServerCodec()); // HTTP编码解码器
        ch.pipeline().addLast("aggregator", new HttpObjectAggregator(65536)); // 把HTTP头、HTTP体拼成完整的HTTP请求
        ch.pipeline().addLast("http-chunked", new ChunkedWriteHandler()); // 方便大文件传输,不过实质上都是短的文本数据
        ch.pipeline().addLast("websocket-handler",webSocketServerHandler);
        ch.pipeline().addLast("http-handler",websocketNettyRequestHandler);
    }


    public SSLContext getServerSslContext() throws Exception {

        DefaultResourceLoader resourceLoader = new DefaultResourceLoader();
        org.springframework.core.io.Resource resource = resourceLoader.getResource("classpath:mystore.jks"); 
        InputStream inputStream = resource.getInputStream();

        log.info("加载了密码: {}", sslPassword);

        char[] passArray = sslPassword.toCharArray();
        SSLContext sslContext = SSLContext.getInstance("SSLv3");
        KeyStore ks = KeyStore.getInstance("JKS");
        //加载keytool 生成的文件
        ks.load(inputStream, passArray);
        KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
        kmf.init(ks, passArray);
        sslContext.init(kmf.getKeyManagers(), null, null);
        inputStream.close();
        return sslContext;
    }

不添加信任netty websocket ssl Received fatal alert: certificate_unknown。

received fatal alert: certificate_unknown,netty,ssl,netty

错误原因

这并不是程序的问题,这是证书本身的问题,主机并不承认这个证书导致的。

received fatal alert: certificate_unknown,netty,ssl,netty

对证书添加信任

  1. 打开证书

received fatal alert: certificate_unknown,netty,ssl,netty
  1. 计算机添加信任

点击安装证书 - 选择本地计算机 - 将所有的证书都放入下列存储 - 受信任的根证书颁发机构

received fatal alert: certificate_unknown,netty,ssl,netty

添加完成后就不会有不信任了。

received fatal alert: certificate_unknown,netty,ssl,netty
  1. 导入证书到信任库中


keytool -import -alias server -keystore mycacert -file D:\code\my_code\netty-demo-m\src\main\resources\mystore.cer -storepass 1234567
received fatal alert: certificate_unknown,netty,ssl,netty

在java bin 目录下会出现

received fatal alert: certificate_unknown,netty,ssl,netty

再次运行

received fatal alert: certificate_unknown,netty,ssl,netty

注意

值得一提的是,自签的证书有且之能在本机使用,如将A机生成的证书拷贝B机使用也会出现同样的错误。文章来源地址https://www.toymoban.com/news/detail-781335.html

到了这里,关于netty整合websocket支持自签证书出现netty websocket ssl Received fatal alert: certificate_unknown的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • javax.net.ssl.SSLException: Received fatal alert: protocol_version解决

    今天在开发过程中,调用一个https的接口引发错误 在Java 1.8上,默认TLS协议是v1.2。在Java 1.6和1.7上,默认是已废弃的TLS1.0,由于此项目使用的是jdk1.6,因此引发错误。 解决方法1: 在发起请求前面设置 TLSv1.2 协议 解决方法2: 在发起请求前忽略ssl认证: 工具类: 使用方法:

    2024年02月11日
    浏览(52)
  • 排查https请求出现received fatal alert: internal_error的问题

    目录 背景 https网络协议交互 net.debug查看信息 Apache Httpclient与 Netty的http请求  server_name 错误原因 修复方案 方案一 方案二 通知某个商户时,突然出现大量的https握手失败了,出现received fatal alert: internal_error错误。商户sre那边当时将多个域名绑定在一个主机上,开了SNI(Server Nam

    2024年02月14日
    浏览(47)
  • Caused by: javax.net.ssl.SSLException: Received fatal alert: protocol_version

        at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1575)     at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:854)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     

    2024年02月06日
    浏览(53)
  • Java(92):javax.net.ssl.SSLException:Received fatal alert: protocol_version的解决方法

    2022-05-19 15:11:56 [ERROR] com.cipherxxx.utils.HttpsClientUtils - javax.net.ssl.SSLException: Received fatal alert: protocol_version 在Java 1.8上,默认TLS协议是v1.2。在Java 1.6和1.7上,默认是已废弃的TLS1.0,由于此项目使用的是jdk1.6,因此引发错误。 ------------------------------------------------------------- 服务端的

    2024年02月16日
    浏览(33)
  • https请求报错:javax.net.ssl.SSLHandshakeException:Received fatal alert: unrecognized_name 的解决过程

    提示:本地调试正常: 项目场景: 部署到WebSphere服务器上就会报上述错误; 一度认为是WebSphere服务器上的配置有问题,经过多次偿试,最终解决问题发现和服务配置无关; 测试环境使用HttpClient发送https请求下载附件时报错: 提示:项目地址是http,需要访问的地址是https: 因为访问

    2024年02月05日
    浏览(47)
  • kettle工具连接MySQL数据库报错 Caused by: javax.net.ssl.SSLException: Received fatal alert: internal_error

            前几天为了修复MySQL数据库漏洞,项目上从5.7.41版本升级到了5.7.43,今天在使用kettle时发现数据库突然连不上了,测试连接报如下错误:            Error connecting to database: (using class org.gjt.mm.mysql.Driver) Communications link failure The last packet successfully received from the serve

    2024年02月06日
    浏览(50)
  • SpringBoot整合Netty+Websocket实现消息推送

           Netty是一个高性能、异步事件驱动的网络应用框架,用于快速开发可维护的高性能协议服务器和客户端。以下是Netty的主要优势: 高性能 :Netty基于NIO(非阻塞IO)模型,采用事件驱动的设计,具有高性能的特点。它通过零拷贝技术、内存池化技术等手段,进一步提高

    2024年01月20日
    浏览(43)
  • 基于netty框架不使用SSL证书,实现websocket数据加密传输

    1、简介 2、实现方式 3、服务端主要代码 4、客户端主要代码 5、调用方式 为什么不使用SSL证书? 1、服务器运行在专网环境,不能访问互联网。证书有有效期,CA机构规定,证书有效期最多2年。在客户的专网环境里更新和维护证书就会增加运营成本。 实现逻辑? 参照SSL的实

    2024年02月04日
    浏览(52)
  • netty/websocket服务器配置阿里云SSL证书安全访问配置,亲测有效

    背景:java 微服务包括https访问和websocket访问,当https接口访问ws请求时报错,因为https能访问wss。 申请阿里云免费证书后,搜索各种教程比如nginx配置方式、netty访问证书等。走了不少弯路,终于走通一种。 关键点:1、因为使用了netty,nginx配置wss的方式没有走通。需要将证书放

    2024年02月01日
    浏览(40)
  • MAC: 自己制作https的ssl证书(自己签发免费ssl证书)(OPENSSL生成SSL自签证书)

    现在https大行其道, ssl又是必不可少的环节. 今天就教大家用开源工具openssl自己生成ssl证书的文件和私钥 MAC电脑 openssl工具自行搜索安装 1、终端执行命令 2、输入密码,这里会输入两次. 填写一样即可. 随意填写一个. 下一步就会删除这个密码 3、输入密码,这里会输入两次. 填写

    2024年04月14日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包