zoukankan      html  css  js  c++  java
  • 利用tomcatserver配置https双向认证

    版权声明:本文为博主原创文章。未经博主同意不得转载。 https://blog.csdn.net/luo201227/article/details/36897387

    首先请保证已经安装好jdk,而且环境变量以及配置好了


    第一步、为server生成证书:

            使用toolkey为tomcat生成证书,假定目标机器的域名为localhost,使用例如以下命令生成:keytool –genkey –v –aliaslocalhost_server RSA –keystore localhost_server.store  –validity 36500


    第二步、为client生成证书:

           为浏览器生成证书,以便让server来验证它。为了能保证证书顺利导入至IE和Firefox。证书格式应该是PKCS12。因此,使用例如以下命令生成:keytool –genkey –v –aliaslocalhost_client –keyalg RSA –storetype PKCS12 –keystore localhost_client.p12

    这样就产生了localhost_client.p12文件,我们仅仅需双击localhost_client.p12文件。就可以将证书导入到浏览器(client)。


    第三步、让server信任client证书:

           因为是双向的SSL认证。server必须信任client证书。因此。必需要把client证书加入为server的信任证书。因为不能直接将PKCS12格式的证书导入,必须先把client证书导出为一个单独的CER文件。使用例如以下命令:keytool –export –aliaslocalhost_client–keystore localhost_client.p12 –storetype –storepass 123456 –rfc–file localhost_trust.cer。下一步,是将该文件导入到server的证书库。加入一个信任证书,使用例如以下命令:keytool –import –v –filelocalhost_trust.cer –keystore localhost_server.store

    通过list命令查看server的证书库,能够看到有两个证书。一个是server的证书,一个是受信任的client证书。


    第四步、让client信任server证书:

           因为是双向SSL认证,client也要验证server证书。因此,必须把server证书加入到浏览器的“受信任的根证书颁发机构”。

    因为不能直接将keystore格式的证书库导入,必须先把server证书导出为一个单独的CER文件。使用例如以下命令:keytool –keystorelocalhost_server.store –export –alias localhost_server –file localhost_trust.cer。这样就产生了locahost_server.cer文件。我们仅仅需双击localhost_server.cer文件,依照提示安装证书,将证书填入到“受信任的根证书颁发机构”。


    第五步、配置tomcatserver

           打开tomcat根文件夹下的/conf/server.xml,找到Connector port=“8443”配置段。改动为例如以下:

    <Connectorport="8443"protocol="org.apache.coyote.http11.Http11NioProtocol"
    
    SSLEnabled="true"maxThreads="150" scheme="https"
    
    secure="true"clientAuth="true" sslProtocol="TLS"
    
    keystoreFile="conf/localhost_server.keystore " keystorePass="123456"
    
    truststoreFile="conf/localhost_server.keystore " truststorePass="123456" />

    或者

    <Connectorport="8443" protocol="HTTP/1.1" SSLEnabled="true"
    
                   maxThreads="150"scheme="https" secure="true"
    
                   clientAuth="false"sslProtocol="TLS"
    
                   keystoreFile="conf/localhost_server.keystore"keystorePass="123456"
    
                   truststoreFile="conf/localhost_server.keystore"truststorePass="123456"/>

    (tomcat要与生成的服务端证书名一致)

    属性说明:

    clientAuth:设置是否双向验证,默觉得false,设置为true代表双向验证

    keystoreFile:server证书文件路径

    keystorePass:server证书password

    truststoreFile:用来验证client证书的根证书,此例中就是server证书

    truststorePass:根证书password

    第六步、測试:

           在浏览器中输入:https://localhost:8443/,会弹出选择client证书界面,点击“确定”,会进入tomcat主页,地址栏后会有“锁”图标。表示本次会话已经通过HTTPS双向验证,接下来的会话过程中所传输的信息都已经过SSL信息加密。


    最后给大家看看效果图。免得大家觉得有问题:



查看全文
  • 相关阅读:
    如何修改tomcat默认端口号8080的方法
    mybatis中的一对多
    mysql中left join设置条件在on与where时的用法区别分析
    登录不会走自定义的FormAuthenticationFilter及其onLoginSuccess原因
    (六)SpringIoc之延时加载
    (五)SpringIoc之Bean的作用域
    (三)SpringIoc之初了解
    (二)Spring容器
    (一)Spring之初了解
    值传递和引用传递
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10820879.html
  • Copyright © 2011-2022 走看看