• Tomcat配置HTTPS协议详细教程(上)


    一:概念简介

         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 协议安全。

    二:为服务器生成证书

            HTTPS 如果生产环境应用在域名上是需要直接或间接的从 CA 申请证书,来取得浏览器的信任的。我们先在本地模拟测试一下这个过程,自己使用jdk的keytool工具生成证书。

    2.1 找到自己的%JAVA_HOME%/bin目录

              计算机---->属性---->高级系统配置---->系统属性

     

    2.2 生成服务器证书 

       (1)打开DOS窗口,通过命令进入到jdk的bin目录下。(C:Program FilesJavajdk1.8.0_60)

        (2)创建存放生成证书的文件夹(G: omcat_cer)

        (3)执行命令:  keytool -genkey -v -alias tomcat -keyalg RSA -keystore G: omcat_cer omcat.keystore -validity 36500

                参数说明: G: omcat_cer  -->自己创建的存放证书的文件夹  ; tomcat.keystore -->生成的证书名称  ; validity 36500  -->证书有效期,36500表示100年,默认值是90天 

       (4)密钥库口令: password(这个密码非常重要,要求大于6个字符)

                名字与姓氏:192.168.0.105(以后访问的域名或IP地址,非常重要,证书和域名或IP绑定)
                组织单位名称,组织名称,城市,省市自治区,国家地区代码(随便填)

       (5)打印  [正在存储G: omcat_cer omcat.keystore]   ,证书生成完成

      

    三:配置tomcat服务器

     3.1 打开tomcat配置文件,如:D:/apache-tomcat/conf/server.xml,修改如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <Server port="8003" shutdown="SHUTDOWN">
      <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
      
      <!-- 修改第一步:注释 className="org.apache.catalina.core.AprLifecycleListener" -->
      <!--<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />   -->
      
      <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
      <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
      <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
    
      <GlobalNamingResources>
        <Resource name="UserDatabase" auth="Container"
                  type="org.apache.catalina.UserDatabase"
                  description="User database that can be updated and saved"
                  factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
                  pathname="conf/tomcat-users.xml" />
      </GlobalNamingResources>
      
      <!-- 修改第二步:redirectPort端口改为443 (port端口,根据自己需要设置即可) -->
      <Service name="Catalina">
        <Connector port="11000" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="443" />
                   
      <!-- 修改第三步:增加enableLookups="false"  (port端口,根据自己需要设置即可) -->
        <Connector port="8002" enableLookups="false" protocol="AJP/1.3" redirectPort="443" />
        
      <!-- 修改第四步:去掉注释且修改keystoreFile(证书文件的位置)、keystorePass(<tomcat>的主密码即刚刚设置的证书密码) 两个参数  -->
      <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
                   maxThreads="150" scheme="https" secure="true"
                   clientAuth="false" sslProtocol="TLS" keystoreFile="G:	omcat_cer/tomcat.keystore" keystorePass="password"/>
    
       <!-- 修改结束  -->
        
        <Engine name="Catalina" defaultHost="localhost">
          <Realm className="org.apache.catalina.realm.LockOutRealm">
            <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                   resourceName="UserDatabase"/>
          </Realm>
    
          <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="true">
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                   prefix="localhost_access_log" suffix=".txt"
                   pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    
          </Host>
           <Host name="127.0.0.1"  appBase="phpwebapps"
                unpackWARs="true" autoDeploy="true">
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                   prefix="localhost_access_log" suffix=".txt"
                   pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    
          </Host>
        </Engine>
      </Service>
    </Server>

           

    3.2 打开tomcat配置文件,如:D:/apache-tomcat/conf/web.xml,在该文件</welcome-file-list>后面添加一段:

       <!--配置证书开始-->
      <login-config> 
         <!-- Authorization setting for SSL --> 
        <auth-method>CLIENT-CERT</auth-method> 
        <realm-name>Client Cert Users-only Area</realm-name> 
      </login-config> 
      <security-constraint> 
        <!-- Authorization setting for SSL --> 
        <web-resource-collection > 
           <web-resource-name >SSL</web-resource-name> 
           <url-pattern>/*</url-pattern> 
        </web-resource-collection> 
        <user-data-constraint> 
           <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
        </user-data-constraint> 
      </security-constraint>
      <!--配置证书结束-->

     3.3 启动tomcat服务器,访问系统

          使用以前保存的地址去访问,我们发现,默认的已经变成https协议了,但是没用权限访问,接下来,我们继续,为客户端生成证书

    三:为客户端生成证书

            具体步骤参考2.2,这里就不过多描述了(    keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore G: omcat_cer omcat.p12   )  

    3.1 生成客户端p12证书

    3.2 把客户端p12证书转为.cer格式证书

          具体步骤参考2.2,这里就不过多描述了(   keytool -export -alias mykey -keystore  G: omcat_cer omcat.p12  -storetype PKCS12 -storepass password -rfc -file G: omcat_cer omcat.cer  )   

          执行成功之后,我们在文件夹中可以看到相关证书

    四:让服务器信任客户端证书(详见教程下)

                                 

       

        

  • 相关阅读:
    HDU 5135(再思考)
    HDU 5105
    HDU 5135
    Codeforces 985E
    Codeforces 985D
    Codeforces 975D
    Codeforces 975C
    Codeforces 976D
    HDU 1024 Max Sum Plus Plus (DP,水题)
    HDU 1003 Max Sum(DP,水题)
  • 原文地址:https://www.cnblogs.com/Z-Queen/p/11419734.html
Copyright © 2020-2023  润新知