`

在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的过程,包括使用keytool工具生成自签名证书以及在`server.xml`文件中进行必要的配置调整。HTTPS不仅可以提升网站的安全性,还可以增加用户对网站的信任度。希望本文能...

    tomcat支持https配置

    标题中的“Tomcat支持HTTPS配置”是指在Apache Tomcat服务器上启用安全套接层(SSL)协议,以提供加密通信和身份验证。这通常涉及到在Web应用中使用HTTPS(HTTP over SSL/TLS)协议,以保护用户的敏感信息,如登录...

    TOMCAT 6 中配置HTTPS

    在Tomcat中启用HTTPS,我们需要创建并配置一个数字证书。 1. **创建自签名证书**:在大多数情况下,开发和测试环境中可以使用自签名证书。Tomcat提供了内置的`keytool`工具来生成密钥对。打开命令行,使用以下命令...

    Tomcat中配置https

    本篇文章将详细讲解如何在Apache Tomcat服务器中配置HTTPS。 首先,我们需要生成一个密钥对,这通常包括一个公钥证书(Certificate)和一个私钥(Private Key)。在这个案例中,我们使用了名为"GenerateCommand....

    tomcat发送https请求配置

    在本文中,我们将介绍如何配置 Tomcat 来发送 HTTPS 请求,包括生成 JKS 文件、导出证书文件、配置 Tomcat 以启用 HTTPS 等操作。 生成 JKS 文件 在开始之前,我们需要使用 keytool 工具来生成 Keystore 和 Trust...

    tomcat启用https

    本文将详细介绍如何在Tomcat环境中启用HTTPS,并使用JDK自带的`keytool`工具制作自签名证书。 #### 二、HTTPS 原理简述 HTTPS 是 HTTP 协议的安全版本,它使用 SSL/TLS 协议来实现数据加密和身份验证功能。SSL/TLS...

    tomcat7+nginx+memcached 配置tomcat 集群以及负载均衡

    安装MSM时,需要将jar包添加到Tomcat的lib目录下,并在server.xml配置文件中进行相应设置,启用MSM并指定Memcached服务器的地址和端口。 Kryo序列化是MSM的一个可选选项,它是一种高效的Java对象序列化库。相比默认...

    在tomcat中实现https安全连接的方法

    为了在Tomcat中启用SSL支持,需要创建一个自签名证书。以下步骤展示了如何在Tomcat中设置SSL证书: 1. **生成证书**:使用`keytool`命令工具来生成证书。命令如下: ```bash %JAVA_HOME%\bin\keytool -genkey -...

    tomcat6配置https

    标题“Tomcat6配置HTTPS”涉及的是在Apache Tomcat 6版本中设置和配置安全的HTTPS连接。HTTPS是一种基于SSL/TLS协议的安全通信协议,用于在网络上提供加密传输和身份认证,确保用户数据的安全性。 首先,为了在...

    为tomcat服务器配置https,tomcat需要设置的server.xml与web.xml配置

    在`server.xml`中,我们需要配置`&lt;Connector&gt;`元素来启用HTTPS。以下是一个示例配置: ```xml SSLEnabled="true" maxThreads="150" minSpareThreads="25" connectionTimeout="20000" enableLookups="false" ...

    Tomcat7安装相关配置

    本篇将详细介绍如何在Windows环境下安装并配置Tomcat7,以及涉及到的一些关键配置文件。 **一、Tomcat7的下载与安装** 首先,你需要从Apache官方网站(http://tomcat.apache.org/)下载Tomcat7的最新稳定版本。...

    idea配置tomcat的方法(详细图文步骤)

    本教程将详细解释如何在IDEA中配置Tomcat服务器,以便你能顺利地运行和调试你的项目。 1. **安装与添加Tomcat** 首先,确保你已经在本地计算机上安装了Tomcat服务器。可以从Apache Tomcat官网下载最新版本并按照...

    Tomcat-https配置

    在Tomcat中配置HTTPS,主要涉及以下几个步骤: 1. **获取SSL证书**:首先需要从权威的证书颁发机构(CA)购买或申请一个SSL证书,或者使用自签名证书。如果是生产环境,推荐使用权威CA签发的证书以获得浏览器的信任...

    myeclipse6.5配置tomcat7

    在Tomcat Server的配置界面中,找到`Tomcat home directory`字段,点击`Browse...`按钮,然后导航到你的Tomcat 7安装路径,例如`D:\Tomcat7`。 3. **配置JDK**: 要使Tomcat 7能够正常运行,我们需要指定正确的...

    apache Tomcat配置SSL(https)步骤

    本文将详细介绍如何在Apache Tomcat中配置SSL,从而实现HTTPS的服务部署。 #### 二、生成Server端安全证书 要在Apache Tomcat中启用HTTPS功能,首先需要一个Server端的安全证书。此证书可以是权威机构签发的正式...

    Tomcat的安装及配置教程步骤

    本教程将详细介绍在Windows、Linux和macOS操作系统上安装与配置Tomcat的步骤。 1. **Windows上的安装** - 下载:首先,访问Apache Tomcat官方网站下载最新版本的Tomcat安装包,通常是.zip格式。 - 解压:下载完成...

    在tomcat中配置https

    本文将深入探讨如何在Apache Tomcat服务器中配置HTTPS,以实现安全的网络通信。 ### 一、SSL/HTTPS简介 SSL(Secure Socket Layer),即安全套接层协议,是为Web浏览器与Web服务器之间的通信提供安全保障的一种...

Global site tag (gtag.js) - Google Analytics