转载请注明出处:

http://blog.csdn.net/gane_cheng/article/details/53001846

http://www.ganecheng.tech/blog/53001846.html (浏览效果更好)

本文将讲解HTTPS协议在Tomcat中启用是如何配置的。

1. 概念简介

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。

HTTP 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。

HTTPS和HTTP的区别

一、HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。

二、HTTPS 协议需要到 CA 申请证书,一般免费证书很少,需要交费。

三、HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443

四、HTTP 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。

2. 本地模拟测试开启过程

HTTPS 如果生产环境应用在域名上是需要直接或间接的从 CA 申请证书,来取得浏览器的信任的。我们先在本地模拟测试一下这个过程,自己生成证书,后面介绍域名启用 HTTPS。

2.1. ① keytool工具生成证书

打开 JDK 自带的 keytool 目录。

按住 Shift 键,同时右键点击空白处。

此时,进入cmd窗口。输入下面命令。

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

接着会让你填写一些基本信息。

下面简要介绍一下。

密钥库口令:123456(这个密码非常重要)
名字与姓氏:192.168.0.110(以后访问的域名或IP地址,非常重要,证书和域名或IP绑定)
组织单位名称:anything(随便填)
组织名称:anything(随便填)
城市:anything(随便填)
省市自治区:anything(随便填)
国家地区代码:anything(随便填)

2.2. ② 应用证书到Tomcat

打开 Tomcat 配置文件 conf\server.xml

取消注释,并添加两个属性 keystoreFilekeystorePass

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="E:/tomcat.keystore" keystorePass="123456" />

其中,keystoreFile是上一步生成的证书文件地址,keystorePass是上一步的密钥库口令。

2.3. ③ 测试HTTPS

测试链接类似于这种 https://192.168.0.110:8443/your_project_name

观察Tomcat输出日志会发现异常。

严重: Failed to initialize end point associated with ProtocolHandler ["http-apr-8443"]
java.lang.Exception: Connector attribute SSLCertificateFile must be defined when using SSL with APR
at org.apache.tomcat.util.net.AprEndpoint.bind(AprEndpoint.java:484)
at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:566)
at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:417)
at org.apache.catalina.connector.Connector.initInternal(Connector.java:956)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)

解决方法是注释conf\server.xml文件中下面一行。

<!--<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />-->

重启Tomcat ,这时可以看到浏览器已经可以打开 HTTPS 链接了。

3. 真实域名开启过程

使用自己生成的证书会遇到几个问题。

一、浏览器会对 HTTPS 使用危险标识。

我们开启 HTTPS 本意是为了更安全,增加用户信心。但是浏览器使用危险标识会适得其反,吓跑用户。

二、浏览器默认不会加载非HTTPS域名下的javascript

我了个擦,这和早年的禁用javascript差不多了。已经影响网页的正常运行了。

三、移动设备显示页面空白

手机浏览器打开页面,也会像桌面浏览器一样弹出是否加载不受信任的页面,在微信中打开则会一片空白。


以上种种,导致自己生成的证书无法在生产环境使用。

解决以上问题,需要购买CA的证书。不过我在阿里云上看到有免费的证书申请。https://www.aliyun.com/product/cas

3.1. ① 申请证书

购买过程就不详细说了。照着阿里云的提示一步一步做就好了。

证书生成后,会得到PFX类型的证书。

3.2. ② Tomcat 配置PFX证书

打开 Tomcat 配置文件 conf\server.xml

取消注释,并添加三个属性 keystoreFilekeystoreTypekeystorePass

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="/你的磁盘目录/订单号.pfx"
keystoreType="PKCS12"
keystorePass="订单号" />

其中,keystoreFile是PFX证书文件地址,keystorePass是阿里云的订单号,keystoreType直接写PKCS12 。

3.3. ③ 测试真实域名

重新启动Tomcat,访问你自己的域名,则可以正常使用了。浏览器会有绿色的域名标识,移动设备也正常了。至于http域名下的javascript,还是需要更换为https才能正常加载。

对于要不要使用 https,需要根据实际情况具体考虑,https会比http慢一些,但是会更安全。

4. 参考文献

http://lixor.iteye.com/blog/1532655

