- 浏览: 207764 次
- 性别:
- 来自: 河北
文章分类
最新评论
-
6420285:
你的文章很棒,很多地方讲的通俗易懂,非常感谢。 ...
深入掌握JMS(一):JSM基础 -
xs.cctv:
不错
zeroDateTimeBehavior=convertToNull -
hanyannan0123:
搞不清楚,此话属于经典呢,还是废话。
超类 好 -
czy584521:
```我肯定他用了谷歌金山词霸
IBM的面试官被我忽悠蒙了 -
yuantong:
老板跳槽?什么概念
我们老板跳槽了 !!!
首先创建服务器端私有密钥和公共密钥
1, keytool -genkey -alias clientkey -keystore kserver.ks
密码: serverpass
2, keytool -export -alias serverkey -keystore kserver.ks -file server.crt
3, keytool -import -alias serverkey -file server.crt -keystore tclient.ks
密码: clientpublicpass
下面创建客户器端私有密钥和公共密钥
1, keytool -genkey -alias clientkey -keystore kclient.ks
密码: clientpass
2, keytool -export -alias clientkey -keystore kclient.ks -file client.crt
3, keytool -import -alias clientkey -file client.crt -keystore tserver.ks
密码: serverpublicpass
把服务器端产生的公共密钥放到客户端, 同样把客户端创建的公共密钥放到服务器端.
下面是服务器端代码:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.security.KeyStore;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.TrustManagerFactory;
public class SSLTestServer {
public static void main(String[] args) throws Exception {
SSLContext ctx = SSLContext.getInstance("SSL");
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
KeyStore ks = KeyStore.getInstance("JKS");
KeyStore tks = KeyStore.getInstance("JKS");
ks.load(new FileInputStream("cert/kserver.ks"), "serverpass".toCharArray());
tks.load(new FileInputStream("cert/tserver.ks"), "serverpublicpass".toCharArray());
kmf.init(ks, "serverpass".toCharArray());
tmf.init(tks);
ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
SSLServerSocket serverSocket = (SSLServerSocket) ctx.getServerSocketFactory().createServerSocket(8443);
serverSocket.setNeedClientAuth(true);
while (true) {
try {
Socket s = serverSocket.accept();
InputStream input = s.getInputStream();
OutputStream utput = s.getOutputStream();
BufferedInputStream bis = new BufferedInputStream(input);
BufferedOutputStream bos = new BufferedOutputStream(output);
byte[] buffer = new byte[20];
int length = bis.read(buffer);
System.out.println("Receive: " + new String(buffer, 0, length).toString());
bos.write("Hello".getBytes());
bos.flush();
s.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
}
下面是客户端代码:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.KeyStore;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.TrustManagerFactory;
public class SSLTestClient {
public static void main(String[] args) throws Exception {
SSLContext ctx = SSLContext.getInstance("SSL");
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
KeyStore ks = KeyStore.getInstance("JKS");
KeyStore tks = KeyStore.getInstance("JKS");
ks.load(new FileInputStream("cert/kclient.ks"), "clientpass".toCharArray());
tks.load(new FileInputStream("cert/tclient.ks"), "clientpublicpass".toCharArray());
kmf.init(ks, "clientpass".toCharArray());
tmf.init(tks);
ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
SSLSocket sslSocket = (SSLSocket) ctx.getSocketFactory().createSocket("localhost", 8443);
InputStream input = sslSocket.getInputStream();
OutputStream utput = sslSocket.getOutputStream();
BufferedInputStream bis = new BufferedInputStream(input);
BufferedOutputStream bos = new BufferedOutputStream(output);
bos.write("Hello".getBytes());
bos.flush();
byte[] buffer = new byte[20];
int length = bis.read(buffer);
System.out.println(new String(buffer, 0, length));
sslSocket.close();
}
}
常见的HTTPS传输, 不需要进行客户端认证, 也就是单向认证. 这时也就不需要创建客户端的私钥和公钥. 服务器端也只要配置一下服务器端的私钥即可, 当客户端浏览器访问时会生成一个证书文件,类似于上面创建的crt文件. 如果需要程序访问,可以通过这个crt文件生成一个keystore. 然后是用这个keystore作为trust keystore即可.
发表评论
-
redis常用命令小结
2016-03-11 12:11 689转载于:http://www.itxuexiwang.com/ ... -
Redis总结笔记(一):安装和常用命令
2016-02-26 17:23 510转载于:http://www.itxuexiw ... -
Redis操作命令总结
2016-03-10 14:07 549转载于:http://www.itxuexiwang.com/ ... -
Redis的使用模式之计数器模式实例
2016-03-11 12:11 682转载于:http://www.itxuexiwang.com/ ... -
分割超大Redis数据库例子
2016-02-26 17:23 640转载于:http://www.itxuexiwang.com/ ... -
Redis中统计各种数据大小的方法
2016-03-14 16:02 591转载于:http://www.itxuexiw ... -
Redis配置文件详解
2016-03-14 16:03 559转载于:http://www.itxuexiwang.com/ ... -
Redis教程(一):Redis简介
2016-03-11 12:12 574转载于:http://www.itxuexiw ... -
五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
2009-09-20 21:48 940当Adobe、Microsoft、Sun等一系列巨 ... -
深入掌握JMS(九):Selector
2009-08-19 12:49 2093前面的例子中创建一个消息消费者使用的是: ... -
深入掌握JMS(十):JMSCorrelationID与Selector
2009-08-19 12:48 1176前面讲过JMSCorrelationID主要是用来关联多个Me ... -
]深入掌握JMS(十一):TemporaryQueue和TemporaryTopic
2009-08-19 12:47 1537TemporaryQueue和TemporaryTopic, ... -
深入掌握JMS(十二):MDB
2009-08-19 12:45 1155在EJB3中,一个MDB(消息驱动Bean)就是一个实现了Me ... -
深入掌握JMS(一):JSM基础
2009-08-19 12:43 9461. JMS基本概念 JMS( ... -
深入掌握JMS(一):JSM基础
2009-08-19 12:42 23941. JMS基本概念 JMS( ... -
深入掌握JMS(二):一个JMS例子
2009-08-19 12:41 2629前一讲简单的介绍 ... -
深入掌握JMS(三):MessageListener
2009-08-19 12:37 5836消息的消费者接收消息可以采用两种方式: 1、consum ... -
实战Queue
2009-08-19 12:34 1197Queue实现的是点到点模型,在下面的例子中,启动2个消费者共 ... -
深入掌握JMS(五):实战Topic
2009-08-19 12:28 1185与Queue不同的是,Topic实现的是发布/订阅模型,在下面 ... -
深入掌握JMS(六):消息头
2009-08-19 11:59 1079一个消息对象分为三部分:消息头(Headers),属性 ...
相关推荐
java实现_SSL双向认证,里面详细介绍怎样实现,还包括完整的实现代码,直接可用
压缩包中的`wss`测试例子展示了如何在WebSocket上应用SSL/TLS双向认证。 6. **证书导入**:为了测试,你需要将服务器的PKCS12格式的证书导入到浏览器的信任存储中,以便浏览器可以验证服务器的身份。同样,客户端也...
C# TLS SSL TCP双向认证 X509Store SslStream Certificate Visual Studio 2017 命令提示 键入: makecert -r -pe -n “CN=TestServer” -ss Root -sky exchange 等待来自客户端的连接... 显示安全等级 密钥套件: Aes...
双向认证是GMSSL的一个重要特性,它确保了通信双方的身份都能被正确验证,增强了网络通信的安全性。 在TLS协议中,双向认证主要通过TLS握手协议进行。这个过程分为客户端和服务器端交互的多个步骤: 1. **Client ...
JAVA SSL SOCKET 双向认证是指客户端和服务器双方都需要验证对方的身份。这种方式可以提供更高的安全性。 十五、建立一个信息安全通道,来保证数据传输的安全;确认网站的真实性 通过使用 SSL 协议,我们可以建立...
总结,OpenSSL双向认证涉及证书的生成、配置SSL_CTX上下文、加载证书和私钥,以及在服务端和客户端进行验证。正确实施双向认证可以显著提高通信的安全性,防止未经授权的第三方干扰或窃取数据。对于开发者来说,理解...
首先,理解SSL双向认证的概念是至关重要的。在传统的单向认证中,服务器验证客户端的身份,而双向认证则要求双方都提供有效的身份证明。这意味着客户端不仅要验证服务器的身份,服务器也需要验证客户端的身份。这种...
- 初始化SSL上下文(SSL_CTX),设置证书和私钥(如果是双向认证)。 - 将套接字与SSL上下文关联,进行SSL连接。 - 发送SSL握手请求,等待服务器响应。 - 完成握手后,可以开始加密的数据传输。 2. **服务器端...
- `SetSSLOptions`:配置SSL选项,开启双向认证。 - `SendRequest`和`ReceiveResponse`:发送HTTP请求和接收响应。 通过以上分析,我们可以看出,`sslink.zip`提供的代码示例是关于如何在VC++ MFC环境中利用...
在某些双向认证场景下,客户端也会向服务器提供自己的证书。 3. **serverX509Key.pem**: 服务器的私钥文件,对应于serverX509Cert.pem中的公钥。私钥用于解密由客户端用公钥加密的信息,以及生成数字签名。 4. **...
同时,如果需要双向认证,客户端也需要提供自己的证书(如client.crt)。CA2.crt可能是证书颁发机构的根证书,用于验证服务器和客户端证书的合法性。 在使用HP-Socket-5.5.1模块时,开发者需要理解以下核心概念: -...
2. **身份验证**:通常通过数字证书来验证服务器的身份,有时也会双向验证客户端身份。 3. **数据完整性**:通过消息认证码(MAC)或散列函数来防止数据在传输过程中被篡改。 #### 三、Java中的HTTPS访问示例 下面...
在上述例子中,`-s 4433`设置HTTPS代理在4433端口上运行,`-t 127.0.0.1:443`则表明HTTPS请求将被转发至本地的443端口,这是标准的HTTPS服务端口。 使用Twisted-Proxy,你可以创建一个高度自定义的代理服务器,包括...
- 可配置SSL连接为单向或双向认证。 11. **查看已发布EJB** - 在WebLogic管理控制台的“Deployment”部分,可以查看和管理所有已发布的EJB。 12. **消息驱动Bean(MDB)** - persistent MDB保证消息传递的可靠...
5. 安全性:讨论FTP和HTTP的安全增强,如FTPS(FTP over TLS/SSL)、HTTPS(HTTP over TLS/SSL)以及认证机制。 6. 错误处理与调试:提供常见网络错误的处理策略,以及如何调试网络应用。 7. 实践项目:可能包含...
超文本的典型例子是HTML文档,它通过各种标签定义了链接、图片等信息,浏览器通过解析这些标签来展示出包含丰富媒体的网页。 ### HTTP方法 HTTP定义了多种请求方法,常用的方法包括GET和POST。 #### GET方法 GET...
在WebRTC的例子中,WebSocket可能是用来传递信令信息的,比如初始化连接的offer/answer,以及ice候选等,这些都是建立和维护RTCPeerConnection所必需的。 **项目结构** 在"RTCApp"这个文件夹中,我们可以推测可能...
通过建立连接,订阅频道,然后发送和接收消息,可以实现客户端和服务器的双向通信。 4. **Spring Message Broker** Spring提供了Message Broker接口,使得我们可以将消息代理集成到应用程序中。在这个例子中,我们...
本项目“基于Vue-cli和Servlet的前后端分离的电商系统”就是一个典型的例子,它结合了前端的Vue.js框架和后端的Servlet技术来实现一个完整的电子商务平台。下面将详细探讨相关知识点。 1. **Vue-cli**: Vue-cli是...
此外,数据传输应加密,防止被未经授权的用户截取,SSL/TLS协议可以提供端到端的安全保障。 5. **界面设计**:用户界面(UI)是任何软件的重要组成部分。局域网聊天工具应有清晰的布局,易于理解和操作。设计上应...