https

来源:互联网 发布:天猫魔盒下架原因 知乎 编辑:程序博客网 时间:2024/04/28 20:08

tomcat开启https

1、直接用java里bin目录下的keytool工具生成一个keystore文件,命令如下

keytool -genkey -alias server -keyalg RSA -keystore d:\server.keystore -dname "cn=10.17.36.109,cn=192.0.0.1,ou=hik,o=hik,l=hz,st=zj,c=cn" -keypass 123456 -storepass 123456 -validity 36500

d:\server.keystore :生成的证书存放位置
cn:即浏览器要访问的域名或ip,可以多个(多网卡情况)
ou:组织单位名称
o:组织名称
l:所在城市或区域名称
st:所在省市自治区
c:所在国家
-validity 36500:证书有效期,36500是一百年,默认90天
-keypass 秘钥库口令

-storepass 和keypass保持一致

2、keystore文件生成好后,放到tomcat的conf文件夹下,在tomcat目录conf文件夹下修改server.xml文件,

<Connector port="443" protocol="com.hahaha.tomcat.coyote.http11.HikHttp11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" keystoreFile="conf/server.keystore"keystorePass="rLjXO91AAsA="/>

这一段被注释,去掉注释后加上keystoreFile,和keystorePass属性,重启tomcat.

keystorePass是加密过的,那需要相应解密,自己定义的tomcat-cert-ssl.jar扔到tomcat的lib文件夹下.关于这个jar的实现暂不讨论.上文的com.hahaha.tomcat.coyote.http11.HikHttp11NioProtocol类就是这个jar中的类

另外http的Connector的redirectPort改为443咯

<Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="443"/>

注释掉AJP的Connector

<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/> -->

3、目前web项目可以通过https访问也可以http访问,所以这里要强制只能通过https访问,修改web.xml增加以下内容

<login-config>
    <auth-method>CLIENT-CERT</auth-method>
    <realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
    <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>

重启tomcat即可.


0 0
原创粉丝点击