xiaole's profiledingxl05的共享空间PhotosBlogListsMore Tools Help

Blog


    September 29

    访问基于https的web service的两个问题

    今天用java访问型如https://59.66.XX.XX的web service,解决了两个问题。
    1,由于这个主机的证书是由aruba自己颁布的,java的cacerts里没有。所以会出现以下错误。
    Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    解决方案
    一,用IE访问这个网站会弹出查看证书窗口,然后把证书导出来,是一个cer文件。用keytool -import 把这个cer导入到一个keystore,默认是在用户目录下的.keystore。然后运行程序的时候命令变为java -Djavax.net.ssl.trustStore=/root/.keystore
    二,自己提供一个TrustManager,什么事都不干。
    或许可以把这个野CA的证书加入到cacerts里,但是我没有。
    2,https不能用IP地址的形式直接访问。否则出现
    Exception in thread "main" java.io.IOException: HTTPS hostname wrong:  should be <59.66.XX.XX>
    解决方案:
    自己提供一个HostnameVerifier,我直接返回true。

    最后是综合TrustManager和HostnameVerifier的方案。

    import java.net.*;
    import javax.net.ssl.*;
    public class HttpsClient {
    static class HttpClientVerifier implements HostnameVerifier {
            public boolean verify(String hostname,SSLSession session){return true;}
    }
    public static void main(String[] args) throws Exception {

    TrustManager[] trustAllCerts = new TrustManager[]{
            new X509TrustManager() {
                public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                    return null;
                }
                public void checkClientTrusted(
                    java.security.cert.X509Certificate[] certs, String authType) {
                }
                public void checkServerTrusted(
                    java.security.cert.X509Certificate[] certs, String authType) {
                }
            }
        };

        // Install the all-trusting trust manager
        try {
            SSLContext sc = SSLContext.getInstance("TLS");
            sc.init(null, trustAllCerts, new java.security.SecureRandom());
            HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
        } catch (Exception e) {
        }
    //注意替换URL
    URL u = new URL("https://59.66.XX.XX/axis/services/LocationApi?wsdl");

    HttpsURLConnection huc = (HttpsURLConnection) u.openConnection( );

    huc.setHostnameVerifier(new HttpClientVerifier( ));
    BufferedReader br = new BufferedReader(new InputStreamReader(huc.getInputStream( )));
    String s = br.readLine( );
    while (s != null) {
    System.out.println(s);
    s = br.readLine( );
    }
    }
    }
    这个问题我上网搜了很久,不可用的代码找来了一大堆。最后还是在一本书上看明白了。O'Reilly 的java security 第2版,里面的接口已经过时了,但是原理讲的很清楚。

    星期五

    1,周一参加google宣讲会,昨天中午参加google笔试,2道算法题,由于签了保密协议,此处不予透露。晚上上VHDL
    2,google的效率还是蛮高的,中午参加google面试,主要还是算法
    3,周三上无线通信工程。
    4,最近一直在弄aruba的垃圾MMS。先装了1.0,发现定位不能用,又装了2.0,发现webservice有问题。



    September 26

    星期二

    周一下午上嵌入式,晚上去参加google宣讲会
    今天白天弄aruba那个垃圾MMS,晚上跟xzg,gl吃饭
    September 22

    星期六

    1,上午去参加微软笔试,在北航主南401,故地重游,现在教学区居然不能骑车进去了。
    题目跟网上搜集到的差不多。首先是选择题,涉及面广,有一定难度。然后是编程题,一个加密,一个解密。接下来是测试,一个是问如果让你测电源开关有什么想法,另一个是看代码,说说某个函数是干什么的,然后找出尽量多的bug。最后是设计题。2008年北京奥运,用PDA做导游,怎么设计,怎么评价
    2,周五某国家单位招聘,无聊
    September 19

    星期三

    上午上无线通信工程
    中午11点吃饭
    喝了一罐咖啡
    坐110去人大西门
    去鼎钧大厦519
    抄誓词&验明正身
    有个人从外地来没带学生证被拒
    头一个进去
    ISSUE是公正和不公正的法律,
    ARGUE是选环保人士当市长。
    UCLA,UIUC,NYU,UWM
    回来在实验室看诺贝尔经济学家演讲
    效果太差了
    September 17

    《人性的枷锁》读后感

    1,一般人会认为理性是一种枷锁,但是这本书是说感情才是枷锁。
    书皮上有斯宾诺莎的一段话,大意是:人屈从于感情,有如套上了
    枷锁;只有运用理智,人才自由。他是理性主义哲学家,所以崇尚理智毫不奇怪
    2,菲利普
    是一孤儿,跛足,出身中产阶级,被他的主教伯父收养。本来大家希望他从教会学校毕业去牛津然后当一名神父。但是他受到不良意识的影响,决定退学去游历世界,首先到了德国混了几年,后来回到英国跟一个将近40岁的女人初恋并发生关系。后来突发奇想学画画,于是去法国鬼混,但是终于发现自己不是这块料。于是回到英国学医,结识了一个美尔锥的女子,从此一发不可收拾,该名女子出身卑贱,俗不可耐。他为这个女人耗费了大量钱财。但是该女人跟一个德国佬跑了。他还为了她辜负了另一个女人。后来该名女子肚子大了被人家抛弃了,又跑来找他。他忙里忙外帮她把孩子生下来,希望感动她,但是这个女人又跟他的好朋友鬼混在一起。后来这个女人被抛弃当了妓女,又被他碰到了,这一次他没指望感动她,该女子主动挑逗他他都拒绝了,于是该女子把他的家砸了个稀巴烂跑了。菲利浦后来投资股票失败,彻底沦为流浪汉,在公司打工。后来他的伯父死去,他得到遗产才开始翻身。经历这一次变故终于使他彻底顿悟。人生没有意义,但是只要能为社会做点有意义的事情,那么人生就有点意义。最后他跟他的朋友阿尔西尼的女儿发生了关系,本来以为中标了,打算奉子成婚。但是后来发现没有,但是他决定还是跟她结婚,放弃去西班牙的梦想。去海边为渔民当医生。
    3,书中所描述的时代在一战之前。那时劳动人民的生活还是非常悲惨的。菲利浦这样的中产阶级也得小心过日子,一旦身无分文,立马就会被他那个阶层鄙视。
    4,无数的人只凭感情用事,盲目追求艺术,到头来半生潦倒一事无成。
    5,有一个商人,中年才开始学习绘画,后来他抛弃了家人和事业财富跑到太平洋上的一个小岛追求艺术。如果你不能像这个人一样执著,就不要搞艺术。这个人是高更。
    6,这本书讲的道理还是蛮有意义,其他就没什么了

    星期一

    1,9月5日去问cernet年会,周折了一番,告诉我中了,然后改到7页,15日之前把交费等各项搞定
    2,去了趟北海公园
    3,zan_zen请吃饭,包括gdw,hmz,ht,我
    4,看完了《人性的枷锁》,也看了几部电影
    5,周六去打乒乓球
    6,今天下午上嵌入式,买了一支基金。