zoukankan      html  css  js  c++  java
  • 配置Tomcat使用https协议

    前言:http协议介绍

    OSI 和 TCP/IP通信协议对比
    如图

    HTTP协议处于TCP/IP协议体系的应用层。HPPT协议属于应用层的协议,因此工作在最高层,即应用层。图中未标记出HTTP协议,它与FTP、DNS等协议工作 在同一层。

    应用层(Application Layer)包含所有的高层协议,包括:

    虚拟终端协议(TELNET,TELecommunications NETwork);文件传输协议(FTP,File Transfer Protocol);

    电子邮件传输协议(SMTP,Simple Mail Transfer Protocol);域名服务(DNS,Domain Name Service);

    网上新闻传输协议(NNTP,Net News Transfer Protocol);超文本传送协议(HTTP,HyperText Transfer Protocol)。

    HTTP协议被用于从WWW服务器传输超文本到本地浏览器的传输。

    它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示等。

    在TCP/IP协议的应用层中包含了大量人们普遍需要的协议。

    不同的文件系统有不同的文件命名原则和不同的文本行表示方法等,不同的系统之间传输文件还有各种不兼容问题,这些都将由应用层来处理。此外,应用层还有虚拟终端、电子邮件和新闻组等各种通用和专用的功能。

    HTTP与HTTPS协议区别:实际上是在http协议下加了一层数据安全层(SSL)

    http请求必须由http协议的端口接收,但是http可以redirectPort到其他https协议的端口上;

    https请求必须由https协议的端口接收

    一、证书生成

    1、生成服务器证书

    (1)打开打开命令控制台,进入jdk的bin目录

                       cd D:\Program Files\jdk1.6.0_45\bin

    (2)keytool为Tomcat生成证书(“-validity 36500”证书有效期,36500表示100年,默认值是90天)

               keytool -genkey -v -alias tomcat -keyalg RSA -keystore E:\tomcat.keystore -validity 36500

     配置tomcat  server.xml

    <Connector port="6443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true"
    maxThreads="3000" scheme="https" secure="true"
    clientAuth="false" sslProtocol="TLS"
    enableLookups="false"
    compression="on"
    compressionMinSize="2048"
    compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
    connectionTimeout="20000"
    disableUploadTimeout="true"
    maxHttpHeaderSize="8192" useBodyEncodingForURI="true"
    keystoreFile="C:\Program Files\Apache Software Foundation\Tomcat 8.5_Tomcat8_2\conf\tomcat.keystore"
    keystorePass="111111"
    />

     测试:https://localhost:6443

    2、生成客户端证书

             keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore E:\mykey.p12

     

    3、让服务器信任客户端证书

    (1)由于不能直接将PKCS12格式的证书库导入,必须先把客户端证书导出为一个单独的CER文件,使用如下命令:

             keytool -export -alias mykey -keystore E:\mykey.p12 -storetype PKCS12 -storepass 123456 -rfc -file E:\mykey.cer

    (2)将该文件导入到服务器的证书库,添加为一个信任证书使用命令如下:

               keytool -import -v -file E:\mykey.cer –keystore E:\tomcat.keystore

     

    (3)通过 list 命令查看服务器的证书库,可以看到两个证书,一个是服务器证书,一个是受信任的客户端证书:

    keytool -list -keystore E:\tomcat.keystore

     

    4、让客户端信任服务器证书

    把服务器证书导出为一个单独的CER文件提供给客户端,使用如下命令:

    keytool -keystore E:\tomcat.keystore -export -alias tomcat -file E:\tomcat.cer

     

    5、经过上面操作,生成如下证书:

     

    其中 tomcat.cer 提供给客户端,tomcat.keystore供服务器使用

    二、证书使用

    1、服务器tomcat的配置

    (1)打开Tomcat根目录下的/conf/server.xml,找到Connector port="8443"配置段,修改为如下:

    <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" truststoreFile="E:/tomcat.keystore" truststorePass="123456" />

     

    注释掉

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

     

    (2)测试服务端,IE浏览器输入访问地址

     

    但由于是自签名的证书,所以浏览器会警告我们不安全,选择继续:

     

    可以看到能成功访问了(地址栏“证书错误”,此时数据已经是使用HTTPS传输了)

     

     

    2、导入服务器公钥证书(tomcat.cer)

    由于是自签名的证书,为避免每次都提示不安全。这里双击tomcat.cer安装服务器证书。

    注意:将证书填入到“受信任的根证书颁发机构”

     

    再次重新访问服务器,会发现没有不安全的提示了,同时浏览器地址栏上也有个“锁”图标。

     

    至此,就完成了配置。

    注:由于jdk自带的keytool生成的签名属于弱签名算法(SHA-1),但是,SHA-1已经过时因而不再推荐使用。新证书使用了更强的签名算法(比如SHA-256)。SHA-1的证书将从2017开始不再被主流浏览器厂商视为安全的。

  • 相关阅读:
    畅销书排行榜
    阿里云大数据产品体系
    天然气收费管理系统的研究与实现随笔
    Web端实现RTC视频特效的解决方案
    从0搭建在线聊天室,只需4步!
    技术干货 | JavaScript 之事件循环(Event Loop)
    C++20 四大特性之一:Module 特性详解
    Android Flutter 多实例实践
    网易云信线上万人连麦技术大揭秘
    Python + Pytest 自动化框架的用例依赖实操
  • 原文地址:https://www.cnblogs.com/tongcc/p/15543436.html
Copyright © 2011-2022 走看看