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

根据非对称密码学的原理,每个证书持有人都有一对公钥和私钥,这两把密钥可以互为加解

密。公钥是公开的,不需要保密,而私钥是由证书持人自己持有,并且必须妥善保管和注意

保密。

数字证书则是由证书认证机构

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

,那么服务器不需要验

证客户端的证书。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值