`

在tomcat7中启用HTTPS的详细配置

阅读更多

最简单的方法,直接用java里的keytool工具生成一个keystore文件,然后直接用这个文件启用https就可以了。

方法如下:
命令行执行%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA
执行过程中会询问你一些信息,比如国家代码,省市等,其中需要填写两个密码,一次在开头,一次在最后,请保持两个密码相同。比如,我将密码都设成s3cret。
 
如果不同,启动会报错,大概是下面这样的
java.io.IOException: Cannot recover key
 
执行完成后会生成一个.keystore文件,将它复制到tomcat的bin目录下(并不一定,放哪里都可以)
打开conf目录下的server.xml文件,找到以下这一段
<!--
    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />
    -->
 
它被注释掉了,将注释去掉,并将这一段改成以下
 
    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
       keystoreFile="bin/.keystore" keystorePass=" s3cret"
               clientAuth="false" sslProtocol="TLS" />
 
之后启动tomcat就可以了,通过https方式访问8443端口,就能看到效果。如果用http访问之前的端口,那么还是普通的未加密连接。
 
到这里问题来了,我的目的是启用https,但现在http还能访问,那么就可以绕开https。https也就起不了什么作用了。因此要强制访问https。
 
打开你的web应用的web.xml文件,在最后加上这样一段
 
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Context</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
 
重启tomcat,现在你放问原来的地址,假设是http://localhost:8080/mywebapp/,可以看到,连接被重定向到了https的连接
https://localhost:8443/mywebapp/。这样,我们的目的达到了。
 
但似乎还有点小问题,keystorePass="s3cret",这个密码直接被明码方式卸载server.xml里。总觉得有还是有点不爽。
 
那么还有一种稍微复杂点的方式,我们使用openssl。
 
首先,需要下载openssl,为了方便,可以下载一个绿色版,http://www.itrus.com.cn/verisignchina/Service/soft/autocsr.rar
 
加压后除了openssl.exe以外,还有一个bat文件,这个可以帮助我们快速创建证书申请文件。
 
运行autocsr.bat,按照提示输入信息,之后按任意键确认。你会得到两个文件,一个server.key,这是私钥文件,还有一个名为certreq.csr的证书请求文件。
 
如果你要向证书颁发机构申请正式的安全证书,那么就把这个certreq.csr文件发给他们就行了。他们会给你发来两个cer文件,一个是服务器证书,一个是根证书
 
如果你只是要使用https,那么证书自己签署就可以了。
 
在命令行下进入刚才解压的目录,找到openssl.exe所在的目录,执行以下命令
openssl x509 -req -in certreq.csr -out cert.cer -signkey server.key -days 3650
 
现在你将得到一个名为cert.cer的证书文件。
 
修改server.xml将
    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
       keystoreFile="bin/.keystore" keystorePass=" s3cret"
               clientAuth="false" sslProtocol="TLS" />
修改为以下内容(假设cert.cer和server.key文件都放在tomcat的conf目录下)
<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
       SSLCertificateFile="conf/cert.cer"
       SSLCertificateKeyFile="conf/server.key"
               sslProtocol="TLS" />
 
PS.如果真的向证书颁发机构申请到了正式的安全证书,那么配置还有点不同,如下
<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
  SSLCertificateFile="conf/server.cer"
  SSLCertificateKeyFile="conf/server.key"
  SSLCertificateChainFile="conf/intermediate.cer"
               sslProtocol="TLS" />
 
因为证书颁发机构会给两个整数,一个是签署后的服务器证书,还有一个中级CA证书,所以要多一行配置。
 
好了,到这里都配置完了,重启tomcat,就可以看到效果。不过,看到的通常会是一个exception,大概是说APR not available
 
如果遇到这个异常,说明你的tomcat没有安装apr支持,请到以下地址去下载
 
 
将它们放到tomcat的bin目录下,然后修改catalina.bat文件,在其中加入SET PATH=%PATH%;.(最后的点不能漏掉)
 
之后启动tomcat,问题应该解决了,看起来效果和第一种方式没什么不同。
分享到:
评论

相关推荐

    tomcat启用https

    tomcat开发环境配置启用https 使用jdk自带的keytool工具制作证书

    tomcat解决跨域访问问题配置

    1、修改tomcat下的Conf/web.xml文件,在该文件内容中新增以下配置,注意,若该web.xml中存在其它filter,则需要将该filter放在所有filter前面; &lt;filter-name&gt;CorsFilter &lt;filter-class&gt;org.apache.catalina....

    tomcat 如何配置成https

    toamcat如何启用8443端口,配置程https访问

    Windows7系统IIS7+Tomcat集成

    在 tomcat 的配置文件 server.xml 文件中添加以下这句话可以更改 tomcat 的默认目录: ”” docBase=”e:\tomcat”(此处为你的网站根目录,通 过这句话的映射,可以将原先的默认更改为新的目录) debug=”0”/&gt; ...

    tomcat6启用SSL_证书_tomcat6多ssl_Tomcat6;SSL;_

    Tomcat6开启SSL配置的详细说明,及服务器生成证书

    内网项目启用Https手册.docx

    tomcat配置https,需要的拿走,里面有详细的截图说明!

    tomcat7.0.69 + nio + redis session共享 配置优化版

    此版本在Tomcat7.0.69 的基础上进行了部分配置信息的优化, 1、关闭了几乎不再使用的 ajp 协议配置(server.xml), 2、 启用nio 和 线程池配置 (server.xml) 3、修改了context.xml ,添加redis 支持(注意redis ...

    优化Tomcat配置(内存、并发、缓存等方面)方法详解

    Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数。 JAVA_OPTS参数说明 server 启用jdk 的 server 版; -Xms java虚拟机初始化时的最小内存; -...

    用Apache或tomcat启用目录浏览并.htacess加密

    Apache安装步骤,详细描述配置目录浏览以及加密的步骤 tomcat配置虚拟目录

    Tomcat6_优化_方案

    9.1 minSpareThreads 和 maxSpareThreads 是最小最大空闲线程,设置为50-200之间即可,没多少意义,除非你是开发机,有其他程序在抢资源. 10. compression="on" 启用ZIP压缩 11. 如果需要进一步优化,请使用 APache...

    dubbo-admin-2.8.4,放入tomcat直接可用

    上传这份是我打包后的,配置zookeeper使用,理论上本地启用zookeeper后使用默认端口war包内容就不需要修改了,如果有修改修改war包解压后的dubbo.properties即可。war包丢进tomcat可以直接访问,访问路径问:ip+端口...

    tomcat-cluster-redis-session-manager:Tomcat集群Redis会话管理器Java客户端

    Tomcat集群Redis会话管理器 ... 展望未来,我们无需在Load Balancer中启用粘性会话(JSESSIONID)。 支持: Apache Tomcat 7 Apache Tomcat 8 Apache Tomcat 9 Apache Tomcat 10 资料下载: Maven配置 &lt;id&gt;repsy

    官方原版Apache Tomcat 9.0.8

    Apache Tomcat 9.0.8 更新内容: ...当在 Host 或 Engine 上配置 Valve 时,启用 CrawlerSessionManagerValve 以正确处理爬行多个主机和/或 Web 应用程序的漫游器 添加对使用 Java 11 EA 构建的类的注释扫描的支持

    tomcat8 + nginx + memcached + cas 实现负载均衡的配置包

    1,tomcat8的配置: 1.1修改tomcat8.x/conf/context.xml的配置如下: &lt;!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file ...

    Tomcat面试专题及答案.pdf

    2)在 server.xml 文件上配置节点,设置相关的属性即可 3)通过 Catalina 来进行配置:进入到 conf\Catalina\localhost 文件下,创建一个 xml 文件,该文件的名字就是站点的名字。 编写 XML 的方式来进行设置。

    Tomcat性能调优指导手册.pdf

    Tomcat性能调优指导手册 1. 概述 3 2. Java虚拟机性能调优 3 2.1 catalina.sh 或 catalina.bat 3 2.2 winNT服务 3 3. 禁用DNS查询 4 4. 调整线程数(连接数)...7. 启用APR库 11 8. 使用Jconsole监控 12 9. 调优综述 13

    Tomcat开启JMX服务方法介绍

    主要介绍了Tomcat开启JMX服务方法的相关内容,小编觉得挺不错的,在这里给大家分享一下,需要的朋友可以参考。

    tomcat+nginx+mybatis+redis整合

    二、nginx配置及启用 3 1、nginx的下载和启动 3 2、nginx配置文件 4 3、使用nginx负载均衡 5 4、配置nginx遇到的问题 6 三、mybatis 应用的缓存应用 7 1、mybatis缓存 7 2、缓存的工作原理 8 1、一级缓存工作原理 8 ...

    官网原版apache-tomcat-9.0.8-windows-x64

    Apache Tomcat 9.0.8 版本的更新内容:...当在 Host 或 Engine 上配置 Valve 时,启用 CrawlerSessionManagerValve 以正确处理爬行多个主机和/或 Web 应用程序的漫游器 添加对使用 Java 11 EA 构建的类的注释扫描的支持

    TomcatRedisClusterEnabledSessionManager:启用了Tomcat Redis群集的会话管理器

    Tomcat-Redis-Cluster-Enabled-Session-Manager ... 展望未来,我们无需在负载均衡器中启用粘性会话(JSESSIONID)。 支持: Apache Tomcat 7 资料下载: 启用了Tomcat Redis群集的会话管理器可用 前提条件: j

Global site tag (gtag.js) - Google Analytics