加密通信
- 基本原理
数据从一段发送到另一端时,发送者首先对数据进行加密,然后再把它发送给接受者。这样,在网络上进行传输的就是经过加密的数据。
由于有人在网络上截获到了这段数据,由于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"