第十八章_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参数,将在此使用默认的密钥存储库

目录
相关文章
|
2月前
|
安全 算法 数据建模
SSL证书是什么?SSL证书的作用
SSL(Secure Sockets Layer)即安全套接层,是一种安全协议,用于在互联网连接中提供数据加密、完整性校验及身份验证。SSL协议位于应用层和传输层之间,可以为任何基于TCP等可靠连接的应用层协议提供安全性保证。
86 3
|
9月前
|
安全 搜索推荐 网络安全
|
域名解析 网络协议 算法
阿里云申请免费ssl证书(HTTPS) 保姆级教程
阿里云申请免费ssl证书(HTTPS) 保姆级教程,阿里云SSL免费证书在哪申请?一个阿里云账号一年可以申请20张免费SSL证书,很多同学找不到免费SSL的入口,阿小云来详细说下阿里云SSL证书免费申请入口链接以及免费SSL证书申请流程
497 0
|
16天前
|
运维 安全 数据建模
阿里云免费SSL证书与付费SSL证书区别及免费SSL证书申请教程参考
免费SSL证书是阿里云为个人网站、开发测试或企业网站建设之初提供的SSL证书,以便满足其对HTTPS数据加密传输的基本要求,从而提高数据传输的安全性。本文为大家详细介绍阿里云免费SSL证书与付费SSL证书区别以及免费SSL证书申请教程。
阿里云免费SSL证书与付费SSL证书区别及免费SSL证书申请教程参考
|
1月前
|
监控 安全 数据建模
SSL证书及重要性
SSL证书是保障网络数据安全的关键工具,通过加密通道保护信息传输,防止窃取或篡改。它分为DV、OV和EV三种验证等级,以及单域名、多域名和通配符类型。
30 0
|
2月前
|
安全 搜索推荐 算法
网站使用SSL证书的重要性
网站使用SSL证书的重要性
|
9月前
|
安全 算法 搜索推荐
【SSL】ssl证书简介、ssl证书生成工具与ssl证书生成步骤
【SSL】ssl证书简介、ssl证书生成工具与ssl证书生成步骤
205 0
|
9月前
|
网络协议 网络安全
【SSL证书】如何使用 FreeSSL (V2.8.0) 申请免费证书及安装
【SSL证书】如何使用 FreeSSL (V2.8.0) 申请免费证书及安装
232 0
|
11月前
|
Web App开发 供应链 算法
阿里云平台WoSign SSL证书应用案例
阿里云平台WoSign SSL证书支持绑定单域名、通配符域名,并提供国密SM2算法、RSA算法供用户选择,能够满足阿里云平台用户的不同应用需求。
1103 0
阿里云平台WoSign SSL证书应用案例
|
Web App开发 网络协议 网络安全
使用mkcert工具生成受信任的本地SSL证书
使用mkcert工具生成受信任的本地SSL证书
469 0

热门文章

最新文章