《Tomcat6和Tomcat7配置SSL通信的比较》

作者:chszs,转载需注明。博客主页: http://blog.csdn.net/chszs
在项目开发过程中,尝尝会遇到Tomcat需要SSL通信的需求。尤其是在需要安全Web应用时,需要HTTPS协议的通信。由于Tomcat默认情况下没有提供SSL通信设置,因此必须明白如何在Tomcat下配置SSL。更糟糕的是,Tomcat的不同版本,其SSL配置有所不同。所以,本文将讲述如何在Tomcat的主要版本(即6和7)下,配置SSL通信。

SSL、HTTPS和证书是任何Java程序员都应该了解的基础知识,尤其是对那些开发金融和安全敏感类的互联网应用的开发者。SSL、HTTPS和证书三者的协同工作,保证了客户端和服务器的安全通信。

开发使用HTTP协议访问的Web应用,安全是主要关心的问题。由于HTTP协议是以纯文本格式传输数据的,它在传输敏感信息(如用户名、密码、社保号、信用卡信息等)时,是很不安全的。HTTP协议不能保证网站的可靠性,URL的重定向可以使得假冒网站代替真正的网站,HTTP是不会阻止这一切的,也不会提醒用户。

HTTPS和SSL就是解决上述问题的。HTTPS是HTTP之上的SSL,SSL代表安全套接字层,它提供了网站的加密和验证。所以,那些商务网站、银行都在使用HTTPS协议。当使用HTTPS协议进行数据传输时,在客户端和服务器端之间传输前,数据是加密了的。因此,任何人都可以拦截或捕获HTTPS,但是看不到真实的内容。SSL还利用第三方发行机构(如VeriSign、godaddy,thwate等)发行的证书来验证网站的真实可靠性。

证书是怎样工作的呢?当客户端浏览器使用HTTPS连接到服务器,服务器返回第三方机构发行的证书。如果证书是Java程序,能访问到证书keystore和truststore的存根,浏览器端也有存储的可信证书,可验证服务器提供的证书。如果浏览器或任何Java客户端,没有找到这些证书,它会警告说证书不可识别,推荐你不访问此网站。你也可以手动信任任何网站,请求浏览器相信服务器提供的证书。

在开发的情况下,Tomcat返回自签名的证书或测试证书。对于Java程序员,JDK自带了一个keytool工具,他能用于创建自签名的证书,并存储到keystore和truststore供使用。

你可以从Windows的支持团队请求证书,或者使用工具如IBM IkeyMan或keytool命令产生证书,并放入truststore和keystore中。
一旦证书已经准备好,打开Tomcat/conf目录下的server.xml配置文件,查找Connector标签,它定义HTTPS通信,通常它被注释掉了,所以可以查找“Define a SSL HTTP/1.1 Connector on port 8443”,一旦找到,使用下面的配置进行替换。

在Tomcat6中定义SSL通信:

<Connector protocol="org.apache.coyote.http11.Http11Protocol"
port="8443" minSpareThreads="5" maxSpareThreads="75"
enableLookups="true" disableUploadTimout="true"
acceptCount="100" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="${catalina.home}/conf/server.jks"
keystoreType="JKS" keystorePass="changeit" />

还需修改这个:

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />

在Tomcat7中配置SSL通信:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="${catalina.home}/conf/server.jks"
keystoreType="JKS" keystorePass="changeit" />

怎样配置Java Web程序使用HTTPS

如果想要你的JavaEE Web程序使用HTTPS协议实现SSL通信,你需要在web.xml配置文件中添加:

<security-constraint>
<web-resource-collection>
<web-resource-name>HelloSSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>