【转】Tomcat启用HTTPS协议配置过程的更多相关文章

  1. Tomcat启用HTTPS协议配置过程

    Article1较为简洁,Article2较为详细,测试可行. Article1 概念简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问 ...

  2. 4、Tomcat启用HTTPS协议配置

    一.本地模拟 1.安装jdk,自行百度安装教程 2.打开mac终端,输入命令 keytool -genkeypair -alias "证书名字" -keyalg "RSA ...

  3. 配置Tomcat使用https协议(配置SSL协议)

    配置Tomcat使用https协议(配置SSL协议) 2014-01-20 16:38 58915人阅读 评论(3) 收藏 举报 转载地址:http://ln-ydc.iteye.com/blog/1 ...

  4. 【转】配置Tomcat使用https协议(配置SSL协议)

    转载地址:http://ln-ydc.iteye.com/blog/1330674 内容概览: 如果希望 Tomcat 支持 Https,主要的工作是配置 SSL 协议 1.生成安全证书 2.配置to ...

  5. tomcat 启用https协议

    利用tomcat服务器配置https双向认证. 1.为服务器生成证书 打开cmd,进入jdk的bin目录下,输入下面的命令: keytool -genkey -v -alias tomcat -key ...

  6. pringBoot2.0启用https协议

    SpringBoot2.0之后,启用https协议的方式与1.*时有点儿不同,贴一下代码. 我的代码能够根据配置参数中的condition.http2https,确定是否启用https协议,如果启用h ...

  7. Spring Boot 揭秘与实战(五) 服务器篇 - Tomcat 启用 HTTPS

    文章目录 1. 生成证书 2. 配置 HTTPS 支持 3. 启动与测试 4. 源代码 Spring Boot 内嵌的 Tomcat 服务器可以启用 HTTPS 支持. 生成证书 使用第三方 CA 证 ...

  8. https协议通信过程

    https协议通信过程 我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取.所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议. HTTPS简介 HTTPS其实是有两部分组 ...

  9. Tomcat服务器配置https协议(Tomcat HTTPS/SSL 配置)

    通常商用服务器使用https协议需要申请SSL证书,证书都是收费的,价格有贵的有便宜的.它们的区别是发行证书的机构不同,贵的证书机构更权威,证书被浏览器否决的几率更小. 非商业版本可以通过keytoo ...

随机推荐

  1. EC笔记:第三部分:16成对使用new和delete

    我们都知道,申请的资源,使用完毕后要释放.但是这个释放动作,一定要注意. 举个例子,很多人动态分配的资源,在使用之后,往往直接调用了delete,而不管申请资源的时候用的是new还是new[]. 如下 ...

  2. MYSQL 开发技巧

    主要涉及:JOIN .JOIN 更新.GROUP BY HAVING 数据查重/去重 1 INNER JOIN.LEFT JOIN.RIGHT JOIN.FULL JOIN(MySQL 不支持).CR ...

  3. El表达式的关系运算符

    El表达式的关系运算符: ==  对应  eq !=   对应  ne >    对应  gt <    对应  It

  4. 来玩Play框架04 表单

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 表单(form)是最常见的从客户往服务器传递数据的方式.Play框架提供了一些工具 ...

  5. Java微信公众平台接口封装源码分享

    前言:      这篇博客是在三月初动手项目的时候准备写的,但是为了完成项目只好拖延时间写这篇博客,顺便也可以在项目中应用我自己总结的的一些经验.今天看来,这些方法的应用还是可以的,至少实现了我之前的 ...

  6. spider RPC管理接口

    为了在独立管理模式下尽可能的容易运行时排查问题,spider中间件提供了一系列restful api用于动态管理当前节点的路由,下游节点等.目前支持的RESTFUL API如下所示: 功能 服务号 R ...

  7. 从网上找的 visual studio 的各个版本下载地址,vs2010/vs2012/vs2013带注册码

    从网上找的 visual studio 的各个版本下载地址,很全,从 6.0 一直 到 vs2013,要的拿去吧... Microsoft Visual Studio 6.0 下载:英文版360云盘下 ...

  8. css3制作炫酷导航栏效果

    今天主要利用hover选择器.鼠标滑过查看效果. 一.普通导航栏 Home Content Service Team Contact 对于这种普通的导航栏,只是鼠标滑过的时候颜色会变,所以思路变得很简 ...

  9. 【代码笔记】iOS-自定义导航条颜色

    一,效果图. 二,工程图. 三,代码. AppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchin ...

  10. (十三)Maven插件解析运行机制

    这里给大家详细说一下Maven的运行机制,让大家不仅知其然,更知其所以然. 1.插件保存在哪里? 与我们所依赖的构件一样,插件也是基于坐标保存在我们的Maven仓库当中的.在用到插件的时候会先从本地仓 ...