http://sariel.iteye.com/blog/469035 转自这里.
这是在网上找到的,自己在整理一下。
服务器端代码:
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
这个客户端就是运行不成功,不知道是目录错误还是别的。
这样运行最方便:把证书拷贝到java home/lib/security目录下,名字改为jssecacerts,然后可以直接执行客户端:
本人测试过没问题。
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
分享到:
相关推荐
5. 通过SSLContext获取SSLServerSocketFactory或SSLSocketFactory来创建SSLServerSocket或SSLSocket,进行安全的通信。 由于SSL/TLS协议的复杂性,开发人员在使用JSSE进行SSL/TLS编程时需要深入理解相关的加密原理...
Mina支持多种协议,如TCP、UDP以及SSL/TLS加密,因此它非常适合用于构建如FTP服务器、HTTP服务器、数据库连接等。 Socket,又称套接字,是操作系统提供的一个编程接口,用于不同进程之间的网络通信。在Java中,`...
在现代Web开发中,为了实现实时双向通信,JavaScript结合Socket技术(通常指的是WebSocket协议)成为一种常见且强大的解决方案。WebSocket是HTML5引入的一个新特性,允许服务器和浏览器之间建立长时间保持连接的通道...
除了基本的网络通信功能,MyC++Socket还支持多线程处理客户端连接、异步I/O、SSL加密等高级特性,能够满足复杂网络应用的需求。 总结,MyC++Socket库为C++程序员提供了强大的网络编程工具,通过封装底层细节,使得...
《易语言SSL_Socket通信模块源码解析与应用》 在信息技术日新月异的今天,网络通信的安全性越来越受到重视。SSL(Secure Sockets Layer)协议作为网络安全传输的重要手段,广泛应用于各种网络服务中。易语言,作为...
- 对于敏感数据的传输,可以考虑使用SSL/TLS加密,Python的`ssl`模块提供了相关的支持。 10. **实际应用**: - 这种客户端-服务端-触发端的架构常见于即时通讯、消息推送系统、分布式任务调度等场景。通过socket...
SSL(Secure Socket Layer)确保了数据传输的安全性;而Keepalived则提供故障切换和高可用性,确保服务不间断运行。接下来,我们将详细探讨这三个组件及其部署过程。 **Haproxy** Haproxy是一款开源的负载均衡器,...
在Java编程语言中,SSLSocket(Secure Sockets Layer Socket)是用于实现安全网络通信的重要组件,它基于SSL/TLS协议栈,为应用程序提供加密的数据传输服务。本教程将深入探讨Java中的SSLSocket应用,包括其基本概念...
在Ubuntu系统中,可以通过Apt轻松安装Apache,并配置虚拟主机、SSL证书、重写规则等,以支持动态内容和静态资源的高效分发。 3. PHP: PHP(Hypertext Preprocessor)是一种广泛应用的开源脚本语言,主要用于Web...
2. **ssl**:这里的ssl通常指的是OpenSSL,一个用于加密通信的库,支持SSL(Secure Socket Layer)和TLS(Transport Layer Security)协议。它为libcurl提供了安全的加密连接,保证了数据传输的安全性。 3. **zlib*...
6. **连接SSL**:将SSL结构体与Socket绑定,使用`SSL_set_fd()`函数设置Socket描述符。然后,调用`SSL_connect()`来建立SSL连接,这会进行SSL握手,包括证书交换、密钥协商等。 7. **发送和接收数据**:SSL连接建立...
10. **SSL/TLS安全通信**:对于涉及敏感信息的网络通信,Java提供了JSSE(Java Secure Socket Extension)框架,可以实现基于SSL或TLS的安全套接字连接,确保数据的加密传输。 总的来说,《Java+TCP/IP+Socket编程+...
3. **安全性**:使用SSL/TLS协议可以为Socket通信提供加密,确保数据安全。 4. **NIO(非阻塞I/O)**:Java NIO库提供了非阻塞的I/O操作,适用于高并发的Socket通信场景。 5. **缓冲区管理**:使用ByteBuffer等NIO...
- 安全性方面,可以使用SSL/TLS协议实现安全套接字,保护数据传输的安全。 7. **实战应用** - Java网络编程常用于开发Web应用、分布式系统、文件传输、在线游戏等。 - 实现服务器与客户端之间的实时通信,如聊天...
在Java编程中,`SSLSocket`是用于创建安全套接层(SSL)或传输层安全(TLS)连接的重要类,它提供了加密的数据传输服务,确保了网络通信的安全性。`SSLSocket`是Java标准库`javax.net.ssl`包的一部分,主要应用于...
SSLSocket(Secure Socket Layer Socket)是一种基于SSL协议的安全通信机制,能够提供端到端的数据加密,确保数据在网络传输过程中的安全性。本教程主要针对初学者,详细讲解如何在Android应用中实现SSLSocket通信,...
7. **安全通信**:如果涉及到敏感数据的传输,如用户认证信息,需要使用SSL/TLS加密以保证数据的安全性。 在提供的文件列表中: - `readme.doc`可能是项目说明文档,包含了如何集成和使用这个socket封装的具体步骤...
SSLSocket socket = (SSLSocket) sf.createSocket("server_address", server_port); ``` 然后,我们可以通过SSLSocket进行正常的Socket通信,包括输入流和输出流的读写。在开始通信之前,会进行SSL握手,这是一个...
「C#实现SSLSocket加密通讯方法详解」 在网络通讯中,安全性是一个非常重要的方面,而SSL/TLS协议则是最常用的加密通讯协议之一。C#作为一个强大的编程语言,可以轻松地实现SSL/TLS协议的加密通讯。下面将详细介绍...
Java SSL(Secure Socket Layer)套接字是一种用于在两个应用程序之间建立安全通信通道的协议,主要目的是为了确保数据传输的安全性。SSL通过使用加密技术来保护数据,防止未经授权的访问和篡改。在Java中,我们可以...