首页 > 学院 > 开发设计 > 正文

Tomcat设置https访问

2019-11-08 00:29:21
字体:
来源:转载
供稿:网友

      昨天,自己做服务器的安全传输,在登录时用的是http协议,结果自己用抓包的软件抓到后,发现数据完全可以看到。组长说这样明文传输太不安全了,必须要加密才可以。在网上搜索了资料,发现https的安全性较高,所有尝试用tomcat做一个https的服务器。网上很多教程都是不正确的,自己花了很多时间才把tomcat的https服务器搭起来,然后用android客户端进行访问,最终做了出来。

1.用jdk生成tomcat的服务器与客户端需要的证书。

1、生成服务器证书库

keytool -validity 3650 -genkey -v -alias server -keyalg RSA -keystore D:/ssl/server.keystore -dname "CN=192.168.1.190,OU=icesoft,O=icesoft,L=Haidian,ST=Beijing,c=cn" -storepass 123456 -keypass 123456

2、生成客户端证书库

keytool -validity 3650 -genkeypair -v -alias client -keyalg RSA -storetype PKCS12 -keystore D:/ssl/client.p12 -dname "CN=client,OU=icesoft,O=icesoft,L=Haidian,ST=Beijing,c=cn" -storepass 123456 -keypass 123456

3、从客户端证书库中导出客户端证书

keytool -export -v -alias client -keystore D:/ssl/client.p12 -storetype PKCS12 -storepass 123456 -rfc -file D:/ssl/client.cer

4、从服务器证书库中导出服务器证书

keytool -export -v -alias server -keystore D:/ssl/server.keystore -storepass 123456 -rfc -file D:/ssl/server.cer

5、生成客户端信任证书库(由服务端证书生成的证书库)

keytool -import -v -alias server -file D:/ssl/server.cer -keystore D:/ssl/client.truststore -storepass 123456

6、将客户端证书导入到服务器证书库(使得服务器信任客户端证书)

keytool -import -v -alias client -file D:/ssl/client.cer -keystore D:/ssl/server.keystore -storepass 123456

7、查看证书库中的全部证书

keytool -list -keystore D:/ssl/server.keystore -storepass 123456

用keytool生成证书

此时已经生成有效期是10年的自定义证书,其中1、生成服务器证书库的CN=192.168.1.190必须是tomcat服务器的ip地址,自己需要根据自己的ip地址设置。此时在d盘的ssl文件夹下生成了5个文件,如果的盘之前没有ssl文件夹,记得新建一个,然后运行之前的代码。会得到server.cer、client.cer(公钥)、server.keystore(服务器密钥库)等几个文件。server.cer会在Android客户端的时候使用,用来加密信息。

2.Tomcat配置

编辑${catalina.base}/conf/server.xml文件(${catalina.base}指Tomcat的安装目录)。找到Connector port="8443"的标签,取消注释,并修改成如下:

<Connector port="8443" PRotocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true"               maxThreads="150" scheme="https" secure="true"               clientAuth="true" sslProtocol="TLS"               keystoreFile="${catalina.base}/key/server.keystore" keystorePass="123456"               truststoreFile="${catalina.base}/key/server.keystore" truststorePass="123456"/>

备注:

keystoreFile:指定服务器密钥库,可以配置成绝对路径,如“D:/apache-tomcat-7.0.55/key/server.keystore”,这是我的tomcat的绝对路径,根据自己的情况修改。本例中使用相对路径,且在Tomcat目录中创建了一个名称为key的文件夹,仅供参考。

keystorePass:密钥库生成时的密码

truststoreFile:受信任密钥库,和密钥库相同即可

truststorePass:受信任密钥库密码

此时点击server.cer,浏览器会提示是否安装证书,点击安装即可。

此时启动tomcat,用https://localhost:8080/访问即可。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表