服务器端代码:
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
分享到:
相关推荐
在本篇博文中,我们将深入探讨如何利用Apache MINA库实现基于TLS/SSL的NIO(非阻塞I/O)Socket通信。MINA是一个高度可扩展的网络应用框架,广泛用于构建高性能、高并发的网络应用程序,如服务器端的TCP和UDP服务。...
4. **客户端实现**:对应的`TeslaSSLClient`类则需要配置SSLSocket,同样使用自定义的`SSLContext`。客户端在建立连接时会提供自己的证书。 5. **测试**:在完成上述步骤后,你可以使用wss(WebSocket Secure)协议...
在Java编程语言中,SSLSocket(Secure Sockets Layer Socket)是用于实现安全网络通信的重要组件,它基于SSL/TLS协议栈,为应用程序提供加密的数据传输服务。本教程将深入探讨Java中的SSLSocket应用,包括其基本概念...
Java的`javax.net.ssl.SSLSocket`类是用于创建SSL/TLS连接的,它继承自`Socket`,并在连接建立后自动进行加密。 5. **邮件构造**:在Java中,可以使用`javax.mail`和`javax.mail.internet`包来构造和格式化邮件。`...
在现代网络安全环境中,确保数据在传输过程中的安全性至关重要,SSL(Secure Socket Layer)或其更新版本TLS(Transport Layer Security)正是实现这一目标的关键技术。SSL/TLS可以提供端到端的数据加密,防止中间人...
8. **网络安全**:了解基本的网络安全策略,如SSL/TLS加密,以及如何在C#中实现安全的Socket通信。 9. **案例分析**:书中可能会包含实际的案例,如创建简单的聊天程序、文件传输应用,帮助读者将理论知识应用于...
「C#实现SSLSocket加密通讯方法详解」 在网络通讯中,安全性是一个非常重要的方面,而SSL/TLS协议则是最常用的加密通讯协议之一。C#作为一个强大的编程语言,可以轻松地实现SSL/TLS协议的加密通讯。下面将详细介绍...
在实现Socket服务端和客户端时,我们需要在`ChannelInitializer`中添加SSL/TLS处理。对于服务器端,我们调用`SslContext.newServerContext()`来创建`ServerSslContext`,然后将其添加到管道的`SslHandler`。对于...
在标题中提到的“基于boost asio TCP/SSL网络库”是一个利用Boost.Asio实现的,具备TCP和SSL功能的网络库。这个库为开发者提供了构建高效、可靠的网络应用程序的基础。 **TCP(Transmission Control Protocol)** ...
在Java中,实现基于SSL/TLS的FTP客户端需要创建`SSLSocket`连接到服务器,并进行必要的握手过程。服务器端则需创建`SSLServerSocket`来监听连接,并处理客户端的认证请求。整个过程涉及SSL/TLS的初始化、证书管理、...
在Java编程中,`SSLSocket`是用于创建安全套接层(SSL)或传输层安全(TLS)连接的重要类,它提供了加密的数据传输服务,确保了网络通信的安全性。`SSLSocket`是Java标准库`javax.net.ssl`包的一部分,主要应用于...
本教程主要针对初学者,详细讲解如何在Android应用中实现SSLSocket通信,并通过Eclipse IDE进行DEMO演示。 首先,理解SSLSocket的基本原理。SSLSocket是在Socket基础上增加了一层加密机制,它通过握手协议、密钥...
SSL/TLS(Secure Socket Layer/Transport Layer Security)安全协议是互联网上用于保护数据传输的协议标准,它为网络通信提供加密处理,确保数据在传输过程中不被窃取或篡改。该协议广泛应用于Web浏览器和其他需要...
在提供的压缩包文件“SSL-Socket-Client”中,可能包含了一个示例程序,展示了如何使用上述步骤实现SSL连接。这个程序可能包含了SSL上下文的创建、证书验证的设置、SSL连接的建立以及数据传输的代码。通过学习和理解...
实际应用中,通常需要结合SSL/TLS等安全协议来加密通信,防止数据被窃取或篡改。 9. **性能优化**:对于高性能服务器,可能会涉及到连接池、缓冲区管理、非阻塞I/O等技术来提升处理效率。 综上所述,这个工具提供...
SSLSocket sslSocket = (SSLSocket) socketFactory.createSocket(); sslSocket.setHostnameVerifier(hostnameVerifier); ``` 通过这样的配置,开发者可以确保在Android 7.0上,即使面对非标准的证书配置,也能正常...
5. 通过SSLContext获取SSLServerSocketFactory或SSLSocketFactory来创建SSLServerSocket或SSLSocket,进行安全的通信。 由于SSL/TLS协议的复杂性,开发人员在使用JSSE进行SSL/TLS编程时需要深入理解相关的加密原理...
Java Socket 实现 SMTP 发送邮件是一项常见的编程任务,尤其在自动化通知、系统间通信或用户交互中非常有用。SMTP(Simple Mail Transfer Protocol)是互联网上用于传输电子邮件的标准协议,而Java Socket则是Java...