Tuesday, May 22, 2012

使用jarsigner對jar檔進行簽章

若要對jar進行簽章,首先要有一張憑證,缺$一族可使用java keytoo工具可產生自我簽發的憑證(參考這裡)!

使用jarsigner工具對test.jar進行簽章的指令如下:

jarsigner -keystore test.jks -keypass test test.jar alias-test

各參數說明如下:
-keystore 符合java keystore格式的憑證路徑
-storepass 該憑證的密碼
*.jar 欲簽章之jar檔
alias-test 此憑證之別名

Wednesday, May 9, 2012

Java列出所有系統相關資訊

下列程式碼可以列出所有系統資訊

Properties props = System.getProperties();
//使用Enumeration走訪Map物件
Enumeration enumeration = props.propertyNames();
while (enumeration.hasMoreElements()) {
    String name = (String) enumeration.nextElement();
    String value = (String) props.getProperty(name);
    System.out.println(name + ":" + value);
}

Friday, May 4, 2012

使用Java Applet製作自然人憑證登入驗證(1)

因為要實作使用自然人憑證來登入網站並達到跨browser的功能,因此打算以Applet的方式來呼叫HiSecue的Win32 API,不過因為在Java中呼叫JNI屬於特權模式,所以Applet程式必須打包成JAR檔,並且將它簽章後同時獲得客戶端的同意才得以在瀏覽器中執行。

另一方面,若要進行簽章必須先取得獲CA認證的憑證,但是要取得CA核發的憑證要很多$,因此可以參考另一篇,以JDK的keytool工具製作自我核發的憑證。

使用Java Applet製作自然人憑證登入驗證(2)

接續上一篇,繼續實作!


4.在JApplet的run()中,呼叫具特權模式類別。

java.awt.EventQueue.invokeAndWait(new Runnable() {
    public void run() {
        initComponents();
        //產生新特權模式類別
        checkCard check = new checkCard();
        //以AccessController的static method執行特權模式指令
        String s = (String)AccessController.doPrivileged(check);
    }
});

Thursday, May 3, 2012

Netbeans 7.x對jar檔自動簽章

要在Netbeans中設定在建置專案時自動對jar檔自動簽章的步驟如下:

1.打開project.properties檔案。在最後方加入下列設定。

#加入自動化自我簽章
jarsign.jarsigner=jarsigner.exe路徑
jarsign.keystore=已核發之憑證檔
jarsign.storepass=憑證檔密碼
jarsign.signedjar=${dist.dir}
jarsign.alias=憑證別名

使用Keytool產生自我核發的憑證

為了要讓Applet可以在客戶端具有特殊權限,例如:存取客戶端的檔案系統,必須要對JAR檔進行簽章的動作,但是要申請一個憑證必須要有$$,因此為了測試我們可以使用JDK內建的keytool工具來產生金鑰並核發憑證給自己!

測試環境:JDK 1.6.31 Windows 7 x64 命令列模式

  • 輸入下列指令可以直接產生自我核發之憑證
#使用Java的keytool指令
keytool -genkey -alias test -keysize 2048 -keyalg RSA -sigalg SHA1withRSA -keypass test1234 -storepass test1234 -validity 365 -dname "CN=testname, OU=testunit, O=testorg, L=testlocation,S=teststate , C=TW" -keystore test.jks