数字证书、公钥和私钥这三者之间的关系是什么
汤圆怎么做的
根据⾮对称密码学的原理,每个证书持有⼈都有⼀对公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,⽽私钥是由证书持⼈⾃⼰持有,并且必须妥善保管和注意保密。数字证书则是由证书认证机构(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 rver.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 密码相同,按回车):
我们会好好的以上命令执⾏完成后,将获得⼀个名为rver.keystore的密匙库。
2)⽣成客户端的信任库。⾸先输出RSA证书:
keytool -export -file -storepass changeit -keystore rver.keystore
然后把RSA证书输⼊到⼀个新的信任库⽂件中。这个信任库被客户端使⽤,被⽤来验证服务器端的⾝份。keytool -import -file -storepass changeit -uststore -alias rverkey -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 -storepass changeit -keystore client.keystore
keytool -import -file -storepass changeit -uststore -alias clientkey -noprompt
⽣成了密匙库和信任库,我们把服务器端的密匙库(rver.keystore)和信任库(uststore)拷贝到Tomcat的某个⽬录。
花年
下⾯需要更改Tomcat的配置⽂件(l),增加⼀下部署描述符:
例程11 为Tomcat配置SSL协议。
<Connector port="8443"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="fal" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https" cure="true"
clientAuth="true" keystoreFile="K:\jakarta-tomcat-5.0.16\rver.keystore" keystorePass="changeit"
truststoreFile="K:\jakarta-tomcat-5.0.uststore" truststorePass="changeit"
sslProtocol="TLS" />
clientAuth参数制定服务器是否要验证客户端证书,如果指定为true,那么客户端必须拥护服务器端可信任的证书后服务器才能响应客户端;如果指定为fal,那么服务器不需要验证客户端的证书。
>钟小艾背景