Java密码学(7)——安全协议HTTPS

HTTPS协议是网络上最常用的安全协议。HTTPS=HTTP+SSL/TLS。

HTTPS分为单向认证和双向认证:

单向认证服务:服务端提供服务器证书给客户端,客户端单向认证服务端

双向认证服务:服务端提供服务器证书给客户端,客户端提供客户证书。客户端和服务端双向认证。

 

  • 为tomcat配置单向认证

使用KeyTool生成密钥库文件(.keystore)和证书(.cer)。

生成keystore

keytool -genkeypair -keyalg RSA -keysize 2048 -sigalg SHA1withRSA -validity 36000 -alias yel -keystore yel.keystore

输入个人信息

 

“名字与姓氏”输入域名,我们本机测试,所以用127.0.0.1

keystore文件生成好后,公私密钥对存储在里面。

从keystore导出证书,公钥存储在.cer文件中

D:\>keytool -exportcert -alias yel -keystore yel.keystore -file yel.cer -rfc

  

tomcat配置

修改tomcat的server.xml文件,加载密钥库文件keystore

<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
           maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" 
           keystoreFile="d:/yel.keystore" keystorePass="123456"/>

 https协议监听443端口,keystoreFile为密钥库文件路径,keystorePass为密钥库文件口令。

最后将我们的证书导入浏览器。

在浏览器输入https://127.0.0.1/可以看到tomcat主页。

 

流程分析:

tomcat作为服务端,加载了keystore就有了私钥。浏览器作为客户端导入了证书后就有了公钥。本着“私钥签名,公钥验签”的原则。服务端返回经过私钥的签名给客户端,客户端用公钥去验签。客户端单向认证服务端。此时如果浏览器未导入证书,就会提示“此网站的安全证书存在问题”。因为浏览器没有证书,无法用公钥去验证服务端的签名。

 

  • 为tomcat配置双向认证

双向认证需要根证书、服务器证书、客户端证书

这些证书需要更强到的工具openssl生成。openssl可以从http://slproweb.com/products/Win32OpenSSL.html下载window的安装版。

 

生成根证书:

genrsa -des3 -out ca.key 1024

 

rsa -in ca.key -out ca.key

 两条命名,都要求我们输入口令,比如123456。第一条命令生成密钥库文件,第二条命令去除密钥库口令。

req -new -x509 -key ca.key -out ca.crt

 输入个人信息,生成根证书ca.crt。

pkcs12 -export -cacerts -inkey ca.key -in ca.crt -out ca.p12

java环境使用OpenSSL生成的证书必须转换格式为p12。个人信息交换文件(PKCS#12)可以作为密钥库和信任库使用。 

 

生成服务器证书:

genrsa -des3 -out server.key 1024

 

rsa -in server.key -out server.key

 这两条命令生成去除了口令的密钥库文件

req -new -key server.key -out server.csr

 生成前面请求文件

ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key

  Root CA去对服务器证书请求即csr(certificate request)进行签名认证

 最后生成服务器证书server.crt

pkcs12 -export -clcerts -inkey server.key -in server.crt -out server.p12

 转换格式为p12

 

生成客户端证书:

基本流程和生成服务器证书差不多,4条命令生成客户端证书client.crt

genrsa -des3 -out client.key 1024 
rsa -in client.key -out client.key 
req -new -key client.key -out client.csr
ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key
pkcs12 -export -inkey client.key -in client.crt -out client.p12

 

tomcat构建双向认证服务需要ca.p12,server.p12,client.p12个人信息交换文件。

浏览器里面受信任机构导入ca.p12,个人证书导入client.p12

tomcat下配置

<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
           maxThreads="150" scheme="https" secure="true"
           clientAuth="true" sslProtocol="TLS" 
	   keystoreFile="conf/server.p12" keystorePass="123456" keystoreType="PKCS12"
	   truststoreFile="conf/ca.p12" truststorePass="123456" truststoreType="PKCS12"/>

 成功的话可以正常访问https://127.0.0.1/。客户端证书没导入的话就不能访问tomcat主页

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值