JDK5.0环境下配置PKCS#11
生活随笔
收集整理的這篇文章主要介紹了
JDK5.0环境下配置PKCS#11
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
JDK5.0環境下配置PKCS#11
發表日期:2008-1-5
新浪微博 QQ空間 QQ微博 百度搜藏 騰訊朋友 QQ收藏 百度空間 人人網 開心網
這篇文章不介紹具體的編程方法,而是針對PKCS#11的初學者介紹如何在JDK5.0環境中配置PKCS#11,具體的編程方法可以關注我的下一篇文章,或者
參考PKCS#11手冊以及SUN MicroSystem公司關于PKCS#11的手冊。?
需要的環境:?
JDK5.0版本已經可以支持對PKCS#11的操作,這里就介紹一下如何實現在JDK5.0環境下配置PKCS#11,并且根據不同的操作系統提供相應的解決方案。?
首先介紹一下配置環境:JDK5.0,支持標準PKCS#11的設備(包括Smartcard,加密卡等等),支持PKCS#11的系統(WINDOWS/linux/UNIX等),以及設備
供給商提供的標準PKCS#11接口。(注:PKCS#11接口只是一個動態庫文件,其中封裝了PKCS#11標準函數,在不同的平臺上其格式不同,例如在WINDOWS
上其格式是*.DLL,在LINUX上其形式是*.so)?
配置方法:?
在JDK5.0環境中配置訪問PKCS#11的方法非常簡單:只用編輯一個*.CFG文件就可以了。因為JDK5.0中已經做好了對PKCS#11的橋接。具體方法是:?
1、在*.CFG文件中編輯好相應的參數和對應的值。?
2、在java語言中用PRovider p = new sun.security.pkcs11.SunPKCS11(*.cfg文件的絕對路徑)
3、進行相應的操作,具體的操作會在我的下一片文章中介紹。?
具體*.cfg的內容以及格式是:?
1、name=value 其中name是指明后面的value是該PKCS#11的名稱。?
2、library=*.dll/*.so的絕對路徑 library后面是指明標準PKSC#11接口的絕對地址?
3、description=value是該PKCS#11的注釋,可以通過前面的Provider p的getInfo方法得到其值
4、slotListIndex = value/slot = value 這個標示比較非凡,假如該PKCS#11的硬件提供商提供了多個可以支持該PKCS#11的設備,那么不同設備之間
必須通過不同的slot來區分,那么,在使用的時候必須明確的了解具體的硬件對應的slot的值,其中slotListIndex和slot中只用一個即可。假如在配置
文件中不指明的話,那么默認的是slot=0。這時假如提供商提供了多個硬件設備,則你的程序中智能調用slot=0的那個設備。所以建議在編輯該*.cfg時
添加該參數。?
5、其余的參數并不是很常用,欲具體了解可以訪問http://java.sun.com/j2se/1.5.0/docs/guide/security/p11guide.Html?
解決方案:?
跨平臺時JAVA語言的一大特性,那么PKCS#11也應做到跨平臺操作。當然,前提是該實現了PKCS#11接口的硬件可以跨平臺(專有驅動或者是無驅型)。
但由于*.cfg中指定PKCS#11接口的地址是絕對地址,所以假如想要做到跨平臺就要動態的產生cfg文件了。?
具體的解決方案如下:?
1、首先確認該硬件可以支持當前的系統。?
2、確認已經安裝了相應的驅動(無驅型設備的驅動是由系統提供的)?
3、確認該硬件的slotListIndex或者slot值?
4、使用System.getProperty(“java.home”);獲得路徑,做為存儲*.CFG文件的目錄。取名為cfgpath?
5、用JFileChooser來選擇PKCS#11文件,從而獲得library的值,取名為LibPath?
6、建立一個FileOutputStream來存儲*.CFG文件,分別寫入name的值,library的值(LibPath)description的值和slotListIndex的值。這樣,就可以
動態的創建cfg文件了。?
7、然后 就可以用Provider p = new sun.security.pkcs11.SunPkcs11(cfgpath);來加載文件,從而達到通過PKCS11來訪問硬件的目的。?
前面的4~7步只是一個demo,具體實施時可以根據具體的情況來改變。到此JDK5.0環境下配置PKCS#11就已經介紹完了。假如希望了解JAVA語言中的
PKCS#11操作,請關注下一篇文章。
發表日期:2008-1-5
新浪微博 QQ空間 QQ微博 百度搜藏 騰訊朋友 QQ收藏 百度空間 人人網 開心網
這篇文章不介紹具體的編程方法,而是針對PKCS#11的初學者介紹如何在JDK5.0環境中配置PKCS#11,具體的編程方法可以關注我的下一篇文章,或者
參考PKCS#11手冊以及SUN MicroSystem公司關于PKCS#11的手冊。?
需要的環境:?
JDK5.0版本已經可以支持對PKCS#11的操作,這里就介紹一下如何實現在JDK5.0環境下配置PKCS#11,并且根據不同的操作系統提供相應的解決方案。?
首先介紹一下配置環境:JDK5.0,支持標準PKCS#11的設備(包括Smartcard,加密卡等等),支持PKCS#11的系統(WINDOWS/linux/UNIX等),以及設備
供給商提供的標準PKCS#11接口。(注:PKCS#11接口只是一個動態庫文件,其中封裝了PKCS#11標準函數,在不同的平臺上其格式不同,例如在WINDOWS
上其格式是*.DLL,在LINUX上其形式是*.so)?
配置方法:?
在JDK5.0環境中配置訪問PKCS#11的方法非常簡單:只用編輯一個*.CFG文件就可以了。因為JDK5.0中已經做好了對PKCS#11的橋接。具體方法是:?
1、在*.CFG文件中編輯好相應的參數和對應的值。?
2、在java語言中用PRovider p = new sun.security.pkcs11.SunPKCS11(*.cfg文件的絕對路徑)
3、進行相應的操作,具體的操作會在我的下一片文章中介紹。?
具體*.cfg的內容以及格式是:?
1、name=value 其中name是指明后面的value是該PKCS#11的名稱。?
2、library=*.dll/*.so的絕對路徑 library后面是指明標準PKSC#11接口的絕對地址?
3、description=value是該PKCS#11的注釋,可以通過前面的Provider p的getInfo方法得到其值
4、slotListIndex = value/slot = value 這個標示比較非凡,假如該PKCS#11的硬件提供商提供了多個可以支持該PKCS#11的設備,那么不同設備之間
必須通過不同的slot來區分,那么,在使用的時候必須明確的了解具體的硬件對應的slot的值,其中slotListIndex和slot中只用一個即可。假如在配置
文件中不指明的話,那么默認的是slot=0。這時假如提供商提供了多個硬件設備,則你的程序中智能調用slot=0的那個設備。所以建議在編輯該*.cfg時
添加該參數。?
5、其余的參數并不是很常用,欲具體了解可以訪問http://java.sun.com/j2se/1.5.0/docs/guide/security/p11guide.Html?
解決方案:?
跨平臺時JAVA語言的一大特性,那么PKCS#11也應做到跨平臺操作。當然,前提是該實現了PKCS#11接口的硬件可以跨平臺(專有驅動或者是無驅型)。
但由于*.cfg中指定PKCS#11接口的地址是絕對地址,所以假如想要做到跨平臺就要動態的產生cfg文件了。?
具體的解決方案如下:?
1、首先確認該硬件可以支持當前的系統。?
2、確認已經安裝了相應的驅動(無驅型設備的驅動是由系統提供的)?
3、確認該硬件的slotListIndex或者slot值?
4、使用System.getProperty(“java.home”);獲得路徑,做為存儲*.CFG文件的目錄。取名為cfgpath?
5、用JFileChooser來選擇PKCS#11文件,從而獲得library的值,取名為LibPath?
6、建立一個FileOutputStream來存儲*.CFG文件,分別寫入name的值,library的值(LibPath)description的值和slotListIndex的值。這樣,就可以
動態的創建cfg文件了。?
7、然后 就可以用Provider p = new sun.security.pkcs11.SunPkcs11(cfgpath);來加載文件,從而達到通過PKCS11來訪問硬件的目的。?
前面的4~7步只是一個demo,具體實施時可以根據具體的情況來改變。到此JDK5.0環境下配置PKCS#11就已經介紹完了。假如希望了解JAVA語言中的
PKCS#11操作,請關注下一篇文章。
總結
以上是生活随笔為你收集整理的JDK5.0环境下配置PKCS#11的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 介绍KeyTool GUI工具2款
- 下一篇: java pkcs#11读取证书加解密(