服务器端代码:
import java.net.*;
import javax.net.ssl.*;
import java.io.*;
import java.security.*;
public class SSLServer {
private static int port = 50003;
private static SSLServerSocket server;
public static void initSSLServerSocket() {
try {
/** 要使用的证书名 **/
String cert = "\\key.cert";
/** 要使用的证书密码 **/
char certPass[] = "123456".toCharArray();
/** 证书别称所使用的主要密码 **/
char certAliaMainPass[] = "123456".toCharArray();
/** 创建JKS密钥库 **/
KeyStore keyStore = KeyStore.getInstance("JKS");
keyStore.load(new FileInputStream(cert), certPass);
/** 创建管理JKS密钥库的X.509密钥管理器 **/
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("SunX509");
keyManagerFactory.init(keyStore, certAliaMainPass);
SSLContext sslContext = SSLContext.getInstance("TLSV1");
/** 想使用SSL时,更改成如下,注释部分 **/
//SSLContext sslContext = SSLContext.getInstance("SSLV3");
sslContext.init(keyManagerFactory.getKeyManagers(), null, null);
SSLServerSocketFactory sslServerSocketFactory = sslContext.getServerSocketFactory();
server = (SSLServerSocket) sslServerSocketFactory.createServerSocket(port);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String args[]) {
try {
initSSLServerSocket();
System.out.println("服务器在端口 [" + port + "] 等待连接...");
while (true) {
SSLSocket socket = (SSLSocket) server.accept();
new CreateThread(socket);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class CreateThread extends Thread {
private static BufferedReader in;
private static PrintWriter out;
private static Socket s;
public CreateThread(Socket socket) {
try {
s = socket;
in = new BufferedReader(new InputStreamReader(s.getInputStream(), "GB2312"));
out = new PrintWriter(s.getOutputStream(), true);
start();
} catch (Exception e) {
e.printStackTrace();
}
}
public void run() {
try {
String msg = in.readLine();
System.out.println("接收到: " + msg);
out.write("服务器接收到的信息是: " + msg);
out.flush();
s.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
客户端代码:
import java.net.*;
import javax.net.ssl.*;
import java.io.*;
public class SSLClient {
static int port = 50003;
public static void main(String args[]) {
try {
SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
Socket s = factory.createSocket("192.168.12.41", port);
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream(), "GB2312"));
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
out.println("证书启用成功!");
System.out.println(in.readLine());
out.close();
s.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
服务器启动:java SSLServer
key.cert 文件需要和 SSLServer.class 同一目录下
客户端运行:java -Djavax.net.ssl.trustStore=key.cert SSLClient
key文件生成:keytool -genkey -keystore Key.cert -keyalg rsa –alias tempkey
或者: keytool -genkey -alias tempkey -keysize 512 -validity 3650 -keyalg RSA -dname "CN=sariel.iteye.com, OU=sariel CA, O=sariel Inc, L=Stockholm, S=Stockholm, C=SE" -keypass 123456 -storepass 123456 -keystore key.cert
分享到:
相关推荐
NULL 博文链接:https://sariel.iteye.com/blog/470383
本源代码例子实现了Socket服务端和客户端,以及Http服务端和客户端;采用了Netty框架,实现SSL/TLS支持。
支持TCP/SSL 的网络库,基于boost asio,支持客户端自动重连、同时支持阻塞和异步模式,可直接应用在项目了,简单易维护
SSL Socket通讯是对socket的扩展,增加Socket通讯的数据安全性,SSL认证分为单向和双向认证。单向认证只认证服务器端的合法性而不认证客户端的合法性。双向认证是同时认证服务端和客户端。下面我分别说说使用C#实现...
SSL全称是“Secure Socket Layer”,字面上可以从“Secure”单词可以看出,SSL是负责“安全”传输的,并不关心传输的内容是什么。而HTTPS只是SSL应用的一种,即用SSL加密HTTP内容(普遍采用443端口),SSL还可以加密...
SSL(Secure Socket Layer)是netscape公司提出的主要用于web的安全通信标准,分为2.0版和3.0版. TLS(Transport Layer Security)是IETF的TLS工作组在SSL3.0基础之上提出的安全通信标准,目前版本是1.0, 即RFC2246.SSL/...
介绍 testssl.sh是一个免费的命令行工具,可以检查任何端口上服务器的服务是否支持TLS / SSL密码,协议以及某些加密漏洞。主要特征清晰的输出:您可以轻松分辨出任何东西是好是坏。 机器可读的输出(CSV,两种JSON...
SSL、TLS协议格式入门学习 SSL(Secure socket Layer 安全套接层协议)指使用公钥和私钥技术组合的安全网络通讯协议。SSL协议是网景公司(Netscape)推出的至于WEB应用 的安全协议,SSL协议指定了一种在应用程序协议...
javax.net.ssl.SSLSocket类的使用。 下载cer.zip文件后解压,得到cer文件夹,该目录下有运行脚本,其中Test文件夹为java项目源码,直接导出到Eclipse。 SSLServer主类在com.csii.ssl包下,其它pack下的内容都用不到...
TLS / SSL加密 客户端证书(仅适用于 php > 5.6) 安装及使用 测验 首先启动http服务器: $ ./vendor/bin/http_test_server > /dev/null 2>&1 & 然后生成ssh证书: $ cd ./tests/server/ssl $ ./generate.sh $ ...
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. 。。。 configure: error: Invalid –with-openssl value 。。。 结果各种捣鼓。 1、注意cetos6.5...
Chapter 6: TLS/SSL Chapter 7: Server Architecture Chapter 8: Caches and Message Queues Chapter 9: HTTP Clients Chapter 10: HTTP Servers Chapter 11: The World Wide Web Chapter 12: Building and ...
Chapter 6: TLS/SSL Chapter 7: Server Architecture Chapter 8: Caches and Message Queues Chapter 9: HTTP Clients Chapter 10: HTTP Servers Chapter 11: The World Wide Web Chapter 12: Building ...
SuperSocket具有如下特点:简单易用,只需要几个类就能创建出健壮的Socket服务器端程序性能优良, 稳定可靠支持各种协议, 内置的协议解析工具让你把实现通信协议这种复杂的工作变得很简单自动支持SSL/TLS传输层加密...
axisConfig.setProtocol("TLS") //default SSL axisConfig.setAlgorithm("SunX509") //default KeyManagerFactory.getDefaultAlgorithm() //and TrustManagerFactory.getDefaultAlgorithm() axisConfig....
Secure Socket Layer (SSL) and Transport Layer Security (TLS) are the current standards for communicating information securely over the internet. With TLS, all data being transmitted from point A to ...
使用客户端SSL / TLS支持对Android,iOS和macOS的本机TCP套接字API进行React。 它允许您创建TCP客户端和服务器套接字,以模仿Node的API功能(有关更多信息,请参见可用的 )。 目录 SSL客户端 原料药 TcpSocket ...
org.apache.http.conn.ssl Client TLS/SSL support. org.apache.http.conn.util Connection utility classes. org.apache.http.cookie Client HTTP state management APIs. org.apache....
主要好处开源(因此免费) 使用HL7标准可用作您的HL7开发环境的测试服务器可以用作HL7通信的消息中心可用作您需要在.Net中构建的任何HL7程序的完整功能基础安全性:通过TLS / SSL提供安全性集成:提供MLLP / TCP...