数字证书、公钥和私钥这三者之间的关系

      根据非对称密码学的原理,每个证书持有人都有一对公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由证书持人自己持有,并且必须妥善保管和注意保密。数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机构的公章)后形成的一个数字文件。


      CA完成签发证书后,会将证书发布在CA的证书库(目录服务器)中,任何人都可以查询和下载,因此数字证书和公钥一样是公开的。   

      可以这样说,数字证书就是经过CA认证过的公钥,而私钥一般情况都是由证书持有者在自己本地生成的,由证书持有者自己负责保管。


      具体使用时,签名操作是发送方用私钥进行签名,接受方用发送方证书来验证签名;加密操作则是用接受方的证书进行加密,接受方用自己的私钥进行解密。 因此,如果说数字证书是电子商务应用者的网上数字身份证话,那么证书相应的私钥则可以说是用户的私章或公章。

 

 

      SSL由两个共同工作的协议组成:"SSL 记录协议"(SSL Record Protocol)和"SSL 握手协议"(SSL Handshake Protocol)。SSL 记录协议建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持;SSL 握手协议建立在SSL记录协议之上,用于在实际的数据传输开始前,通信双方进行身份认证、协商加密算法、交换加密密钥等。

 

      SSL握手协议包含两个阶段,第一个阶段用于建立私密性通信信道,第二个阶段用于客户认证。第一阶段是通信的初始化阶段,在此阶段,首先SSL要求服务器向浏览器出示证书;然后浏览器中的SSL软件发给服务器一个随机产生的传输密钥,此密钥由已验证过的公钥加密,随机产生的传输密钥是核心机密,只有客户的浏览器和此公司的Web服务器知道这个数字序列。第二阶段的主要任务是对客户进行认证,此时服务器已经被认证了。服务器方向客户发出认证请求消息。客户收到服务器方的认证请求消息后,发出自己的证书,并且监听对方回送的认证结果。而当服务器收到客户的证书后,给客户回送认证成功消息,否则返回错误消息。到此为止,握手协议全部结束。

要使用SSL协议,服务器至少有一个私有密匙和一个用于验证身份的证书。私有密匙在密匙交换算法中用到,证书将发送到客户端,以通知服务器端的身份。如果SSL服务器要验证客户端的身份,那么客户端必须也有自己的密匙库(包含私有密匙和证书)。JSSE中引入了信任库(truststore)的概念,它是用来保存证书的数据库。客户端或者服务器通过信任库来验证对方的身份。

 

      在使用SSL前,必须确保系统安装了JSSE。JDK1.4版本默认以及安装了JSSE。如果没有安装,把下载安装好的jar文件拷贝到%JAVA_HOME%\ jre\lib\ext目录下。这样,就安装好了JSSE的运行环境。

 

 

下面我们使用JDK自带的工具创建密匙库和信任库:

 

1)通过使用一下的命令来创建服务器端的密匙库。

          

keytool -genkey -alias hellking -keystore server.keystore -keyalg RSA

 
输入keystore密码:     changeit
您的名字与姓氏是什么?
     [Unknown]:     hellking-Server
您的组织单位名称是什么?
     [Unknown]:     huayuan
您的组织名称是什么?
     [Unknown]:     huayuan
您所在的城市或区域名称是什么?
     [Unknown]:     beijing
您所在的州或省份名称是什么?
     [Unknown]:     beijing
该单位的两字母国家代码是什么
     [Unknown]:     cn
CN=chen ya qiang, OU=huayuan, O=huayuan, L=beijing, ST=beijing, C=cn 正确吗?
     [否]:     y
输入<hellking>的主密码
           (如果和 keystore 密码相同,按回车):
       

 

以上命令执行完成后,将获得一个名为server.keystore的密匙库。

 

2)生成客户端的信任库。首先输出RSA证书:

keytool -export -file test_axis.cer -storepass changeit -keystore server.keystore

 

 

然后把RSA证书输入到一个新的信任库文件中。这个信任库被客户端使用,被用来验证服务器端的身份。

keytool -import -file test_axis.cer -storepass changeit -keystore client.truststore -alias serverkey -noprompt

 

3)创建客户端密匙库。重复步骤1,创建客户端的密匙库。也可以使用以下命令来完成:

keytool -genkey -dname " CN=hellking-Client, OU=tsinghua, O=tsinghua, L=BEIJING, S=BEIJING, C=CN" -storepass changeit -keystore client.keystore -keyalg RSA -keypass changeit

  

4)生成服务器端的信任库。

keytool -export -file test_axis.cer -storepass changeit -keystore client.keystore

 

  

keytool -import -file test_axis.cer -storepass changeit -keystore server.truststore -alias clientkey -noprompt

 

生成了密匙库和信任库,我们把服务器端的密匙库(server.keystore)和信任库(server.truststore)拷贝到Tomcat的某个目录。

下面需要更改Tomcat的配置文件(server.xml),增加一下部署描述符:


