国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

死磕GMSSL通信-java/Netty系列(三)

這篇具有很好參考價(jià)值的文章主要介紹了死磕GMSSL通信-java/Netty系列(三)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

死磕GMSSL通信-java/Netty系列(三)

接著上次的博客繼續(xù)完善,上次其實(shí)只是客戶端的改造,這次把服務(wù)端的也補(bǔ)上,netty集成GMSSL實(shí)現(xiàn)GMServer

1、netty_tcnative c代碼改造,這個(gè)是客戶端和服務(wù)端都需要都該的地方

sslcontext.c文件

TCN_IMPLEMENT_CALL(jlong, SSLContext, make)(TCN_STDARGS, jint protocol, jint mode)方法

#elif OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
    // TODO this is very hacky as io.netty.handler.ssl.OpenSsl#doesSupportProtocol also uses this method to test for supported protocols. Furthermore
    // in OpenSSL 1.1.0 the way protocols are enable/disabled changes
    // (SSL_OP_NO_SSLv3,... are deprecated and you should use: https://www.openssl.org/docs/man1.1.0/ssl/SSL_CTX_set_max_proto_version.html)
    if (mode == SSL_MODE_CLIENT) {
        ctx = SSL_CTX_new(GMTLS_client_method());//修改
    } else if (mode == SSL_MODE_SERVER) {
        ctx = SSL_CTX_new(GMTLS_server_method());//修改
    } else {
        ctx = SSL_CTX_new(TLS_method());
    }

客戶端必須注釋掉這行代碼SL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATIONSSL_OP_LEGACY_SERVER_CONNECT 這兩個(gè)選項(xiàng)。這樣做是為了增強(qiáng) SSL/TLS 通信的安全性,避免因兼容性設(shè)置而引入潛在的安全風(fēng)險(xiǎn)。 這個(gè)地方注意,必須要注釋掉,不然會(huì)提示加密套件有漏洞之類的。

    //SSL_CTX_clear_options(c->ctx, SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION | SSL_OP_LEGACY_SERVER_CONNECT);

GmSSL 中對(duì)應(yīng)的國(guó)密算法 SM2 使用的是名為 SM2 P-256V1 的橢圓曲線,其參數(shù)與國(guó)際標(biāo)準(zhǔn)中的曲線不同,專門為國(guó)密算法設(shè)計(jì),所以需要再netty里邊把這個(gè)加上,否則會(huì)提示加密套件不支持之類的錯(cuò)誤提示,再OpenSsl.java這個(gè)文件

private static final String[] DEFAULT_NAMED_GROUPS = { "x25519", "secp256r1", "secp384r1", "secp521r1","sm2p256v1" };

