安全网络通信(一)---利用keytool工具生成自签名证书

加密通信


  • 基本原理
    数据从一段发送到另一端时,发送者首先对数据进行加密,然后再把它发送给接受者。这样,在网络上进行传输的就是经过加密的数据。
    由于有人在网络上截获到了这段数据,由于ta没有秘钥,所以ta无法获知数据内容。
    接受者接受到加密是数据后,先对数据进行解密,然后再进行处理。

SSL,TSL采用加密技术来实现安全通信,保证通信数据的机密性和完整性,并且保证通信双方可以验证对方的身份。

  • 数字证书
    SSL、TSL通过数字证书来证明客户端或服务器的身份。当客户通过安全的连接和服务器通信时,服务器会先向客户出示它的数字证书,这个证书声明该服务器安全的而且的确是这个服务器。

每个证书在全世界范围内都是唯一的,其他非法服务器无法假冒原始服务器的身份。

可以把数字证书比作电子身份证

  • 获取数字证书
    1>从权威机构购买证书
    数字证书采用加密技术制作而成,他人几乎无法伪造。数字证书国际权威证书机构(CA,Certificate Authority),如VeriSign(www.verisign.com)和Thawte(www.thawte.com)颁发,它们保证了证书的可信性.
    2>创建自我签名的证书
    在某些场合,通信双方只关心数据在网络上可以安全传输,并不需要对方进行身份验证,在这种情况下,可以创建自签名证书,比如通过Sun公司提供的keytool工具就可以创建这样的证书。

创建自签名证书

keytool在jdk的安装目录下
这里写图片描述

打开cmd,查看keytool选项

C:\Users>keytool
密钥和证书管理工具

命令:

 -certreq            生成证书请求
 -changealias        更改条目的别名
 -delete             删除条目
 -exportcert         导出证书
 -genkeypair         生成密钥对
 -genseckey          生成密钥
 -gencert            根据证书请求生成证书
 -importcert         导入证书或证书链
 -importpass         导入口令
 -importkeystore     从其他密钥库导入一个或所有条目
 -keypasswd          更改条目的密钥口令
 -list               列出密钥库中的条目
 -printcert          打印证书内容
 -printcertreq       打印证书请求的内容
 -printcrl           打印 CRL 文件的内容
 -storepasswd        更改密钥库的存储口令

使用 "keytool -command_name -help" 获取 command_name 的用法

通过keytool工具创建包含一对RSA密钥的自签名证书

keytool -genkeypair -alias mycert -keyalg RSA -keystore test.keys

秘钥库口令要自己设置
这里写图片描述

看一看到有一条warning,无妨,按提示运行那条命令即可

keytool -importkeystore -srckeystore test.keys -destkeystore test.keys -deststoretype pkcs12

这里写图片描述
可以看到已经在电脑中生成了秘钥库文件test.keys
这里写图片描述

查看证书库keytool -list -keystore test.keys

这里写图片描述

导出到证书文件keytool -export -alias mycert -file mycert.crt -keystore test.keys
这里写图片描述
看一看到,证书文件已经导出成功
这里写图片描述

可以参看证书
这里写图片描述
这里写图片描述

导入证书的信息,将mycert.crt导入到秘钥库test_cacerts中keytool -import -keystore test_cacerts -file mycert.crt
这里写图片描述

查看证书信息keytool -printcert -file "mycert.crt"

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_34444097/article/details/79859600
今日推荐