例程11 为Tomcat配置SSL协议。
                    

 <Connector port="8443" 
                  maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                  enableLookups="false" disableUploadTimeout="true"
                  acceptCount="100" debug="0" scheme="https" secure="true"
                  clientAuth="true" keystoreFile="K:\jakarta-tomcat-5.0.16\server.keystore" keystorePass="changeit"
                    truststoreFile="K:\jakarta-tomcat-5.0.16\server.truststore" truststorePass="changeit"
                  sslProtocol="TLS" />

               

 

clientAuth参数制定服务器是否要验证客户端证书,如果指定为true,那么客户端必须拥护服务器端可信任的证书后服务器才能响应客户端;如果指定为false,那么服务器不需要验证客户端的证书。

 

公钥、私钥、数字签名和数字证书的概念及解密 * 密钥: 对称加密设置的密码 * 公钥: 公钥用于加密信息和解密数字签名 * 私钥: 私钥用于解密信息和加密消息摘要 * 消息摘要,数字指纹 : 对消息使用HASH算法获取的固定长度的字符串 * 数字签名: 使用私钥加密的消息摘要 * 数字证书:CA用自己的私钥,对需要认证的公钥及相关的信息进行加密 阅读详情

相关推荐

在Keil下完成一个汇编程序的编写

在学习STM32的路上开始是学的C语言尚未进行对汇编进行学习,因此抽出时间来学习一下在keil下的汇编语言。

Liu-FE的博客 1万+

公钥、私钥和证书

理解公钥和私钥首先要区分加密和认证这两个概念! 加密和认证 加密是将数据资料加密,使别人即使获取加密数据,也无法获取正确的资料内容,重点在于数据的安全性。 认证是是确定数据的真实发送方,使别人无法伪造或冒充,重点在于用户的真实性。 公钥和私钥 公钥和私钥通常称非对称加密(又称 不对称加密) 使用公钥和私钥的目的是为了安全的数据传输,必须实现如下目的: 发送方将数据加密,在数据传输过程中不能被别人看到真实数据内容 接收方能确定数据是发送方发送的数据,不是别人冒充。 首先解释公钥和私钥的意义和作用: 公

LoongEmbedded的专栏 1万+

FPGA设计中的扇出约束实战:从XDC到代码优化的全流程解析

本文全面解析FPGA设计中扇出约束的重要性与应用,详细介绍了从XDC约束文件设置到HDL代码优化的全流程实战技巧。通过MAX_FANOUT约束控制信号负载,结合寄存器复制和物理优化策略,有效解决高扇出导致的时序违例和布线拥塞问题,提升设计性能和可靠性。

nept的博客 797

证书和私钥

私钥,即加密的密钥,证书所使用的私钥是非对称加密中的私钥。其中,证书的Subject就是证书的标识,其就像一个人的名字,由国家(C)、省份(S)、城市(L)、单位(O)、单位单元(OU)、公用名(CN)组成。在实际配置Https的时候,往往需要提供证书链,这就是避免中间证书没内置在用户电脑,导致证书链不完整,我们的证书不能被信任的问题。但是提供证书链往往不需要包含根证书,因为根证书内置在用户电脑,如果不内置在用户电脑,提供了也没用(因为根证书是自签证书,浏览器不信任你提供的,只信任系统内置的)。

宋子桓的优快云博客 1300

Multisim14.3中FPGA接口电路设计:原理图项目应用

深入讲解在multisim14.3环境下构建FPGA接口电路的方法,结合原理图设计与项目实践,展现multisim14.3强大的电路仿真能力,提升数字系统开发效率。

weixin_42578963的博客 1157

钉钉宜搭低代码开发师高级认证考试题库113题

钉钉宜搭低代码开发师(高级)考试试题题库,多次考试收集整理,判断题,单选题,多选题,排版清晰,查找方便。希望能帮助到大家!!!

qq_40811920的博客 6397

【IoT】加密与安全:图解非对称加密算法 RSA 数字签名与数字证书

RSA 加密过程是公钥加密、私钥解密,而数字签名、数字证书都是私钥签名(可以理解为加密),公钥签名验证(可以理解为解密)。公钥和私钥都可以用来加密或解密,只要能保证用 A 加密,就用 B 解密即可,至于 A 是公钥还是私钥,可以根据不同的用途而定。 例如: 如果你想把某个消息秘密的发给某人,那你就可以用他的公钥加密 因为只有他知道他的私钥,所以这消息也就只有他本人能解开,于是你就达到了你的目...

产品线负责人 8621

yersinia -G打不开图形化界面解决方案(曲线救国,实操可行)

附Kali 2021 VMware懒人版,已完成汉化,更新源,并已经安装yersinia。ping 114.114.114.114也不通,接着ifconfig发现 IP地址有的,然后手动配置了IP地址,发现还是Ping不通114.11.4.114.114,然后输入。更新源后,报错源无法解析,同时ping www.baidu.com也不通,那可能是DNS存在问题,更新一下DNS服务器。百度找了很久,有个回答比较接近,但一一尝试了几遍,还是无解,解决不了呀!•(2)Yersinia编译的时候,要选择gtk。

