第十八章_SSL证书

简介:

1、证书概述

SSL基于对称和部队称这两种加密方法。后者涉及了一对密钥,即一个公钥,一个私钥。

公钥通常包在证书中,因为证书是发布公钥的一种可信任的方式。证书是利用与证书中包含的公钥相对应的私钥来签署的,这叫自签证书。换句话说,自签证书的签署者与颁发者是相同的。

如果人们已经人事发送者,那么用自签证书来验证签署文档的发送者是可以的。但是为了得到更广泛的接受,则需要由数字证书认证中心(Certificate AuthorityCA)签署,如VeriSignThawte,你需要将自签证书发给他们。

CA对你完成验证之后,就会给你办法一份证书,它代替了自签证书。这份新证书也可以是一个证书链。在这个证书链的最上方是”根”,就是指自签证书。接下来就是CA对你进行验证的证书。如果这家CA名气不够大,他们会将它发给更大的CA,更大的CA会验证第一家CA的公钥。最后一家CA也会发出证书,因此形成了一个证书链。这个更大的CA通常会广泛发布他们的公钥,因此人们可以很容易验证他们签署的证书。

Java提供了一组可以用于处理前面讲过的不对称加密法的工具和API,用她们可以完成以下工作:

1、生成公钥和私钥对,然后你就可以将生成的公钥发送给证书颁发者,以便获得你自己的证书,当然,这是要收费的。

2、将私钥和公钥保存在一个称作密钥存储库的数据库中。密钥存储库有名称,并且有密码保护。

3、将其他人的证书保存在同一个密钥存储库中。

4、通过自己的私钥进行签署来创建自己的证书。但是,这种证书的用途有限。如果用作测试,那么使用自签证书就可以了。

5、对一个文件进行数字签名,这个特别重要,因为如果Applets是保存在一个签过名的jar文件中,那么浏览器将只允许Applets访问资源。签过名的java代码可以向用户保证,你真的是这个类的开发者。现在我们看以下这个工具

 

2、KeyTool程序

KeyTool程序是创建和维护公钥和私钥及证书的工具。它在JDK中,位于JDKbin目录下。KeyTool是一个命令行程序。要想查看它的正确语法,只要在命令窗口中输入keytool即可。

 

2.1、生成密钥对

首先,要了解在Java中生成密钥的几个关键点:

1、Keytool生成一个公钥/私钥对,并利用这个私钥创建一份证书。其中,证书包含了公钥及实体的身份信息,证明这是属于谁的密钥。因此,你需要提供名称和其他信息。这个名称称作识别名称(Distinguished Name, DN),包含以下信息:

CN= common name, e.g. Joe Sample

OU=organizational unit, e.g. Information Technology

O=organization name, e.g. Brainy Software Corp

L=locality name, e.g. Vancouver

S=state name, e.g. BC

C=country, (two letter country code) e.g. CA

 

2、密钥将保存在一个称作密钥存储库的数据库中。密钥存储库是基于文件并有密码保护的,因此任何未被授权的用户都无法访问保存在其中的私钥。

3、如果在生成密钥或执行其他功能时没有指定密钥存储库,将使用默认的密钥存储库,在用户的home目录下(即user.home系统属性定义的目录),默认木要存储库命名为.keystore。例如,在Windows平台上,Windows XP的默认密钥存储库是放在C:\Documents and Settings\userName

4、密钥存储库中有两种条目:

a、密钥条目,每个条目都是一个私钥,并配有对应公钥的证书链。

b、可信任的证书条目,每个条目中都包含你所信任的实体的公钥。

5、密钥存储库汇总的每个条目都用一个唯一的名称或者别名表示。你在用keytool生成密钥或做其他事情的时候必须指定一个别名。

6、如果在生成密钥对时没有指定别名,将默认使用mykey做为别名。

生成密钥对的最简短的命令是:

keytool -genkeypair

使用这个命令时,将使用默认的密钥存储库;如果用户的home目录下没有密钥存储库,则会创建一个。生成的密钥以mykey做为别名。然后你会被要求输入密钥存储库的密码,并提供识别名称的信息。最后,会有弹出窗口要求你输入条目的密码。

在此调用keytool -genkeypair会产生一个错误,因为它会试图创建一对密钥,并且在此使用mykey做为别名。

指定别名时,可以使用-alias参数。例如,以下命令创建了以关键字email标识的一个密钥对:

keytool -genkeypair -alias email

还是使用默认的密钥存储库。

指定密钥存储库时,要使用-keystore参数。例如,下列命令生成了一个密钥对,并将他保存在C:\javakeys目录下名为myKeystore.keystore的密钥存储文件中:

keytool -genkeypair -keystore C;\javakeys\myKeyStore

调用完程序之后,会要求你输入任务信息。

生成密钥对的完整命令要使用genkeypairaliaskeypassstorepass以及dname参数。例如:

keytool -genkeypair -alias email4 -keypass myPassword -dname

“CN=JoeSample, OU=IT, O=Brain Software Corp, L=Surrey, S=BC, C=CA”

-storepass myPassword

 

2.2、认证

当你可以利用Keytool生成公钥/私钥对和自签证书时,这个证书将只被已经认识你的人所信任。为了得到更广泛的认可,要由数字证书认证中心(CA)为你的证书进行签署,例如VeriSignEntrust或者Thawte

如果想要这么做,需要利用Keytool-certreq参数生成一个CSRCertificate Signing Request,证书签署请求),其语法如下:

keytool -certreq -alias alias -file certregFile

