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 类:
public static SSLContext createSSLContext(String type ,String path ,String password) throws Exception {
    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

原文地址:https://www.cnblogs.com/qingyibusi/p/8572783.html

时间: 2024-08-09 13:01:45

Netty 实现SSL安全连接(wss://)的相关文章

centos7.2安装mysql5.7.13实现 ssl 安全连接的主从复制

防伪码:不要和我比懒,我懒得和你比. 一.MySQL 5.7 主要特性: 原生支持 Systemd 更好的性能:对于多核 CPU.固态硬盘.锁有着更好的优化 更好的 InnoDB 存储引擎 更为健壮的复制功能:复制带来了数据完全不丢失的方案,传统金融客户也可以选择使用 MySQL 数据库. 注:mysql-5.6.3 已经支持了多线程的主从复制 新增 sys 库:以后这会是 DBA 访问最频繁的库 二.安装 mysql5.7.13 1.系统环境:centos7.2 x86_64 因为 cento

MySql之基于ssl安全连接的主从复制

MySql基于ssl安全连接的主从复制 一.设备环境 centos7.2   两台 MySQL 5.7 MySQL 5.7 主要特性: 原生支持Systemd更好的性能:对于多核CPU.固态硬盘.锁有着更好的优化更好的InnoDB存储引擎更为健壮的复制功能:复制带来了数据完全不丢失的方案,传统金融客户也可以选择使用MySQL数据库. 新增sys库:以后这会是DBA访问最频繁的库更好的优化器:优化器代码重构的意义将在这个版本及以后的版本中带来巨大的改进,Oracle官方正在解决MySQL之前最大的

MySQL的SSL加密连接与性能开销

前言 在生产环境下,安全总是无法忽视的问题,数据库安全则是重中之重,因为所有的数据都存放在数据库中.MySQL在5.7版本之前对于安全问题的确考虑并不充分,导致存在比较大的隐患,比如下面的这些问题,可能有些小伙伴知道,有些却还不知道: MySQL数据库默认安装的用户密码为空 所有用户拥有对于MySQL默认安装test数据库的访问权限(即使没有授予权限) 好在Oracle官方也已经意识到安全的重要性,MySQL 5.7开始安装完成后的root用户的密码不再是空,而是在安装时随机产生一个密码,这也导

windows下Apache配置SSL安全连接

什么是SSL? SSL(Secure Socket Layer): 是为Http传输提供安全的协议,通过证书认证来确保客户端和网站服务器之间的数据是安全.Open SSL下载地址:http://www.openssl.org/source/ 一.下载并安装 支持SSL的 Apache  1.安装配有SSL模块的apache, 下载地址http://httpd.apache.org/download.cgi#apache23附件提供httpd-2.2.15-win32-x86-openssl-0.

MSSQL - 最佳实践 - 使用SSL加密连接

author: 风移 摘要 在SQL Server安全系列专题月报分享中,往期我们已经陆续分享了:如何使用对称密钥实现SQL Server列加密技术.使用非对称密钥实现SQL Server列加密.使用混合密钥实现SQL Server列加密技术.列加密技术带来的查询性能问题以及相应解决方案.行级别安全解决方案.SQL Server 2016 dynamic data masking实现隐私数据列打码技术.使用证书做数据库备份加密和SQL Server Always Encrypted这八篇文章,直

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

这次使用的Netty是最新的5.0 Alpha2版本,下载地址是:http://dl.bintray.com/netty/downloads/netty-5.0.0.Alpha2.tar.bz2,发布时间是2015年3月,到现在快一年了,咋还不更新呢?有些奇怪…… 制作一张自签证书(jks格式) #keytool -genkey -keysize 2048 -validity 365 -keyalg RSA -dnam e "CN=gornix.com" -keypass 654321

Oracle通过SSL方式连接AD服务器

因公司业务需要,希望能将HR上的部门公司以及员工信息同步到AD服务器,以为其他应用系统做统一的域认证管理,因为用Java来实现比较麻烦,还要弄个web容器啥的,因此就决定直接在HR的数据库上写过程来同步了,因为希望同步过去的用户有默认密码,且账户是默认启用状态,因此需要通过ssl的方式来连接AD服务器,花了一些时间查找了一些资料(真尼玛不好找,baidu基本没有,翻墙用Google搜的),现在把部分关键实现代码及注意事项记录下来. [一]在Oracle服务器上创建Wallet首先应该在ad服务器

java ssl https 连接详解 生成证书

我们先来了解一下什么理HTTPS 1. HTTPS概念 1)简介 HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容 就需要SSL.这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面. 2)HTTPS和HTTP的区别 a.

基于netty实现的长连接,心跳机制及重连机制

技术:maven3.0.5 + netty4.1.33 + jdk1.8 概述 Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序. 也就是说,Netty 是一个基于NIO的客户.服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户.服务端应用.Netty相当于简化和流线化了网络应用的编程开发过程,例如:基于TCP和UDP的socket服务