@Override public void run() { // 端口是否已经被占用 if (!NetUtil.localPortAbled(port)) { LOG.error("LoginServer端口[{}]已被占用", port); System.exit(0); } try { ServerBootstrap b = new ServerBootstrap().option(ChannelOption.SO_BACKLOG, 1024); b.group(accepterGroup, workGroup).childHandler(new ChannelInitializer<SocketChannel>() { @Override protected void initChannel(SocketChannel ch) throws Exception { ChannelPipeline pipeline = ch.pipeline(); // =====================以下为SSL处理代码================================= LOG.error("开始设置https服务"); SSLContext sslcontext = SSLContext.getInstance("TLS"); KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); KeyStore ks = KeyStore.getInstance("PKCS12"); String keyStorePath = "config/dsmy.pfx"; String keyPassword = "dsmy@123456$"; ks.load(new FileInputStream(keyStorePath), keyPassword.toCharArray()); kmf.init(ks, keyPassword.toCharArray()); sslcontext.init(kmf.getKeyManagers(), null, null); SSLEngine engine = sslcontext.createSSLEngine(); engine.setUseClientMode(false); engine.setNeedClientAuth(false); pipeline.addFirst("ssl", new SslHandler(engine)); // =====================以上为SSL处理代码================================= pipeline.addLast(new HttpServerCodec()); pipeline.addLast(new HttpObjectAggregator(65536)); pipeline.addLast(new HttpContentCompressor(1)); pipeline.addLast(handler); } }).channel(NioServerSocketChannel.class); Channel ch = b.bind(port).sync().channel(); LOG.info("监听Http端口[{}]成功", port); ch.closeFuture().sync(); } catch (Exception e) { LOG.error("HttpServer启动异常", e); System.exit(1); } finally { accepterGroup.shutdownGracefully(); workGroup.shutdownGracefully(); } }
在Netty中支持https服务器
猜你喜欢
转载自justdo2008.iteye.com/blog/2393172
今日推荐
周排行