Tomcat设置https访问

来源:互联网 发布:移动网络电视收费吗 编辑:程序博客网 时间:2024/05/01 20:52

      昨天,自己做服务器的安全传输,在登录时用的是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/访问即可。





1 0
原创粉丝点击