http://blog.csdn.net/lovelyhermione/article/details/4477222

前段时间一直在做数字证书,可能是因为是第一次接触数字证书这种东西,由于概念还不是很理解,所以感觉无从下手。通过查找资料,逐步摸索,对数字证书有了初步了解。个人认为主要是对SSL概念的理解,内容其实很少,没有刚开始想象的那么复杂。

 

所谓证书(Certificate,也称public-key certificate)就是用某种签名算法对某些内容(比如公钥)进行数字签名后得到的、可以用来当成信任关系中介的数字凭证。证书发行机构通过发行证 书 告知证书使用者或实体其公钥(public-key)以及其它一些辅助信息。证书在电子商务安全交易中有着广泛的应用,证书发行机构也称 CA(Certificate Authority)。

 

证书的应用步骤是:

(1) A把自己的公钥PKA送到CA(Certificate Authority);

(2) CA用自己的私钥和A的公钥生成A的证书,证书内包括CA的数字签名。签名对象包括需要在证书中说明的内容,比如A的公钥、时间戳、序列号等,为了简化这 里不妨假设证书中只有三项内容:A的公钥PKA、时间戳TIME1、序列号IDA。那么CA发送给A的简单证书凭证可表达 为:CertA=Eca[TIME1,IDA,PKA];

(3) B同样把自己的公钥PKB送到CA;

(4) B得到CA发布的证书CertB;

(5) A告知B证书CertA;

(6) B告知A证书CertB。

A、B各自得到对方证书后,利用从CA得到的公钥(在CA的自签证书中)验证彼此对方的证书是否有效,如果有效,那么就得到了彼此的公钥。利用对方的公钥,可以加密数据,也可以用来验证对方的数字签名。

 

为了方便说明,并没有使用从CA获得的证书,而是通信双方各自产生自签证书。

 

下面是通过最近的研究总结出来的数字证书在java中的使用:

1,生成服务器端证书
keytool -genkey -v  -alias server -keyalg RSA -keystore server.keystore

2,生成客户端证书
keytool -genkey -v  -alias client -keyalg RSA -storetype PKCS12 -keystore client.p12

3,将客户端证书注册到服务器端 成为受信任的(服务器端只接收.cer格式)

 (1)将.p12格式转换成.cer格式
 keytool -export  -alias client -keystore client.p12 -storetype PKCS12 -rfc -file client.cer

 (2)注册为受信任的
 keytool -import -v -file client.cer  -keystore server.keystore

4,在server.xml中配置:

 <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
     maxThreads="150" scheme="https" secure="true"
     clientAuth="true" sslProtocol="TLS"
     keystoreFile="D:/server.keystore" keystorePass="123456"
     truststoreFile="D:/server.keystore" truststorePass="123456"
 />

5,在程序中加入filter,验证数字证书的有效性

Astropad推出新配件:让iPad Pro变成显示器

苹果 Mac mini 没有提供任何配件,这意味着购买之后我们需要自己选购额外的显示器、键盘以及鼠标。今天,Astropad 发布了一款被称为 Luna Display 的配件,...

阅读全文

DevExpress VCL for Delphi 各版本收集下载(最新支持Delphi 10.3.3 RIO)

点此下载 最新更新: DevExpress VCL 18.2.5 Full Sources and DxAutoInstsller 下载包含以下内容:  DevExpress VCL for Delphi 帮...

阅读全文

关于法定节假日的问题

1995年5月, 中国开始实行每周5天工作制。 1999年9月18日,中国国务院发布《全国年节及纪念日放假办法》,决定增加公众法定休假日。春节、“五一”和 “十一...

阅读全文

评论已经关闭。