传输安全SSL

导读:本篇文章讲解 传输安全SSL,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

Tomcat可以通过两种方式支持SSL:一种是JSSE,一种是APR(默认使用OpenSSL引擎)。前者适用于BIO、NIO、NIO2链接器(8.5版本后,NIO和NIO2同时支持OpenSSL,以用于HTTP2.0),后者适用于APR链接器,以为JSSE和APR配置有明显区别,因此最好在Connector的protocol属性中明确指定链接器的类名,而非协议名(如HTTP/1.1),否则,Tomcat会自动按照本地配置构造Connector(如果安装了APR,则使用APR链接器否则使用NIO链接器),这样可能会导致SSL不可用。

在为Tomcat添加SSL配置之前,我们需要创建一个密钥库,Tomcat支持的密钥库有JKS、PKCS11和PKCS12。JKS是java标准的密钥库格式,由keytool命令行工具创建,该工具位于%JAVA_HOME%/bin目录下。执行命令如下:

 ./keytool -genkey -alias tomcat -keyalg RSA -keystore /home/dongsq/certmykey.keystore
 

传输安全SSL

密钥库密码将在server.xml配置时用到,其他信息作为基本信息,客户端可以通过浏览器查看。命令执行成功以后,将生成的密钥库文件mykey.keystore复制到$CALTALINA_BASE/conf目录下。将默认注释的SSL链接器取消注释,并修改如下:

传输安全SSL

链接器的protocol属性设置为org.apache.coyote.http11.Http11NioProtocol,以免Tomcat自动选择HTTP链接器实现(可根据需要修改为NIO2的实现,不能选择APR) certificateKeystorePassword为创建密钥库时填写的密钥库密码,port为SSL链接器的端口。

除此之外,我们还可以通过OpenSSL创建证书并导入到密钥库。

1、执行以下命令生成根密钥:

openssl genrsa -out rootkey.pem 2048
 

传输安全SSL

 2、执行命令创建根证书(用根证书来签发服务器端的请求文件):

  openssl req -x509 -new -key rootkey.pem -out root.crt
 

传输安全SSL

 根据提示输入国家、省份、城市以及公司信息等。

3、执行命令创建服务器密钥:

openssl genrsa -out serverkey.pem 2048
 

传输安全SSL

 4、执行命令生成服务器端证书的请求文件:

openssl req -new -key serverkey.pem -out server.csr

传输安全SSL

 同样根据提示输入国家、省份、城市以及公司信息等。

5、执行命令用根证书来签发服务器端请求文件,生成服务器端证书:

openssl x509 -req -in server.csr -CA root.crt -CAkey rootkey.pem -CAcreateserial -days 3650 -out server.crt
 

传输安全SSL

以上我们创建的是自签名证书,多用于开发测试环境,在生成环境中,我们需要向数字证书颁发机构(CA)提交证书请求文件(server.csr),CA则返回给我们数字证书。

6、执行命令将证书导出为pkcs12格式:

openssl pkcs12 -export -in server.crt -inkey serverkey.pem -out server.pkcs12
 

传输安全SSL

7、执行keytool命令生成服务端密钥库:

 keytool -importkeystore -srckeystore server.pkcs12 -destkeystore mykey.keystore -srcstoretype pkcs12
 

传输安全SSL

 需要根据提示输入密钥库密码以及上一步的导出密码。至此创建了一个mykey.keystore密钥库文件。

8、通过keytool的list命令,可以查看其包含的证书信息:

keytool -list -v -keystore mykey.keystore
 

传输安全SSL

9、将mykey.keystore密钥库文件按照前面说名的方式部署到Tomcat当中。

接下来看一下http请求和https请求的区别:

传输安全SSL

 

经过wireshark抓包,请求信息看的很清楚: 

传输安全SSL

 

传输安全SSL

 

 选择任意协议为TLSv1的流量后右击选择追踪流->TCP流,发现数据均为加密

传输安全SSL

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/13808.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!