然而,為了所謂的"安全需求"(這很重要,只是他X的為什麼要用SSL),所以希望能用SSL技術來達成。
何謂SSL?
它就是指加密通道技術(這個譯名最近好像不用了?)。技術正如其名,就是利用憑證技術把傳輸的通道加密起來。如下:
======受加密保護======
某甲 <-----DATA的安全通道-----> 某乙
======受加密保護======
雖然稱它加密了通道,但事實上加密的還是被傳輸的資訊。這個技術已經愈來愈普及,所以技術上很成熟,能很容易的使用。一個網站如果使用了SSL,那麼你會看到它的連接方式成變成https://,而不是常見的http://了。
Java的SSL
當小弟使用java的URL類別去連接https,馬上就丟出了例外(exception)。上網查了一堆文章,全都在介紹JSSE。但是,JSSE只適用於以往的Java 1.1、1.2(可能還有1.3)版,之後的JSSE其實已經被整進Java裡面了,無須額外安裝或是下載jar檔。
更不需要設什麼安全提供,如:
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol"); Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
一切的一切就只是讓你的jre信任SSL的憑證鍊即可。信任的方法很簡單,在你的jre\lib\security底下有一個cacerts檔。用keytool把SSL的憑證鍊中的每個憑證加進來,就算達到信任了!指令為:
keytool -import -keystore cacerts -file <憑證檔> -alias <給這個資訊任意名稱>
cacerts的預設密碼是changeit。
使用前,可以先copy一份cacerts作為備份。
Web Service混搭SSL
之後,再用Web Service直接去用URL類別連接https就不會有exception了!可喜可賀!(如右上圖)
共勉之
其他參見:
沒有留言:
張貼留言