配置tomcat同时支持http和https协议

今天项目中需要配置https协议,同时支持http和https两种协议,使用的tomcat服务器,并使用nginx做了转发。

网上关于配置tomcat的https协议文章有很多,在此整理一下。

一、配置tomcat支持https协议

需要两步:生成安全证书和配置tomcat。

1.首先,生成安全证书

Java环境:因为SUN公司提供了制作证书的工具keytool。

在JDK 1.4以后的版本中都包含了这一工具,它的位置为<JAVA_HOME>\bin\keytool.exe。

使用cmd命令行,切换目录至tomcat安装目录下的bin文件夹,使用命令进行创建。

创建证书的命令:

keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "f:\tomcat.keystore"

参数的意思如下:

这里密码我输的是tomcat,名字与姓氏为域名,其它的根据具体情况输入

以上命令将生产一对非对称密钥和自我签名的证书f:\tomcat.keystore.

将证书保存到你要存放的地方,我的保存在D:\Tools\Web\ssl\tomcat.keystore

注意:“名字与姓氏”应该是域名,输成了姓名,和真正运行的时候域名不符,会出问题

有些公司会希望使用自己的安全证书,这些证书一般都是crt、pem证书,但是tomcat使用的是keystore后缀名证书,这就需要使用工具进行转换,转换工具可网上自行搜索,很多资料。

2.修改tomcat配置文件

定位到tomcat的安装目录,找到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="org.apache.coyote.http11.Http11Protocol"
                maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
                clientAuth="false" sslProtocol="TLS" 
		keystoreFile="D:\Tools\Web\ssl\tomcat.keystore"   
            	keystorePass="tomcat"/>

这里,密码和证书的位置根据个人的具体环境而设置,属性参数如下所述:

属性描述
clientAuth如果设为true,表示Tomcat要求所有的SSL客户出示安全证书,对SSL客户进行身份验证
keystoreFile指定keystore文件的存放位置,可以指定绝对路径,也可以指定相对于<CATALINA_HOME>(Tomcat安装目录)环境变量 的相对路径。如果此项没有设定,默认情况下,Tomcat将从当前操作系统用户的用户目录下读取名为“.keystore”的文件。
keystorePass指定keystore的密码,如果此项没有设定,在默认情况下,Tomcat将使用“changeit”作为默认密码。
sslProtocol指定套接字(Socket)使用的加密/解密协议,默认值为TLS,用户不应该修改这个默认值。
ciphers指定套接字可用的用于加密的密码清单,多个密码间以逗号(,)分隔。如果此项没有设定,在默认情况下,套接字可以使用任意一个可用的密码。

到这里,https协议就配置好了,你可以使用https://localhost:8443/ 来访问你的本地项目,验证是否配置成功。

若可以正常访问,你可以再次使用http://localhost:8080/ 来访问你的本地项目,验证原先的http是否可以正常访问。


二、配置nginx


如果你的项目没有使用nginx,请无视以下内容。

我们项目是用java开发的,所以以下内容我以java举例。

在未配置tomcat支持https协议之前,运维只是配置了nginx的http和https请求都转发到tomcat的http协议8080端口,这就导致http请求正常,但是https请求的也是tomcat的http协议8080端口。具体到项目中时,最直观的体现就是浏览器地址明明是https请求,但是jsp页面所有静态资源都没有加载到,比如css、JS。这是因为你在jsp页面使用request.getScheme()获取的访问协议是http。使用https访问项目时,禁止加载http资源。

现在tomcat经过第一步的配置已经同时支持http和https协议,使用nginx转发时,就需要:

1.http通过nginx访问到tomcat时还是http请求8080端口;

2.https通过nginx访问到tomcat时还是https请求8443端口;

配置ngnix,你需要配置两套upstream节点,一套给http使用,另一套给https使用,如下:

upstream http_stream{ 
      server 1.1.1.1:8080; 
      server 1.1.1.2:8080; 
}

upstream https_stream{ 
      server 1.1.1.1:8443; 
      server 1.1.1.2:8443; 
}

接着配置两套server,如下:

server {
        listen       8080;
        server_name  localhost;
 
        location / {
            proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
            proxy_pass http://域名/项目;
        }
}

server {
        listen       8443;
        server_name  localhost;
 
        location / {
            proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
            proxy_pass https://域名/项目;
        }
}
大体就是上面这个意思,两个server分别监听两个端口,并将基于当前端口的请求转到当前配置的访问协议。

到此,nginx基本配置好了,在浏览器中分别使用http和https访问域名项目,来查看是否能够访问。


