您的位置:首页 > 理论基础 > 计算机网络

tomcat支持https的历程

2017-08-30 13:29 351 查看
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="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https"
secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="keystore文件.keystore"
keystorePass="123456"/>


PS:jdk证书的生成需要单独写一篇博客记录。

2. openssl的配置

<Connector port="8443"
protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="150" 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.12-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 访问的情况下,能看到的是肉眼无法识别的密文了(一串看起来毫无规律的字符串)。


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: