免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
客戶(hù)端用https webservice

客戶(hù)端用https連接服務(wù)器的一點(diǎn)心得
來(lái)自:http://wwwww.javaeye.com/blog/94854

   項(xiàng)目需要用https與服務(wù)器進(jìn)行連接,獲取系統(tǒng)需要的一些配置參數(shù)。以前是用http進(jìn)行連接的,客戶(hù)端代碼比較簡(jiǎn)單,直接使用URL類(lèi)進(jìn)行連接并獲取輸入流即可。試著在瀏覽器中輸入相應(yīng)的https連接地址,提示證書(shū)確認(rèn),確認(rèn)以后就訪(fǎng)問(wèn)到內(nèi)容了。

   改 成https以后碰到了一些問(wèn)題。原以為Java可能已經(jīng)封裝好了,所以把直接把原來(lái)的http連接改成https,結(jié)果拋出異 常:java.lang.UnsupportedClassVersionError: test/url/URLTest (Unsupported major.minor version 49.0)。查了一下,是JVM不支持這個(gè)協(xié)議(《java網(wǎng)絡(luò)編程》上有說(shuō)明)。換了一個(gè)jdk,這個(gè)問(wèn)題好了。調(diào)用 vurl.getProtocol()可以獲取相應(yīng)的協(xié)議了。

   接著出現(xiàn) 了第二個(gè)異常:javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: Java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty。沒(méi)辦法,接著google,發(fā)現(xiàn)這個(gè)問(wèn)題跟安全連接的證書(shū)有關(guān)(安全方面的東西不是很了解,只知道這個(gè)公鑰,用于驗(yàn)證)。查了一 下,jdk果然提供了跟證書(shū)相關(guān)的東西。首先要從服務(wù)器那得到證書(shū),想了一下,ie好像可以。試著用ie連接地址,然后出現(xiàn)了證書(shū)確認(rèn)的提示框,點(diǎn)擊查看 證書(shū)-詳細(xì)信息,點(diǎn)擊復(fù)制到文件,選擇base64編碼,導(dǎo)出后就可以用記事本打開(kāi)了,大概樣子如下:

-----BEGIN CERTIFICATE-----
MIIDITCCAoqgAwIBAgIQS6WuWd7dHMeAfIkikfDiQzANBgkqhkiG9w0BAQQFADBM
MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg
THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wNjA1MTUyMzE4MTFaFw0w
j8thQJ7StDhAISTBTx/LE0qPlQLfkT3WQOsRb5sQoW/OkV4w9m0TXhWkLsIYngDD
2DJnR/y4HprZmo7M/3wStwO/UiDPIfTzd90SFfCU+pDV41logQ==
-----END CERTIFICATE-----

不用動(dòng)這個(gè)文件,以后直接導(dǎo)入即可。

PS: 如果已經(jīng)點(diǎn)擊了證書(shū)的確認(rèn),可能瀏覽器就直接打開(kāi)鏈接了。這樣情況下,可以接著點(diǎn)擊ie有下腳的“鎖”形符號(hào),即可看見(jiàn)證書(shū)。證書(shū)搞到手了,接著要然 Java環(huán)境能夠認(rèn)識(shí)它。這里調(diào)用的是jdk帶的一個(gè)exe,keytool.exe(%JAVA_HOME%/bin下有,所以配了java環(huán)境變量的 話(huà)直接能在命令行調(diào)用了)。這里我們輸入導(dǎo)入命令即可:

%JAVA_HOME%\bin\keytool -import -file service.crt -keystore D:/test/urltest/crt