为了少走弯路,还是决定自己在此记录一下,转了一下别人的东西,再加上自己项目中的些许经验,希望能帮到同行吧。

转载地址 http://ln-ydc.iteye.com/blog/1330674

  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Tomcat Web服务器安全配置基线 中国移动通信有限公司 管理信息系统部 2012年 04月 "版本 "版本控制信息 "更新日期 "更新人 "审批人 " "V1.0 "创建 "2009年1月 " " " "V2.0 "更新 "2012年4月 " " " " " " " " " " " " " " " 备注: 1. 若此文档需要日后更新,请创建人填写版本控制表格,否则删除版本控制表格。 目 录 第1章 概述 4 1.1 目的 4 1.2 适用范围 4 1.3 适用版本 4 1.4 实施 4 1.5 例外条款 4 第2章 帐号管理、认证授权 5 2.1 帐号 5 2.1.1 共享帐号管理* 5 2.1.2 无关帐号管理* 5 2.2 口令 6 2.2.1 密码复杂度 6 2.2.2 密码生存期 7 2.3 授权 7 2.3.1 用户权利指派* 7 第3章 日志配置操作 9 3.1 日志配置 9 3.1.1 审核登录 9 第4章 IP协议安全配置 10 4.1 IP协议 10 4.1.1 支持加密协议* 10 第5章 设备其他配置操作 11 5.1 安全管理 11 5.1.1 定时登出 11 5.1.2 错误页面处理 11 5.1.3 目录列表访问限制 12 第6章 评审与修订 14 1. 概述 目的 本文档规定了中国移动通信有限公司管理信息系统部门所维护管理的Tomcat WEB服务器应当遵循的安全性设置标准,本文档旨在指导系统管理人员进行Tomcat WEB服务器的安全配置。 适用范围 本配置标准的使用者包括:服务器系统管理员、应用管理员、网络安全管理员。 本配置标准适用的范围包括:支持中国移动集团公司管理信息系统部运行的Tomcat Web 服务器系统。 适用版本 4.x、5.x、6.x版本的Tomcat Web服务器。 实施 本标准的解释权和修改权属于中国移动集团管理信息系统部,在本标准的执行过程中 若有任何疑问或建议,应及时反馈。 本标准发布之日起生效。 例外条款 欲申请本标准的例外条款,申请人必须准备书面申请文件,说明业务需求和原因,送 交中国移动通信有限公司管理信息系统部进行审批备案。 2. 帐号管理、认证授权 帐号 1. 共享帐号管理* "安全基线项"Tomcat共享帐号管理安全基线要求项 " "目名称 " " "安全基线编"SBL-Tomcat-02-01-01 " "号 " " "安全基线项"应按照用户分配帐号。避免不同用户间共享帐号。避免用户帐 " "说明 "号和设备间通信使用的帐号共享。 " "检测操作步"1、参考配置操作 " "骤 "修改tomcat/conf/tomcat-users.xml配置文件,修改或添加帐 " " "号。 " " "<user username="tomcat" password=" Tomcat!234" " " "roles="admin"> " " "2、补充操作说明 " " "1、根据不同用户,取不同的名称。 " " "2、Tomcat 4.1.37、5.5.27和6.0.18这三个版本及以后发行的 " " "版本默认都不存在admin.xml配置文件。 " "基线符合性"1、判定条件 " "判定依据 "各帐号都可以登录Tomcat Web服务器为正常 " " "2、检测操作 " " "访问http://ip:8080/manager/html管理页面,进行Tomcat服务" " "器管理 " "备注 "手工检查 " 2. 无关帐号管理* "安全基线项"Tomcat无关帐号管理安全基线要求项 " "目名称 " " "安全基线编"SBL-Tomcat-02-01-02 " "号 " " "安全基线项"应删除或锁定与设备运行、维护等工作无关的帐号。 " "说明 " " "检测操作步"1、参考配置操作 " "骤 "修改tomcat/conf/tomcat-users.xml配置文件,删除与工作无 " " "关的帐号。 " " "例如tomcat1与运行、维护等工作无关,删除帐号: " " "<user username="tomcat1" password="tomcat" " " "roles="admin"> " "基线符合性"1、判定条件 " "判定依据 "被删除的与工作无关的帐号tomcat1不能正常登陆。 " " "2、检测操作 " " "访问http://ip:8080/manager/html管理页面,使用删除帐号进" " "行登陆尝试。 " "备注 "手工检查 " 口令 1. 密码复杂度 "安全基线项"Tomcat密码复杂度安全基线要求项 " "目名称 " " "安全基线编"SBL-Tomcat-02-02-01 " "号 " " "安全基线项"对于采用静态口

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值