netty中websocket使用wss
阅读数:256 评论数:0
跳转到新版页面分类
python/Java
正文
一、ws和wss的区别
ws是websocket协议,wss是websocket的加密版本。
二、netty如何使websocket支持wss
如果网站用https的话,浏览器就不可以使用ws的websocket,必须使用wss。
1、从域名服务端下载免费的jks证书。
2、在netty的ChannelPipeline中添加ssl handler,并且放在first即可。
3、相关代码
public class SslUtil {
private static volatile SSLContext sslContext = null;
// type是PKCS12、path是pfx文件路径、password是pfx对应的密码
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);
ks.load(ksInputStream, password.toCharArray());
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(ks, password.toCharArray());
sslContext = SSLContext.getInstance("TLS");
sslContext.init(kmf.getKeyManagers(), null, null);
}
}
}
return sslContext;
}
}
// 以下为要支持wss所需处理,添加ssl handler,并且放在First
try {
SSLContext sslContext = SslUtil.createSSLContext(CC.mp.net.wss_cert_type,
CC.mp.net.wss_cert_path,CC.mp.net.wss_cert_password);
SSLEngine sslEngine = sslContext.createSSLEngine();
sslEngine.setUseClientMode(false);
sslEngine.setNeedClientAuth(false);
pipeline.addFirst("sslHandler",new SslHandler(sslEngine));
}catch (Exception e){
e.printStackTrace();
}
相关推荐
websocket协议基于tcp的网络协议,它实现浏览器与器全双工通信。
spring boot2 +websocket
1、添加依赖
<pre clas
就像Java和JavaScript,并没有什么太大的关系,但又不能说完全没有关系。
socket本意指端到端的一个连接,socket是对TCP/IP协议的封装,本身并不是协议,而是