tomcat支持https的历程
tomcat真是业界良心啊,文档写的详细无比。
一、https是什么?
简单的说,就是http+SSL/TLS
协议还是http,但是在传输层过程中使用了加密(涉及握手、秘钥分发、加密、解密等过程)。
二、关于SSL支持
英文好的可以直接参考tomcat默认的在线文档。
首先请运行本地的tomcat。
http://localhost:8080/docs/config/http.html#SSL_Support
三、tomcat支持两种SSL Connector类型
1. BIO/NIO connectors
支持由JDK中的工具提供X509证书认证(JAVA语言)
2. APR/Native connectors
支持由OPENSSL提供的证书认证(C语言)
3. 两者的一个比较
四、关于SSL的配置
只需要选择一种配置即可。
1. jdk证书的配置
<Connector port=""
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="" SSLEnabled="true" scheme="https"
secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="keystore文件.keystore"
keystorePass=""/>
PS:jdk证书的生成需要单独写一篇博客记录。
2. openssl的配置
<Connector port=""
protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="" SSLEnabled="true" scheme="https"
secure="true"
clientAuth="false"
SSLCertificateFile="服务器证书.pem"
SSLCertificateKeyFile="服务器密钥证书.pem"
SSLCertificateChainFile="证书链配置.pem"
sslProtocol="TLS" />
PS:openssl证书的生成需要单独写一篇博客记录。
五、tomcat对jdk的支持
tomcat毕竟是for jee的,对jdk的支持相对简单,网上一搜一大把。
有时间可以单独写一篇博客记录。
六、tomcat对openssl的支持
1. 安装新版本的openssl
去openssl官网下载最新版本的源码包,编译、安装。
中间可能遇到一个小坑,参考文章:http://www.cnblogs.com/yoyotl/p/7424967.html
2. 安装apr库
去apr官网下载最新版本的源码包,编译、安装。
3. 安装native库
这个源码在tomcat的安装目录里。
cd tomcat的安装路径/bin/
tar -zxvf tomcat-native.tar.gz
cd tomcat-native-1.2.-src
cd native
./configue --with-ssl=/usr/local/ssl
(/usr/local/ssl是默认的openssl安装路径)
make && make install
七、tomcat启动报错?
1. 报错
Caused by: org.apache.catalina.LifecycleException: The configured protocol [org.apache.coyote.http11.Http11AprProtocol] requires the APR/native library which is not available
2. 临时解决
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
这是当前shell测试的方法
3. 永久解决
3.1 vi ~/.bash_profile
3.2 在文件后面添加以下两行:
LD_LIBRARY_PATH=/usr/local/apr/lib
export LD_LIBRARY_PATH
3.3 配置生效
source ~/.bash_profile
八、tomcat启动正常
1. 打开浏览器输入https://localhost:8443
如果能够成功地看到tomcat默认主页就意味着这个tomcat支持https了!
2. 想确认一下?
2.1 启动wireshark。
2.2 分别访问http://localhost:8080和https://localhost:8443。
2.3 抓包分析。
http 访问的情况下,能轻松的看到大量的诸如<html>...</html>的明文。 https 访问的情况下,能看到的是肉眼无法识别的密文了(一串看起来毫无规律的字符串)。
最新文章
- DIY操作系统(一)
- Java——交通灯
- nyoj 2 括号配对问题
- sed删除空行和注释行
- Ubuntu12.04 下配置tomcat
- XML CDATA(Mybatis mapper and XML)
- js常用几种类方法实现
- [BZOJ4195] [NOI2015] 程序自动分析 (并查集)
- Spring JPA 使用@CreatedDate、@CreatedBy、@LastModifiedDate、@LastModifiedBy 自动生成时间和修改者
- 6.824 LAB1 环境搭建
- 搭建memcached使用:/usr/bin/phpize 安装memcached扩展的时候报错
- 数据库查询的数据导出到xls表,集合数据导出到xls表
- Magazine Ad CodeForces - 803D (二分+贪心)
- poj 1789 每个字符串不同的字母数代表两个结点间的权值 (MST)
- SQLServer为已有数据的表添加一个自增列
- C#正则表达式匹配HTML中的图片路径
- Spring MVC 3.0 深入及对注解的详细讲解[转载]
- 自定义事件 js
- 【Linux】SVN的安装和配置
- CF1030A 【In Search of an Easy Problem】
热门文章
- IOS中的动画——Core Animation
- 比较windows phone 的回退事件与android的回退事件
- java线上服务问题排查
- [Algorithm] Search for matching words
- [Node.js] Stream all things!
- [android错误] requires API level *
- C#.NET常见问题(FAQ)-如何在系统变量中加入新的环境变量
- Android Bundle存储数据类型
- Flume-0.9.4数据插入HBase-0.96
- 算法笔记_183:历届试题 九宫重排(Java)