weilandeyongheng的专栏 4170

密钥、证书原理与创建

公钥和私钥是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),将其中的一个向外界公开,称为公钥;另一个自己保留,称为私钥。通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。

qq_41937509的博客 4595

【时时三省】vector cast (vcast) 集成测试使用教程

山不在高,有仙则名。水不在深,有龙则灵。----优快云 时时三省。

时时三省的博客 708

汽车UDS诊断详解及Vector相关工具链使用说明——1.1 应用层协议整体介绍

本文我们先从整体的维度来介绍一下应用层协议,每个UDS服务都遵循本文中的协议。 一、SI(Service ID) SI是UDS指令的第一个字节,我们第一篇文章中提到的10等服务就是指这个服务的SI=0x10,它是服务的标识,每个服务的SI都是唯一的。 ...

weixin_42967006的博客 5475

数字证书、公钥和私钥这三者之间的关系是什么

根据非对称密码学的原理,每个证书持有人都有一对公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由证书持人自己持有,并且必须妥善保管和注意保密。数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机构的公章)后形成的一个数字文件。 CA完成签发证书后,会将证书发布在CA的证书库(目录服

u014386474的博客 2万+

基于Simulink的PID控制防抱死制动系统(ABS)建模与仿真

防抱死制动系统(Anti-lock Braking System,简称ABS)是一种用于防止车辆在紧急制动时车轮完全抱死的技术。通过实时监测车轮速度并调节制动力,ABS能够显著提高车辆的制动性能和操控稳定性,从而减少交通事故的发生。PID(比例-积分-微分)控制器因其结构简单、性能稳定且易于实现而被广泛应用于ABS控制系统中。本项目旨在通过MATLAB/Simulink平台设计和验证一个基于PID控制的ABS系统,重点研究PID参数调优方法、系统动态响应特性以及制动过程中的滑移率控制能力。

MHD0815的博客 484

公钥、私钥、数字签名和数字证书

Bob有两把钥匙,一把叫公钥(public key),一把叫私钥(private key)。 Bob的公钥可以公开供其他人使用,他只保留自己的私钥。公钥和私钥用来加解密数据,如果使用任意一把来加密数据,那么只有使用另外一把才能解密数据。 Susan想给Bob写信,她可以使用Bob的公钥将内容加密以后发送给Bob,Bob收到以后,使用私钥解密以便阅读内容。Bob的的其他同事即使截获了Susan发送给Bob的信件,由于没有Bob的私钥,也无法解密,从而确保数据安全。以上就是使用公钥和私钥加解密...

qq_41644069的博客 5539

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

公钥,私钥和数字证书关系

英文原文地址:http://www.youdzone.com/signature.html若下文有任何错误,请告知我,谢谢。79996286@qq.com主角介绍:Bob and Alice提起RSA加密算法,公钥和私钥,多数文章都要使用Bob和Alice这两位人物。他们的创造者名叫Rivest,是RSA之父。他为了在避免在描述中使用A和B,就以这两个字母开头,创建一男一女两个角色,就是我们在任何...

lihuang319的专栏 3万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

数字签名、公钥、私钥、CA证书之间的关系

原文地址:https://www.jianshu.com/p/3c5212b47bec 解说如下: 鲍勃有两把钥匙,一把是公钥,另一把是私钥。 鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。 苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果 鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密...

4124

公钥和私钥

公钥和私钥就是俗称的不对称加密方式,是从以前的对称加密(使用用户名与密码)方式的提高。用电子邮件的方式说明一下原理。       使用公钥与私钥的目的就是实现安全的电子邮件,必须实现如下目的:       1. 我发送给你的内容必须加密,在邮件的传输过程中不能被别人看到。       2. 必须保证是我发送的邮件,不是别人冒充我的。       要达到这样的目标必须发送邮件的两人都有公钥和

tanyujing的专栏 13万+

公钥和私钥的区别以及关系

导读在学习ssh章节时,一定有不少人对公钥和私钥产生过不解。在搜索公钥跟私钥的理解时,发现了这篇有趣的图解小文章,与大家共享。 1. 鲍勃有两把钥匙,一把是公钥,另一把是私钥。 2. 鲍勃把公钥送给他的朋友们—-帕蒂、道格、苏珊—-每人一把。 3. 苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。 4. 鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。 5. 鲍勃给苏珊回信,

weixin_38740463的博客 4252

一文看懂公钥、私钥、数字签名、数字证书

好文章,记录下来!!鲍勃有两把钥匙,一把是公钥,另一把是私钥。!鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。!苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。!鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。!鲍勃给苏珊回信,决定采用"数字签名"。他写完后先用Hash函数,生成信件的摘要(digest)。!

ZL_1618的博客 2069
上一篇: Java jad 反编译
下一篇: 数字证书的存储和USBKey的安全性
wmljava82278040
博客等级 码龄19年 1粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值