使用也很簡(jiǎn)單,其他就和netty的流程一樣了

   final SslContext sslCtx  = SslContextGMBuilder.forServer(encCertPath, encKeyPath,
                signCertPath, signKeyPath,
                caCertPath).protocols()
        .ciphers(Arrays.asList(
                "TLCP_SM2-WITH-SMS4-SM3"
        ))
        .clientAuth(ClientAuth.NONE)
        .build();
        
        
        // Configure the server.
        EventLoopGroup bossGroup = new NioEventLoopGroup(1);
        EventLoopGroup workerGroup = new NioEventLoopGroup();
        try {
            ServerBootstrap b = new ServerBootstrap();
            final EchoServerHandler serverHandler = new EchoServerHandler();
            b.group(bossGroup, workerGroup)
                    .channel(NioServerSocketChannel.class)
                    .option(ChannelOption.SO_BACKLOG, 100)
                    .handler(new LoggingHandler(LogLevel.INFO))
                    .childHandler(new ChannelInitializer<SocketChannel>() {

                        @Override
                        public void initChannel(SocketChannel ch) throws Exception {
                            ChannelPipeline p = ch.pipeline();
                            p.addLast(sslCtx.newHandler(ch.alloc()));
                            p.addLast(serverHandler);
                        }
                    });

            // Start the server.
            ChannelFuture f = b.bind(8999).sync();

基本代碼和流程已經(jīng)介紹完了,稍后我會(huì)把源碼上傳的github上,方便大家編譯和下載

后續(xù)工作:

1、繼續(xù)實(shí)現(xiàn)其他語(yǔ)言的GMSSL通信

2、代碼上傳到github

參考博客

新手入坑GMSSL(一)Windows下編譯GMSSL并生成CA證書_gmssl證書制作windows-CSDN博客

GmSSL編程實(shí)現(xiàn)gmtls協(xié)議C/S通信(BIO版本)_tassl_demo/mk_tls_cert 下的 sm2certgen.sh-CSDN博客文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-858343.html

到了這里,關(guān)于死磕GMSSL通信-java/Netty系列(三)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 國(guó)密算法:利用python進(jìn)行sm2非對(duì)稱算法的實(shí)現(xiàn),國(guó)密算法庫(kù)gmssl的使用

    我們繼續(xù)來(lái)進(jìn)行國(guó)密算法的演示。 本篇演示sm2非對(duì)稱算法的實(shí)現(xiàn),國(guó)密算法庫(kù)gmssl的使用。 sm2: 即橢圓曲線公鑰密碼算法,是由國(guó)家密碼管理局發(fā)布的; 非對(duì)稱加密算法,即有一對(duì)不一樣的密鑰:公鑰和私鑰,公鑰用來(lái)加密,私鑰用來(lái)解密; 公鑰和私鑰:公鑰,可以公開。

    2024年02月06日
    瀏覽(27)
  • 1Panel使用GMSSL+Openresty實(shí)現(xiàn)國(guó)密/RSA單向自適應(yīng)

    1Panel使用GMSSL+Openresty實(shí)現(xiàn)國(guó)密/RSA單向自適應(yīng)

    本文 首發(fā)于 Anyeの小站,轉(zhuǎn)載請(qǐng)取得作者同意。 國(guó)密算法是國(guó)家商用密碼算法的簡(jiǎn)稱。自2012年以來(lái),國(guó)家密碼管理局以《中華人民共和國(guó)密碼行業(yè)標(biāo)準(zhǔn)》的方式,陸續(xù)公布了SM2/SM3/SM4等密碼算法標(biāo)準(zhǔn)及其應(yīng)用規(guī)范。其中“SM”代表“商密”,即用于商用的、不涉及國(guó)家秘密的

    2024年02月19日
    瀏覽(21)
  • 【netty系列-01】深入理解網(wǎng)絡(luò)通信基本原理和tcp/ip協(xié)議

    【netty系列-01】深入理解網(wǎng)絡(luò)通信基本原理和tcp/ip協(xié)議

    Netty系列整體欄目 內(nèi)容 鏈接地址 【一】深入理解網(wǎng)絡(luò)通信基本原理和tcp/ip協(xié)議 https://zhenghuisheng.blog.csdn.net/article/details/136359640 【二】深入理解Socket本質(zhì)和BIO https://zhenghuisheng.blog.csdn.net/article/details/136549478 在最初的網(wǎng)絡(luò)中,是借鑒于這個(gè)OSI七層網(wǎng)絡(luò)模型,而在實(shí)際開發(fā)應(yīng)用中

    2024年03月17日
    瀏覽(32)
  • Netty集成國(guó)密開源基礎(chǔ)密碼庫(kù)Tongsuo

    目錄 一、Tongsuo是啥? 二、為什么選擇Tongsuo? 三、Netty的實(shí)現(xiàn) 四、編譯方法 ?1.Netty ?2.Netty-tcnative ?3.Tongsuo 五、集成過(guò)程 ?1.Netty-tcnative編譯Tongsuo密碼庫(kù) ?2.Netty-tcnative調(diào)用Tongsuo密碼庫(kù) ?3.Netty調(diào)用Netty-tcnative 六、測(cè)試TLCP協(xié)議 總結(jié) 前言 ????????當(dāng)前的軟件形勢(shì)來(lái)看,國(guó)密和

    2024年02月04日
    瀏覽(40)
  • 快速入門Java NIO(Not I/O)的網(wǎng)絡(luò)通信框架--Netty

    快速入門Java NIO(Not I/O)的網(wǎng)絡(luò)通信框架--Netty

    了解netty前需要對(duì)nio有一定認(rèn)識(shí),該筆記基礎(chǔ)來(lái)自bilinbili黑馬,在此基礎(chǔ)上自己學(xué)習(xí)的筆記,添加了一些自己的理解 了解java 非阻塞io編程 1.1 Netty 是什么? Netty 是一個(gè)異步(基于多線程)的、基于事件驅(qū)動(dòng)(多路復(fù)用的那寫事件驅(qū)動(dòng))的網(wǎng)絡(luò)應(yīng)用框架,用于快速開發(fā)可維護(hù)、高性能的

    2024年01月17日
    瀏覽(25)
  • 國(guó)密算法(SM2)java語(yǔ)言的實(shí)現(xiàn):利用bcprov庫(kù)來(lái)實(shí)現(xiàn)SM2算法,非對(duì)稱算法

    隨著密碼技術(shù)和計(jì)算機(jī)技術(shù)的發(fā)展,目前常用的1024位RSA算法面臨嚴(yán)重的安全威脅,我們國(guó)家密碼管理部門經(jīng)過(guò)研究,決定采用SM2橢圓曲線算法替換RSA算法。 SM2是非對(duì)稱加密算法; SM2是基于橢圓曲線密碼的公鑰密碼算法標(biāo)準(zhǔn); SM2是國(guó)密算法,用于替換RSA/DH/ECDSA/ECDH等國(guó)際算法

    2024年02月03日
    瀏覽(18)
  • Springboot使用Netty連接Tcp接口(c語(yǔ)言二進(jìn)制字節(jié)碼轉(zhuǎn)java字符串)

    一、引入netty的jar包 io.netty netty-all 二、使用netty框架 1、創(chuàng)建客戶端 package com.iflytek.digtal.netty; import io.netty.bootstrap.Bootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel

    2024年02月20日
    瀏覽(27)
  • CSS3 轉(zhuǎn)換,死磕原理,寫給前端開發(fā)的小程序布局指南

    CSS3 轉(zhuǎn)換,死磕原理,寫給前端開發(fā)的小程序布局指南

    height: 100px; border: 1px solid red; background-color: #cccccc; position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); } 2D 縮放 -?scale() scale()?方法用于改變?cè)氐某叽纭?根據(jù)給定的高度和寬度。 scale(x)?或者?scale(x,y) 一個(gè)參數(shù)時(shí),第二個(gè)參數(shù)默認(rèn)和第一個(gè)一樣。 可取值 -? 默認(rèn)為1

    2024年03月26日
    瀏覽(28)
  • 國(guó)密SSL通信協(xié)議詳細(xì)介紹與抓包分析

    國(guó)密SSL通信協(xié)議詳細(xì)介紹與抓包分析

    最近研究有關(guān)SSL協(xié)議的物聯(lián)網(wǎng)安全協(xié)議,看了很多資料并且結(jié)合TASSL在ubuntu上跑了一個(gè)簡(jiǎn)單的demo,因此有了一些自己的理解,那么就詳細(xì)講解一下我所知道的SSL,相信這一篇文章就可以讓你全面了解SSL。 SSL:Secure Sockets Layer 安全套接字協(xié)議 ,位于 TCP/IP 協(xié)議與各種應(yīng)用層協(xié)議

    2023年04月17日
    瀏覽(20)
  • Fabric系列 - 國(guó)密改造

    Hyperledger Fabric 國(guó)密改造項(xiàng)目介紹 有關(guān)bccsp的改造方案的RFC文檔 Fabric國(guó)密改造項(xiàng)目由Hyperlegder中國(guó)工作組(TWGC)發(fā)起執(zhí)行,旨在構(gòu)建支持國(guó)密算法且密碼算法可靈活擴(kuò)展的Fabric平臺(tái),方便世界各國(guó)開發(fā)者快速接入自定義的密碼算法。 根據(jù)改造需求分析,F(xiàn)abric國(guó)密改造方案由三

    2024年02月11日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包