xiaole's profiledingxl05的共享空间PhotosBlogListsMore ![]() | Help |
|
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 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,今天下午上嵌入式,买了一支基金。 |
|
|