三個(gè)參數(shù)分別代表:導(dǎo)入操作,導(dǎo)入的證書(shū)文件,導(dǎo)入證書(shū)存放的位置(PS:這個(gè)路徑可以使用相對(duì)路徑也可以是絕對(duì)路徑,但是相對(duì)路徑我沒(méi)有實(shí)驗(yàn)成功)。導(dǎo)入過(guò)程中會(huì)提示用戶(hù)輸入密碼,這個(gè)密碼隨便就行,不過(guò)位數(shù)不能太少:)

   證書(shū)是導(dǎo)入成功了,但是問(wèn)題ms還是沒(méi)解決,新的異常出現(xiàn)了:

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

沒(méi) 轍,接著google,還好問(wèn)題不是很麻煩。上面雖然生成了證書(shū),但是還要告訴程序證書(shū)的具體位置,涉及一個(gè)系統(tǒng)變量要配置。在程序中加入一句話(huà)即 可:System.setProperty("javax.net.ssl.trustStore","D:/test/urltest/crt");或 者在運(yùn)行java時(shí)加入?yún)?shù):-Djavax.net.ssl.trustStore=D:/test/urltest/crt.

   做了這么多,這個(gè)時(shí)候是黎明前最黑暗的時(shí)候。最后這個(gè)問(wèn)題搞了2小時(shí).......

   異常:java.net.UnknownHostException: 222.222.222.222。 沒(méi)啥好說(shuō)了的,google。找來(lái)找去,找到一個(gè)blog說(shuō)了這么一句:在生成證書(shū)的時(shí)候會(huì)提示你“你的姓名”,這里別寫(xiě)你的名字,而要寫(xiě)一個(gè)ip或者一 個(gè)你對(duì)應(yīng)網(wǎng)站的網(wǎng)址。拋出的異常提示的錯(cuò)誤確實(shí)是我的https請(qǐng)求中的ip,這樣的話(huà)可能是此ip和證書(shū)中的“名字”不相同造成的。再次使用ie打開(kāi)證 書(shū),在“常規(guī)”里面,看到這么一個(gè)東西(我直接用https://mail.google.com試的,因?yàn)檫B它的時(shí)候沒(méi)有出現(xiàn)任何證書(shū)確認(rèn))

   頒發(fā)給:www.google.com

找到url了,打開(kāi)我的證書(shū),哈哈,確實(shí)也有這么一個(gè)東西,爽。

   更 郁悶的來(lái)了,url是找到了,可是,此url是個(gè)無(wú)效的地址.......輸入到ie中返回?zé)o法連接。這下知道為什么google不用確認(rèn)而這個(gè)證書(shū)需要 確認(rèn)了。因?yàn)榇藆rl連不通。怎么辦?天無(wú)絕人之路,還是讓我找到了。其實(shí)現(xiàn)在我要做的就是一個(gè)域名和ip綁定的問(wèn)題,但是這個(gè)綁定不是DNS來(lái)做,而是 本機(jī)(windows系統(tǒng))來(lái)做。查了一下,果然有,就在C:\WINDOWS\system32\drivers\etc下有一個(gè)host文件,打開(kāi) 它,可以看到這么一行

127.0.0.1 localhost

^_^,原來(lái)localhost是這樣綁定127.0.0.1的啊,如此就好。我試著加入一行

222.222.222.222 www.sample.test

把原來(lái)的https連接的ip換成了那個(gè)域名,OK!問(wèn)題搞定,連接成功。

 

后記:

在整個(gè)調(diào)試過(guò)程中我一直使用 https://mail.google.com 做為參照來(lái)調(diào)試。使用這個(gè)url的話(huà)至于jvm支持,就能直接連接。出現(xiàn)上面的后幾個(gè)異常,估計(jì)都是與域名有關(guān)。因?yàn)檫@個(gè)域名是一個(gè)DNS不能識(shí)別的。
這兩天朋友使用時(shí)又發(fā)現(xiàn)這樣一個(gè)異常:sun.security.validator.ValidatorException: No trusted certificate found   這個(gè)異常也是由于沒(méi)有找到證書(shū)造成的,看看證書(shū)的路徑設(shè)置對(duì)不對(duì)

 

