转载请注明出处:

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. 【Java每日一题】20161223

    package Dec2016; public class Ques1223 { public static void main(String[] args){ Integer obj = Integ ...

  2. ubuntu安装navicat及常见问题解决

    1.安装navicat Step1: 下载Navicat ,网址:http://www.navicat.com/en/download/download.html Step2:进入下载目录,解压压缩包 ...

  3. Linux归档压缩、分区管理与LVM管理

    归档和压缩命令: 命令格式: gzip [-9] 文件名 bzip2 [-9] 文件名 gzip –d .gz格式的压缩文件 bzip2 –d .bz2格式的压缩文件 选项: -9:高压缩比,多用于压 ...

  4. 案例借鉴 | 某通讯巨头的IT建设方案

    成都联通作为合并重组后的中国联通在成都的分支机构,拥有基础扎实的通信网络和当前最先进技术的WCDMA网络.随着3G和4G业务的发展领先,成都联通凭借其出色的网络能力和服务,在用户中赢得了口碑. 在IT ...

  5. iOS 对模型对象进行归档

    归档是指一种形式的序列化,专门编写用于保存数据的任何对象都应该支持归档.使用对模型对象进行归档的技术可以轻松将复杂的对象写入文件,然后再从中读取它们. 只要在类中实现的每个属性都是标量或者都是遵循NS ...

  6. 【转】iOS UIApplication详解

    1.状态栏UIStateBar的设置是在UIApplication里面设置的,它包含4中风格 2. - (void)beginIgnoringInteractionEvents; (void)endI ...

  7. Titanium.UI.createAlertDialog

    学习TI 记录一下 1.确认对话框 Js代码 var a = Titanium.UI.createAlertDialog({ title:'添加人员信息', message:"人员添加成功& ...

  8. 浅谈Java的匿名类

    在实际的项目中看到一个很奇怪的现象,Java可以直接new一个接口,然后在new里面粗暴的加入实现代码.就像下面这样.那么问题来了,new出来的对象没有实际的类作为载体,这不是很奇怪吗? 思考以下代码 ...

  9. SE Springer小组《Spring音乐播放器》软件需求说明3

    3 需求规定 3.1对功能的规定 基本功能与相关的输入输出如下表所示.歌曲播放.停止.暂停等功能调用MCI库,数据在MCI库下如何运作与用户的直观感受无关,就不具体列出. 输入 处理 输出 用户登录信 ...

  10. MySQL优化一例

    DELIMITER $$ USE `xxx`$$ DROP FUNCTION IF EXISTS `F_getBuluDates`$$ CREATE DEFINER=`root`@`localhost ...