zoukankan      html  css  js  c++  java
  • Netty 实现SSL安全连接(wss://)

    原文:Netty5使用自签证书实现SSL安全连接

    在客户端是https:// 协议下,使用ws:// 协议连接会报错的,得需要使用wss:// 连接。(ip连接失败时使用域名连接)

    netty创建服务端时,在初始化channl时,把handler加入ChannelPipeline时,在最开始那个handler设为SslHandler:

    SSLContext sslContext = SslUtil.createSSLContext(type ,path ,password); ///SslUtil自定义类
    SSLEngine sslEngine = sslContext.createSSLEngine(); sslEngine.setUseClientMode(false); /// 是否使用客户端模式 sslEngine.setNeedClientAuth(false); ////是否需要验证客户端
    pipeline.addLast("ssl", new SslHandler(sslEngine));
    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){

            KeyStore ks = KeyStore.getInstance(type); /// "JKS"        
            InputStream ksInputStream = new FileInputStream(path); /// 证书存放地址
              ks.load(ksInputStream, password.toCharArray());
              KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
              kmf.init(ks, password.toCharArray());
              SSLContext sslContext = SSLContext.getInstance("TLS");
              sslContext.init(kmf.getKeyManagers(), null, null);
          }
        }
      }
    return sslContext; }

    自制证书:

    #keytool -genkey -keysize 2048 -validity 365 -keyalg RSA -dnam e "CN=gornix.com" -keypass 654321 -storepass 123456 -keystore gornix.jks

    keytool为JDK提供的生成证书工具

    • -keysize 2048 密钥长度2048位(这个长度的密钥目前可认为无法被暴力破解)
    • -validity 365 证书有效期365天
    • -keyalg RSA 使用RSA非对称加密算法
    • -dname "CN=gornix.com" 设置Common Name为gornix.com,这是我的域名
    • -keypass 654321 密钥的访问密码为654321
    • -storepass 123456 密钥库的访问密码为123456(其实这两个密码也可以设置一样,通常都设置一样,方便记)
    • -keystore gornix.jks 指定生成的密钥库文件为gornix.jks
  • 相关阅读:
    Writing and deploying a custom report in Visual Studio for Dynamics 365 /PowerApps
    Integrating Dynamics 365 CE with PowerApps
    Creating a console application to import data to Dynamics 365 / Power Apps
    DNS仍然是整个互联网中最脆弱的一环
    域名解析TTL值设置为多少合适?
    DNS TTL 字段就是骗你的
    DNS域名轮询业务监控
    域名到站点的负载均衡技术一览
    nginx+iis实现负载均衡
    用Node.js基于Express框架重写博客程序,从此告别ASP.NET。
  • 原文地址:https://www.cnblogs.com/qingyibusi/p/8572783.html
Copyright © 2011-2022 走看看