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
分享到:
相关推荐
NULL 博文链接:https://hengstart.iteye.com/blog/842529
js调用flash中socket操作,实现与客户端通讯
资源介绍:。模块里有类_客户端_SSL,类_服务端_SSL,KernelFunc,类_许可区,类_网络环境_SSL。资源作者:。易语言入门教程学习。资源界面:。资源下载:。
主要给大家介绍了关于如何利用C#实现SSLSocket加密通讯的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
socket 原生实现ssl访问https 无需DLL
详细介绍了java如何使用SSL来进行socket通信了 最主要的是介绍了如何使用keytool来生成.keystore文件 ps:设置一分是希望那些刚入门或则对csdn访问不多的朋友 多花点时间 表面上市搞积分 事实上是有帮助的。 如果你...
ssl套接字通信服务端和客户段 ssl单向认证、双向认证
使用openssl的SSL下的SOCKET客户端
* MOD-NAME : sslsocket.h * LONG-NAME : * * AUTHOR : Martin Ziacek (martin.ziacek@pobox.sk) * DEPARTMENT : * TELEPHONE : * CREATION-DATE : 29/05/2001 15:27:01 * SP-NO : * FUNCTION : * ***********...
通过ssl.wrap_socket函数实现,传入私钥文件'./privkey.pem'和证书文件'./certificate.pem' 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2...
基于openssl的socket代码的ssl服务器客户端通讯例子。典型例子。VC工程,ssl通讯socket,服务端和客户端,简单易懂。
《RC4对称加密技术》C语言...这种加密方式又称流式加密,RC4 是应用最广泛的流加密算法,应用在安全套接字层 SSL Security Socket layer 来保护网络上传输的数据,也应用于网络数据保护 WEP Wired Equivalent Privacy ...
NULL 博文链接:https://1002878825-qq-com.iteye.com/blog/1838805
基于Socket安全通信,数字签名技术,以及SSL原理实现,非对称加密与对称加密,反正挺多的,自己看去把
MySQL提供了一系列安全措施,如用户账户管理、访问权限控制、SSL/TLS加密连接、审计日志等功能,确保数据的安全性和合规性。同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,...
SSPI 打造纯API+汇编 winhttp及socket支持SSL安全连接。抛弃累赘的OpenSSL,拥抱windows SSPI !。背景:这也是在使用当中遇到的坑,winhttp组件在某些电脑上无法使用,要么open卡死,要么send卡死,后面用了hpsocket...
linux、webservice、ssl、socket、搜索引擎nutch.rar
得用openssl生成私钥和证书文件。在socket编程时,加入ssl相关功能,达到工业级安全强度。
这个是我通过学习总结的资料,介绍了如何SSLSocket的一些简单的知识,以及介绍了如何利用JDK自带的keytool工具生成密钥库、证书等,还有Demo作为例子,很好的学习资料。
// C/C++, 利用OpenSSL库对Socket传输进行安全加密(RSA+AES) // 1. 利用RSA安全传输AES生成密钥所需的Seed(32字节) // 2. 利用AES_encrypt/AES_decrypt对Socket上面的业务数据进行AES加密/解密 // --- // * 理论上只...