zoukankan      html  css  js  c++  java
  • tomcat------https单向认证和双向认证

     一、https分为单向认证和双向认证:

    单向认证就是说,只有客户端使用ssl时对服务器端的证书进行认证,也就是说,客户端在请求建立之前,服务器端会向客户端发送一个证书,一般情况下,这种证书都是由自己或企业自行发布的,所以在客户端使用https时,会跳出“是否信任并继续”,点击信任则表示客户端信任服务器端证书,才可以继续交互。

    双向认证,就是服务器端和客户端都对双方的证书进行认证,这时除了单向认证外,还需要在服务器端的受信任证书列表中加入客户端的证书,这样服务器端才能信任客户端的请求。

    二、配置:

    1.单向认证配置:

     (1)首先使用keytool生成服务端密钥仓库,命令: keytool -genkey -keyalg RSA -alias tomcatsso -dname "CN=localhost" -keystore d: omcatsso.keystore -storepass changeit

          命令参数-genkey表示是要生成新的密钥库,keyalg表示使用的密钥生成算法是RSA,alias表示别名,keystore表示生成的密钥库存储在什么地方,文件格式可以自定义,-storepass是表示密钥库的密码。

       该步骤生成了一个密钥库,该密钥库包含私钥和公钥等文件。把它用于服务器端的证书库,用于客户端浏览器认证服务端。

    (2)开启tomcat对ssl的支持,具体方法是去掉 <Connector port="8443"...>这一段的注释,并在本段的末尾加上keystoreFile="d: omcatsso.keystore" keystorePass="changeit"这两个属性,这两个属性会告诉tomcat去哪儿寻找服务器端密钥库。重启tomcat,至此tomcat对https的修改完成。

     (3) 客户端也要验证服务器证书,因此,必须把服务器证书添加到浏览的“受信任的根证书颁发机构”。由于不能直接将keystore格式的证书库导入,必须先把服务器证书导出为一个单独的.cer或.crt文件,使用如下命令: 

          keytool -keystore d: omcatsso.keystore -export -alias tomcat -file D:home omcat.cer

      然后双击D:home omcat.cer文件,选择安装到“受信任的根证书颁发机构”下面。

         如果没有第三步,浏览器会跳出“是否信任并继续”,点击信任则表示客户端信任服务器端证书,才可以继续交互。消除该项请使用OPenSSL申请一个正式的服务器证书,参考http://blog.csdn.net/jasonhwang/article/details/2344768

     2.双向认证配置:

     (1) 为客户端(即IE或firefox)生成证书库,以便让服务器来验证它。为了能将证书顺利导入至IE和Firefox,证书库格式应该是PKCS12,即生成证书的时候storetype是PKCS12。因此,使用如下命令生成:

            keytool -genkey -v -alias client -keyalg RSA -storetype PKCS12 -keystore D:homeclient.keys 

           客户端的CN可以是任意值。

    (2)在客户端安装证书库。注意:不能导入.cer或者.crt格式文件,因为它会把这些文件当做服务端的认证文件,单向认证自动安装。

        打开IE->工具->内容->证书->个人->导入->选择任意文件 D:homeclient.keys ->输入密钥。一定要存在个人区。可以参考《http://www.linuxyw.com/a/WEBfuwu/20130530/516.html

    (3)让服务端信任客户端证书,由于不能直接将PKCS12格式的证书库导入,必须先把服务器证书导出为一个单独的.cer或.crt文件,

            导出的客户端证书导入服务端受信任的证书库,该命令表示服务器端信任该证书,命令:keytool -import -alias tomcatsso -file D:homeclient.cer -keystore D:homeclient.trustkeys ,不必先建client.trustkeys库;

            或者导入默认的服务器端信任证书库,命令:keytool -import -alias tomcatsso -file D:homeclient.cer -keystore "%java_home%/jre/lib/security/cacerts" -storepass changeit

    这里的java_home是tomcat使用的jdk的位置,"%java_home%/jre/lib/security/cacerts"的 cacerts是个无后缀文件,表示服务器认证客户端时使用的根证书库。 

     

    参考文章:《keytool命令使用实例》 http://www.360doc.com/content/10/0121/10/633992_14065815.shtml

                    《使用key配置https》    http://www.blogjava.net/stevenjohn/archive/2012/08/22/385989.html

     

     

     

  • 相关阅读:
    windows的80端口被占用时的处理方法
    Ansible自动化运维工具安装与使用实例
    Tomcat的测试网页换成自己项目首页
    LeetCode 219. Contains Duplicate II
    LeetCode Contest 177
    LeetCode 217. Contains Duplicate
    LeetCode 216. Combination Sum III(DFS)
    LeetCode 215. Kth Largest Element in an Array(排序)
    Contest 176 LeetCode 1354. Construct Target Array With Multiple Sums(优先队列,递推)
    Contest 176
  • 原文地址:https://www.cnblogs.com/muffe/p/3513610.html
Copyright © 2011-2022 走看看