tomcat开启https

tomcat默认是不支持https访问的,(至少我下载的是这样)

如果需要打开,就修改%TOMCAT_HOME%/conf/server.xml文件,添加如下配置:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
                  maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
                                                clientAuth="true" sslProtocol="TLS" 
                           keystoreFile="C:\\code\\tomcat.keystore" keystorePass="qweasdzxc"
		        truststoreFile="C:\\code\\tomcat.keystore" truststorePass="qweasdzxc"
			   />

   其中port是https访问的端口号,可以设置。

   cilientAuth是否开启客户端认证,如果为true则要求客户端持有证书秘钥才能访问服务器,即双向认证;

 keystoreFile为服务器证书库文件的路径,keystorePass是该证书库的密码;

 truststoreFile为信任的证书库文件路径,truststorePass为密码;

 所以为了能够使用https进行请求,还需要新建客户端和服务器的证书并存入证书库文件中,所幸jdk中   提供了生成证书的工具keytool.

 keytool命令属性介绍:

    

 这里因为我配置了环境变量所以我可以在根目录使用keytool命令,下面介绍如何生成证书。

 1、生成服务器证书

 命令中test为生成的一天证书的别名,RSA算法名称 keystore为文件路径,会生成文件,36500位证书有   效期限,以天为单位。

 执行命令后需要设置口令,就是密码。

 名称和姓氏需要输入你服务器的地址,这里我设置的时本地。

 下面的单位名称组织名称等可以不填写,

 确认所输入的内容,最后输入生成的服务器证书的秘钥口令,我这里输入了和服务器证书一样的口令,   都是qweasdzxc。

 成功后的文件:


   

  2、生成客户端证书


   基本上与服务器证书生成差不多,只不过这里设置了证书的格式和文件格式;

   这里的名称和姓氏可以随意填写,也可以不填。

  生成的文件:

 

  3、将客户端证书导入客户端(浏览器)

   双击testkey.p12文件导入证书,一直点击下一步,输入证书密码,完成导入。

  4、设置服务器端信任客户端证书

   由于是双向SSL认证,服务器必须要信任客户端证书,因此,必须把客户端证书添加为服务器的信任证。       因不能直接将PKCS12格式的证书库导入服务器证书库,将客户端证书导出为一个单独的cer文件。

   一、导出cer证书文件


    其中qweasdzxc为密码


   二、将cer文件导入到服务器证书库


   5、把服务器证书导出为cer文件,并且在客户端安装




6、在客户端中添加服务器端证书认证

      双击test.cer文件导入证书,点击安装证书,

   路径选择受信任的根证书颁发机构,完成导入。


 
   至此证书问题已经解决,只需要按照前面所说的将tomcat配置即可实现https访问,如果将cilientAuth设为       false,则客户端不需要安装证书即可访问服务器,如果将clientAuth设为true,则需要将服务器可信任的证     书导入到浏览器,就可以实现与服务器通信,如果没有则会访问不到服务器。

   不过,在我将cilientAuth设为true,导入客户端证书,而且还是服务器端可信的证书时,使用谷歌和火狐     浏览器依然会出现不安全的链接,好像是因为我的证书颁发者和证书的所属单位导致的,这个需要进一步     实验,不过在除了这两个浏览器之外的360急速、360安全、edge、ie等浏览器显示的时安全链接。

猜你喜欢

转载自201610222643.iteye.com/blog/2400538
今日推荐