zoukankan      html  css  js  c++  java
  • CAS Java认证 规格严格

    如果要启用tomcat的https方式,首先要创建证书,使用的工具是jdk中的keytool ,用法不多说了,到处都有。

    使用keytool创建证书的第一个问题是:您的姓名是什么(竟然是中文的!),这时候,理所应当的是回答自己的名字。配置完成后,用浏览器访问,一切正常。但使用http client 写程序访问的时候,问题就出来了。
    一般表现形式是这样的: 

    javax.servlet.ServletException: HTTPS hostname wrong: should be <localhost>

    root cause
    java.io.IOException: HTTPS hostname wrong: should be <localhost>

    看到这个问题就能猜到是证书问题。但无论如何也猜不到证书到底有什么毛病。事实上,令人难以置信的是错误就出在创建证书的第一个问题--你的姓名。其实这个“姓名”应该是域名。比如说localhost或是blog.devep.net之类的。输成了姓名,和真正运行的时候域名不符,当然会出错。浏览器无所谓,弹出一个对话框,用户按一下就行了。但http client就直接抛出了上面那个错误。

    两篇文章的作者已经解释了出现 HTTPS hostname wrong 的原因及解决方案, 经过一番查证, 发现此异常可以用以下 hack 手段避免, 在使用 https 协议访问前, 加上以下代码 :

        System.setProperty("java.protocol.handler.pkgs", "javax.net.ssl");

        HostnameVerifier hv = new HostnameVerifier() {
             public boolean verify(String urlHostName, SSLSession session) {
             return urlHostName.equals(session.getPeerHost());
             }
        };
       
        HttpsURLConnection.setDefaultHostnameVerifier(hv);

    这样既可正常访问, 注意导入的 HostnameVerifier 和 HttpsURLConnection 的 package 都是 javax.net.ssl, 而非 com.sun.net.ssl , 如果允许所有 ip 都可以通过认证, 甚至可以在 verify 中直接返回 true ! 当然这是不推荐的做法.

  • 相关阅读:
    Meterpreter核心命令
    bugku ctf 杂项 旋转跳跃 (熟悉的声音中貌似又隐藏着啥,key:syclovergeek)
    bugku 神秘的文件
    代码审计
    “百度杯”CTF比赛 九月场 类型:Web 题目名称:SQLi ---不需要逗号的注入技巧
    热烈祝贺北亚获批电子数据司法鉴定执业资格!
    硬盘有坏道的表现和避免硬盘坏道的方法
    如何应对eva存储崩溃的情况?
    linux系统数据恢复过程
    DELL EqualLogic PS6100恢复数据原理概述
  • 原文地址:https://www.cnblogs.com/diyunpeng/p/1892168.html
Copyright © 2011-2022 走看看