JAVA实现的SSL/TLS双向认证源代码


压缩包里有客户端源码和服务器端源码,支持TCP的双向认证,也支持WEBSOCKET的双向认证,内附测试 wss的测试例子, 需要生成PKCS12的证书,导入浏览器才可以测试。
资源截图
代码片段和文件信息
/*
 * Copyright 2012 The Netty Project
 *
 * The Netty Project licenses this file to you under the Apache License
 * version 2.0 (the “License“); you may not use this file except in compliance
 * with the License. You may obtain a copy of the License at:
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing software
 * distributed under the License is distributed on an “AS IS“ BASIS WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND either express or implied. See the
 * License for the specific language governing permissions and limitations
 * under the License.
 */
package com.tesla.websocket.server;

import io.netty.bootstrap.Bootstrap;
import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioSocketChannel;


import java.io.BufferedReader;
import java.io.InputStreamReader;


public class SecureClient 
{

    private final String host;
    private final int port;
    private final String sslMode;

    public SecureClient(String host int port String sslMode) {
this.host = host;
this.port = port;
this.sslMode = sslMode;
    }

    public void run() throws Exception 
    {
EventLoopGroup group = new NioEventLoopGroup();
try 
{
    Bootstrap b = new Bootstrap();
    b.group(group).channel(NioSocketChannel.class).handler(new SecureClientInitializer(sslMode));
    // Start the connection attempt.
    Channel ch = b.connect(host port).sync().channel();
    // Read commands from the stdin.
    ChannelFuture lastWriteFuture = null;
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    for (;;) 
    {
     System.out.println(“---read lne : “);
    
     String line = in.readLine();
     if (line == null) {
     break;
     }

     System.out.println(“ : “+line);
// Sends the received line to the server.
lastWriteFuture = ch.writeAndFlush(line + “
“);

// If user typed the ‘bye‘ command wait until the server closes
// the connection.
if (“bye“.equals(line.toLowerCase())) {
    ch.closeFuture().sync();
    break;
}
    }

    // Wait until all messages are flushed before closing the channel.
    if (lastWriteFuture != null) {
     lastWriteFuture.sync();
    }
} finally {
    // The connection is closed automatically on shutdown.
    group.shutdownGracefully();
}
    }

    public static void main(String[] args) throws Exception
    {
String addr = “127.0.0.1“;
if (args.length > 0) {
    try {
     addr = args[0];
    } catch (NumberFormatException e) {
     e.printStackTrace();
    }
}
    
int port = 8888;
if (args.length > 1) {
    try {
     port = Integer.parseInt(args[1]);
    } catch (NumberFormatException e) {
     e.printStackTrace();
    }
}
//new WebSocketServer().run(port);

S

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-02-02 14:19  TeslaSSLClient
     文件         585  2017-02-02 14:16  TeslaSSLClient.classpath
     文件         390  2017-01-26 18:12  TeslaSSLClient.project
     目录           0  2017-01-26 18:12  TeslaSSLClient.settings
     文件         598  2017-01-26 18:12  TeslaSSLClient.settingsorg.eclipse.jdt.core.prefs
     目录           0  2017-02-02 14:19  TeslaSSLClientin
     目录           0  2017-02-02 14:16  TeslaSSLClientincom
     目录           0  2017-02-02 14:16  TeslaSSLClientincom esla
     目录           0  2017-02-02 14:16  TeslaSSLClientincom eslawebsocket
     目录           0  2017-02-02 14:32  TeslaSSLClientincom eslawebsocketserver
     文件        1038  2017-02-02 14:16  TeslaSSLClientincom eslawebsocketserverSSLMODE.class
     文件        3519  2017-02-02 22:05  TeslaSSLClientincom eslawebsocketserverSecureClient.class
     文件        1866  2017-02-02 14:16  TeslaSSLClientincom eslawebsocketserverSecureClientHandler.class
     文件        3165  2017-02-02 22:04  TeslaSSLClientincom eslawebsocketserverSecureClientInitializer.class
     文件        4990  2017-02-02 14:16  TeslaSSLClientincom eslawebsocketserverSecureSslContextFactory.class
     文件        1411  2016-11-03 16:17  TeslaSSLClientinlog4j.properties
     目录           0  2017-02-02 22:07  TeslaSSLClientexport
     目录           0  2017-01-26 18:15  TeslaSSLClientlib
     文件      489883  2016-11-03 16:17  TeslaSSLClientliblog4j-1.2.17.jar
     文件      832960  2016-11-03 16:17  TeslaSSLClientlibmysql-connector-java-5.1.22-bin.jar
     文件     1576326  2015-05-16 19:59  TeslaSSLClientlib
etty-all-5.0.0.Alpha1.jar
     目录           0  2017-02-02 14:16  TeslaSSLClientsrc
     目录           0  2017-02-02 14:16  TeslaSSLClientsrccom
     目录           0  2017-02-02 14:16  TeslaSSLClientsrccom esla
     目录           0  2017-02-02 14:16  TeslaSSLClientsrccom eslawebsocket
     目录           0  2017-02-02 14:32  TeslaSSLClientsrccom eslawebsocketserver
     文件          80  2017-01-26 18:45  TeslaSSLClientsrccom eslawebsocketserverSSLMODE.java
     文件        3223  2017-02-02 22:05  TeslaSSLClientsrccom eslawebsocketserverSecureClient.java
     文件        1425  2017-02-02 13:03  TeslaSSLClientsrccom eslawebsocketserverSecureClientHandler.java
     文件        2855  2017-02-02 22:04  TeslaSSLClientsrccom eslawebsocketserverSecureClientInitializer.java
     文件        5406  2017-02-02 11:02  TeslaSSLClientsrccom eslawebsocketserverSecureSslContextFactory.java
............此处省略65个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)