【JAVA WEB】TOMCAT服务器配置HTTPS

来源:互联网 发布:淘宝刷单处罚新规则 编辑:程序博客网 时间:2024/05/22 17:43
/****************
 * tomcat配置

 ****************/

打开tomcat/conf/server.xml会发现有下面一段配置被注释着:

    <!--    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"               maxThreads="150" scheme="https" secure="true"               clientAuth="false" sslProtocol="TLS" />    -->
这段配置可以让tomcat支持SSL连接。默认是注释的。取消他的注释,并按需修改。secure必须设置为true,scheme必须设计为https。

如果你更改了SSL端口8443为其他端口,你必须修改其他非SSL的redirectPort,因为非SSL连接会重定向那些需要SSL安全约束的用户请求到你所修改的那个端口。

去掉注释,并启动tomcat,输入 https://localhost:8443 就可以看到SSL加密效果。 8443是配置的ssl请求连接端口。


/****************
 * 可能存在问题1:
 * 启动tomcat时,提示找不到.keystore文件
 ****************/

使用SSL协议加密是需要证书的,所以即使配置了 keystorefile ,也还需要一个 .keystore 文件。


解决方案:

在cmd下运行 keytool -genkey -alias tomcat -keyalg RSA

如要输入密码:输入: changeit
剩下的就填填就好了(有建议说名子和姓氏不要用 IP ,要用域名),完成后 C:\Documents and Settings\Administrator (或者C:\users\用户名)下面就会生成.keystore 文件。

keytool命令是JDK中自带的,若提示无效的指令,请检查JDK的环境变量是否配置正确。


/****************
 * 可能存在问题2:
 * 提示can not cover key
 ****************/

keytool -genkey -alias tomcat -keyalg RSA
执行过程中会询问你一些信息,比如国家代码,省市等,其中需要填写两个密码,一次在开头,一次在最后,请保持两个密码相同。比如,我将密码都设成changeit。


/****************
 * 可能存在问题3:
 * 已经创建了keystore,并且已经犯了问题2的错误。
 ****************/

这种时候,你再想重复创建这个别名就会提示你别名已存在。

这边我采取直接删除名为"tomcat"的这个alias,然后重新创建。
命令行键入:keytool -delete -alias tomcat 
提示输入密钥库口令,按之前设置的输入。


/****************
 * 可能存在问题4:
 * 创建的地址不在默认位置
 ****************/

tomcat配置文件中,指定keystore文件的目录:
keystoreFile="bin/.keystore"


/****************
 * 完全配置成功之后,访问https://localhost:8443
 * 出现相应的安全提醒
 ****************/

那么这时候问题来了,通过8443端口可以进行https请求。
同时也可以通过8080(你自己设置的端口号)来进行http请求。


我们希望客户端(或者其他的)只能通过https来请求我们的服务,
就必须禁用不安全的http请求方式,或者使http重定向为https


解决方法:

在tomcat\conf\web.xml中的</welcome-file-list>后面加上这样一段:

<login-config><!-- Authorization setting for SSL --><auth-method>CLIENT-CERT</auth-method><realm-name>Client Cert Users-only Area</realm-name></login-config><security-constraint><!-- Authorization setting for SSL --><web-resource-collection ><web-resource-name >SSL</web-resource-name><url-pattern>/*</url-pattern></web-resource-collection><user-data-constraint><transport-guarantee>CONFIDENTIAL</transport-guarantee></user-data-constraint></security-constraint>


6 0
原创粉丝点击