Java客戶(hù)端調(diào)用Https Webservice
出處地址:http://hi.baidu.com/sunshibing/blog/item/08f873f0d41e67c37931aa84.html
Java 要調(diào)用遠(yuǎn)程Https webservice 必需具用遠(yuǎn)程服務(wù)器提供的客戶(hù)端信任書(shū)及密鑰.
將client.keystore和client.truststore拷貝到classes\test目錄下.
 package test;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
   public class TestEcVoteNotice
   {
      public static void main(String [] args) throws Exception {
       System.setProperty("javax.net.ssl.keyStore", "test\\client.keystore");
        System.setProperty("javax.net.ssl.keyStorePassword", "abc");
        System.setProperty("javax.net.ssl.trustStore", "test\\client.truststore");
        System.setProperty("javax.net.ssl.trustStorePassword", "abc");
        //System.setProperty("javax.net.debug", "ssl");
        //System.setProperty("https.protocols", "TLSv1");
        //System.setProperty("java.protocol.handler.pkgs","javax.net.ssl");
      String endpoint = "https://localhost:" +"8443"+ "/axis/services/EcVoteNotice";
      //String endpoint = "http://localhost:" +"8080"+ "/axis/services/EcVoteNotice";
          Service  service = new Service();
          Call     call    = (Call) service.createCall();
        call.setTargetEndpointAddress( new java.net.URL(endpoint) );
        call.setOperationName("toStringP");
        String res = (String) call.invoke( new Object[] {"Box"} );
        call.setOperationName("toString");
        String res2 = (String) call.invoke( new Object[] {} );
      
        System.out.println( res+"/"+res2 );
      }
   }
在classes目錄下執(zhí)行.
java -cp %AXISCLASSPATH% test.TestEcVoteNotice

 

Java客戶(hù)端如何調(diào)用Https Webservice 

來(lái)自:http://qq0819.blog.hexun.com/11419409_d.html

 最近在做系統(tǒng)改造,服務(wù)器增加了SSL訪(fǎng)問(wèn),那么對(duì)于通過(guò)https訪(fǎng)問(wèn)Webservice接口,java應(yīng)該如何實(shí)現(xiàn)呢。通過(guò)查找相關(guān)資料,好不容易找到了解決方法,大體步驟如下。

1、獲取加密數(shù)字證書(shū)

因?yàn)槭亲约涸O(shè)備頒發(fā)的證書(shū),所以先獲取數(shù)字證書(shū),訪(fǎng)問(wèn)https://+域名,根據(jù)提示安裝證書(shū),然后導(dǎo)出證書(shū),保存為*.cer文件;

2、安裝jdk,我使用的是jdk1.4的;

3、執(zhí)行keytool命令,生成keystore文件

打開(kāi)windows命令符窗口,執(zhí)行如下命令

keytool -import -alias aliasname -file *.cer -keystore *.keystore

keytool命令可以從網(wǎng)上查找,或者使用keytool -h命令獲取說(shuō)明。

4、添加代碼

在調(diào)用接口方法之前,添加如下代碼:

System.setProperty("javax.net.ssl.trustStore", "*.keystore");        

System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");

Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

如果沒(méi)有上述3條語(yǔ)句,會(huì)報(bào)如下異常錯(cuò)誤:java.security.cert.CertificateException: Couldn't find trusted certificate

好了,一切OK, 通過(guò)以上步驟即可實(shí)現(xiàn)調(diào)用https webservice。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Yale CAS + .net Client 實(shí)現(xiàn) SSO(1)
Java安全通信:HTTPS與SSL
自簽名證書(shū)的WEB服務(wù)安全應(yīng)用
中文java技術(shù)網(wǎng)::在tomcat中實(shí)現(xiàn)https安全連接的方法
java生成Https證書(shū),及證書(shū)導(dǎo)入的步驟和過(guò)程
Tomcat開(kāi)啟https
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服