这个命令的输入值就是alias所引用的证书,其输出是一个CSR,这是一个由certregFile指定路径的文件。将CSR发送给CA,他们会离线对你进行验证,一般会请你提供有效的身份证明资料,例如护照或者驾照复印件。

如果CA认可你的身份资料,就会给你发一份新的证书,或者是一个包含你公钥的证书链。这个新证书代替了目前的证书链。一旦你收到回复,就可以利用Keytoolimportcert参数将新证书导入到一个密钥存储库中。

 

2.3、将证书导入密钥存储库

如果从第三方收到一个签过名的文档,或者收到CA的回复,就可以将它保存在密钥存储库中,并且需要给它起一个容易记住这份证书的别名。

要将证书存入或导入密钥存储库中,需使用importcert参数,其语法如下:

keytool -importcert -alias anAlias -file filename

例如,要将joeCertificate.cer中的证书导入密钥存储库,并取别名brotherJoe时,要使用下面这个命令:

keytool -importcert -alias brotherJoe -file joeCertificate.cer

将证书保存在密钥存储库中有两个好处。第一,有一个受密码保护的集中保存的地方。第二,如果你已经将第三方的证书保存在密钥存储库中,就可以轻松得验证来自他们的签名文档。

 

2.4、从密钥存储库中导出证书

利用私钥可以给文档进行签名。在给文档签名时,要给文档建议一份摘要信息,然后用私钥对摘要信息进行加密。然后发布文档以及加过密的摘要。

其他人要验证文档,他们必须有你的公钥。为了安全期间,公钥也需要进行签名。你可以自签,也可以让可信任的证书颁发商为它签名。

首先,是从密钥存储库中导出证书,并将它保存成一个文件。然后轻松地发布这个文件,为了从密钥存储库中提取证书,需要使用-exportcert参数,并传入包含证书的文件名和别名,其语法如下:

keytool -exportcert -alias anAlias -file filename

包含证书的文件一般以.cer为扩展名。例如,为了提取别名为Meredith的证书,并将它存入meredithcertificate.cer文件,可以使用以下命令:

keytool -exportcert -alias Meredith-file meredithcertificate.cer

 

2.5、列出密钥存储库条目

有了可以保存专用密钥的密钥存储库,以及可信任的证书颁发商,就可以利用keytool程序将它列出,来查询它的内容,其做法是使用list参数:

keytool -list -keystore myKeyStore -storepass myPassword

如果缺失keystore参数,将在此使用默认的密钥存储库

目录
相关文章
|
安全 搜索推荐 网络安全
|
域名解析 网络协议 算法
2022阿里云免费SSL证书申请全过程(图文详解)
阿里云SSL证书免费申请流程:先0元支付SSL证书资源包,每个阿里云账号可以一年可以申请20个免费SSL证书,然后域名DNS验证,提交CA审核后就可以下载SSL证书到本地了
45193 4
2022阿里云免费SSL证书申请全过程(图文详解)
|
28天前
|
负载均衡 算法 网络安全
阿里云WoSign SSL证书申请指南_沃通SSL技术文档
阿里云平台WoSign品牌SSL证书是由阿里云合作伙伴沃通CA提供,上线阿里云平台以来,成为阿里云平台热销的国产品牌证书产品,用户在阿里云平台https://www.aliyun.com/product/cas 可直接下单购买WoSign SSL证书,快捷部署到阿里云产品中。
2249 8
阿里云WoSign SSL证书申请指南_沃通SSL技术文档
|
1月前
|
Web App开发 算法 安全
什么是阿里云WoSign SSL证书?_沃通SSL技术文档
WoSign品牌SSL证书由阿里云平台SSL证书合作伙伴沃通CA提供,上线阿里云平台以来,成为阿里云平台热销的国产品牌证书产品。
1833 2
|
5月前
|
监控 安全 数据建模
SSL证书及重要性
SSL证书是保障网络数据安全的关键工具,通过加密通道保护信息传输,防止窃取或篡改。它分为DV、OV和EV三种验证等级,以及单域名、多域名和通配符类型。
95 0
|
6月前
|
安全 搜索推荐 算法
网站使用SSL证书的重要性
网站使用SSL证书的重要性
|
域名解析 安全 网络协议
如何获得免费的 SSL 证书?(真实有效)
俗话说“工欲善其事,必先利其器”,SSL证书作为保护网站数据传输安全的重要部分,我们在申请、签发、部署安装SSL证书的时候,可能会涉及到CSR文件生成、获取证书链、转换证书格式等需求,这时候有对应的工具就可提高工作效率。下面这几款SSL证书实用工具,不仅可在线使用,而且全都免费!
143 0
|
Web App开发 网络协议 网络安全
使用mkcert工具生成受信任的本地SSL证书
使用mkcert工具生成受信任的本地SSL证书
537 0
|
安全 算法 搜索推荐
SSL证书有什么作用?安装SSL证书有哪些好处
很多网友问SSL证书有什么作用?网站安装SSL证书有哪些好处?本文就给大家介绍SSL证书的作用以及网站安装SSL证书的好处。
833 0
SSL证书有什么作用?安装SSL证书有哪些好处
|
安全 网络安全 数据安全/隐私保护
SSL证书重要性有多大?
做好了个人数据的防护,不仅能够有效避免数据泄露的危害,还能够大幅消除用户对于个人隐私泄露的疑虑。建议企业应注重提升网络安全保护,避免出现数据泄露事件。这从长远来看是企业必不可少的重要一环,对企业的发展将起到不可估量的重要作用,符合网络安全发展的形势,有利于促进企业走上良性发展的道路。
112 0