Tomcat6和Tomcat7配置SSL通信的比较的更多相关文章

  1. Tomcat7 配置 ssl

    运行一个配置了ssl的项目时tomcat总是启动不成功,报错:“requires the APR/native library which is not available”,后来发现是找不到apr的 ...

  2. Java 下 SSL 通信原理及实例

    有关SSL的原理和介绍在网上已经有不少,对于Java下使用keytool生成证书,配置SSL通信的教程也非常多.但如果我们不能够亲自动手做一个SSL Sever和SSL Client,可能就永远也不能 ...

  3. SSL 通信原理及Tomcat SSL 配置

    SSL 通信原理及Tomcat SSL 双向配置 目录1 参考资料 .................................................................. ...

  4. SSL 通信原理及Tomcat SSL 双向配置

    SSL 通信原理及Tomcat SSL 双向配置 目录1 参考资料 .................................................................. ...

  5. mosquitto配置通过ssl通信

    mosquitto配置通过ssl通信 摘自https://www.cnblogs.com/stin/p/9258211.html 注意项: For openssl >= 1.0.1 the va ...

  6. Filebeat与Logstash配置SSL加密通信

    为了保证应用日志数据的传输安全,我们可以使用SSL相互身份验证来保护Filebeat和Logstash之间的连接. 这可以确保Filebeat仅将加密数据发送到受信任的Logstash服务器,并确保L ...

  7. Tomcat:配置SSL

    SSL简述 SSL就是安全套接字层,是一种允许web浏览器和 web服务器通过安全连接通信的技术.这是一个双向的过程,这意味着 服务器和浏览器在发送数据之前加密所有交流的数据. SSL有一个重要的特点 ...

  8. tomcat,tomcat7配置https

    <一,>,tomcat7配置https 1,生成keystore文件及导出证书

  9. 阿里云centos7.4下tomcat8.5配置ssl证书

    环境 阿里云centos7.4 域名也是阿里申请的 jdk1.8 tomcat8.5 1.申请证书 登录到阿里云的域名管理,可以看到已经申请过得域名,我这里第一个已经配置了ssl,第二个未配置,点击更 ...

随机推荐

  1. 【Ray Tracing in One Weekend 超详解】 光线追踪1-7 Dielectric 半径为负,实心球体镂空技巧

    今天讲这本书最后一种材质 Preface 水,玻璃和钻石等透明材料是电介质.当光线照射它们时,它会分裂成反射光线和折射(透射)光线. 处理方案:在反射或折射之间随机选择并且每次交互仅产生一条散射光线 ...

  2. MySQL Binlog 解析工具 Maxwell 详解

    maxwell 简介 Maxwell是一个能实时读取MySQL二进制日志binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis.RabbitMQ.Redis.Goog ...

  3. Xamarin 2017.11.9更新

     Xamarin 2017.11.9更新 本次更新主要针对Xamarin.iOS,适配了iOS 11.1和Xcode 9.1.Visual Studio 2017升级到15.4.3获得新功能.Visu ...

  4. 用python做一个图片验证码

    看一下做出来的验证码长啥样 验证码分析 1. 有很多点 2. 有很多线条 3. 有字母,有数字 需要用到的模块: 1. random 2. Pillow  (python3中使用pillow) 安装p ...

  5. Codeforces.810D.Glad to see you!(交互 二分)

    题目链接 \(Description\) 有一个大小为\(k\)的集合\(S\),元素两两不同且在\([1,n]\)内.你可以询问不超过\(60\)次,每次询问你给出\(x,y\),交互库会返回\(\ ...

  6. 【LCA】BZOJ1776-[Usaco2010 Hol]cowpol 奶牛政坛

    [题目大意] 一棵n个点的树,树上每个点属于一个党派,要求每个党派的最远距离点.两点间距离为两点间边的个数. [思路] yy一下可知,最远距离点中必有一个是该党派深度最深的一个,那么我们就记下最深的点 ...

  7. 实现常用的配置文件/初始化文件读取的一个C程序

    在编程中,我们经常会遇到一些配置文件或初始化文件.这些文件通常后缀名为.ini或者.conf,可以直接用记事本打开.里面会存储一些程序参数,在程序中直接读取使用.例如,计算机与服务器通信,服务器的ip ...

  8. JVM7、8参数详解及优化

    1. JVM堆内存划分 这两天看到下面这篇文章的图不错. 一图读懂JVM架构解析 1.1 JDK7及以前的版本 其中最上一层是Nursery内存,一个对象被创建以后首先被放到Nursery中的Eden ...

  9. SlickMaster.NET 开源表单设计器快速使用指南

    前言:在企业数据处理过程中,经常需要通过定制表单来输入业务数据.由于涉及的数据比较离散,并不同于ERP系统的紧密关联数据.假如由开发人员每个增加页面,工作量会比较大,后期后期的维护很升级也耗费时间和精 ...

  10. Emmet 语法介绍

    一.生成 HTML 文档初始结构 HTML 文档的初始结构,就是包括 doctype.html.head.body 以及 meta 等内容.你只需要输入一个 “!” 就可以生成一个 HTML5 的标准 ...