[發(fā)明專利]用openssl的X.509數(shù)字證書驗證Java證書的方法有效
| 申請?zhí)枺?/td> | 201310052771.0 | 申請日: | 2013-02-18 |
| 公開(公告)號: | CN103117862A | 公開(公告)日: | 2013-05-22 |
| 發(fā)明(設(shè)計)人: | 陳海雷;范健;潘琪鋒;尤建華 | 申請(專利權(quán))人: | 無錫矽鼎科技有限公司 |
| 主分類號: | H04L9/32 | 分類號: | H04L9/32 |
| 代理公司: | 無錫市大為專利商標(biāo)事務(wù)所 32104 | 代理人: | 曹祖良 |
| 地址: | 214135 江蘇省無錫市新*** | 國省代碼: | 江蘇;32 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | openssl 509 數(shù)字證書 驗證 java 證書 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)字證書技術(shù)領(lǐng)域,具體是一種用openssl的X.509數(shù)字證書驗證Java證書的方法。
背景技術(shù)
安卓系統(tǒng)中,用存儲在硬件模塊中的CA證書驗證Java證書。在安全應(yīng)用中,CA證書通常不會保存在安全防御度低的系統(tǒng)路徑下,而是保存在某些具有安全特質(zhì)的硬件模塊中。硬件模塊的讀寫驅(qū)動通常是C語言編寫,CA證書從驅(qū)動中讀出時通常為openssl的X.509形式。要驗證的證書則在安卓Java層,是Java證書形式。這種跨語言的證書驗證需要用到特定的驗證方法。
目前安卓系統(tǒng)進行數(shù)字證書驗證時,只提供了同一編程語言環(huán)境下的方法。如果CA證書放在任何系統(tǒng)路徑下,可以保證同一編程語言環(huán)境,但通常安全度較低,容易被惡意篡改。當(dāng)CA證書被保存到安全特質(zhì)的硬件中時,就變成了跨語言環(huán)境的證書驗證。因為訪問硬件的驅(qū)動通常為C語言編寫,不可能是Java編寫,而安卓系統(tǒng)應(yīng)用層的證書肯定是Java證書。
發(fā)明內(nèi)容
本發(fā)明的目的是消除這種跨語言證書驗證的困難,給安卓系統(tǒng)安全定制提供方便,提供一種用openssl的X.509數(shù)字證書驗證Java證書的方法,其應(yīng)用背景是:試圖用保存在安全模塊中某CA證書,驗證第三方安卓安裝程序,當(dāng)安裝程序簽名不符合CA授權(quán)時,阻止其安裝。同時在安卓系統(tǒng)驗證服務(wù)器身份時也會用到本方法。用保存在安全模塊中的某CA證書驗證服務(wù)器端發(fā)來的服務(wù)器證書,如果服務(wù)器證書不是CA授權(quán)的,那么中斷客戶端與服務(wù)器的連接。
按照本發(fā)明提供的技術(shù)方案,所述用openssl的X.509數(shù)字證書驗證Java證書的方法包括以下步驟:
(1)???用驅(qū)動接口讀取保存在硬件中的CA證書,返回一個openssl的X.509數(shù)字證書結(jié)構(gòu);
(2)???取出所述X.509數(shù)字證書結(jié)構(gòu)中的公鑰ASN.1編碼、公鑰算法和參數(shù);
(3)???將公鑰算法和參數(shù)通過openssl的ASN.1轉(zhuǎn)換函數(shù)轉(zhuǎn)為C語言的字符數(shù)組char?*類型;
(4)???再將所述公鑰ASN.1編碼、公鑰算法和參數(shù)三者的字符數(shù)組類型通過JNI規(guī)則轉(zhuǎn)為Java語言的字節(jié)數(shù)組byte[]類型;
(5)???將所述公鑰算法轉(zhuǎn)換的字節(jié)數(shù)組類型再進一步轉(zhuǎn)為Java的字符串String類型;
(6)???完成轉(zhuǎn)化的公鑰算法和參數(shù)構(gòu)造成Java的算法標(biāo)識符AlgorithmIdentifier對象;
(7)???所述算法標(biāo)識符對象和公鑰ASN.1編碼的字節(jié)數(shù)組構(gòu)造成Java的主體公鑰信息SubjectPublicKeyInfo對象;
(8)???所述主體公鑰信息對象能使用它的成員函數(shù)獲得Java的公鑰對象;所述Java的公鑰對象就是CA證書在Java環(huán)境中的公鑰,即已經(jīng)將openssl的X.509數(shù)字證書中的公鑰轉(zhuǎn)到Java環(huán)境下;
(9)???按照Java環(huán)境下通用的證書驗證步驟驗證數(shù)字證書是否為授權(quán)證書,方法為:
a、獲取待驗證的Java證書對象;
b、調(diào)用該證書對象的驗證成員函數(shù)verify,并將Java的公鑰對象作為函數(shù)參數(shù)傳入;
c、捕捉異常;如果沒有異常就表明通過驗證,是授權(quán)證書;如果有異常,表明驗證失敗,驗證過程有錯誤。如果異常類型是簽名異常表明證書為非授權(quán)。
本發(fā)明的優(yōu)點是:實現(xiàn)效率高,使用成本低,所用轉(zhuǎn)化函數(shù)是常見函數(shù),這些函數(shù)在安卓系統(tǒng)的函數(shù)庫中是存在的,無需修改或添加。
附圖說明
圖1是本發(fā)明實施流程示意圖。
具體實施方式
下面結(jié)合附圖和實施例對本發(fā)明作進一步說明。
首先介紹一下CA證書驗證數(shù)字證書的原理。
一般情況下,數(shù)字證書都包含授權(quán)者的簽名。簽名就是授權(quán)者用自己的私鑰加密了一段從數(shù)字證書提取的明文,而生成的密文。這段密文只有授權(quán)者的公鑰能解密。而授權(quán)者的CA證書中包含了授權(quán)者的公鑰。因此,驗證原理就是用CA證書中提取的公鑰解密簽名,解密后的結(jié)果對比提取的明文,如果兩者相同,則數(shù)字證書屬于CA證書授權(quán)的,反之則不屬于授權(quán)的。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于無錫矽鼎科技有限公司,未經(jīng)無錫矽鼎科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310052771.0/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:胸部放射線檢查保護裝置
- 下一篇:一種架桿式落地鏡面架
- 安卓系統(tǒng)用openssl引擎加載客戶端證書的方法
- 用openssl的X.509數(shù)字證書驗證Java證書的方法
- 一種基于OpenSSL的Linux安全文件傳輸系統(tǒng)及方法
- 一種基于OpenSSL的Linux安全文件傳輸系統(tǒng)及方法
- 實現(xiàn)OpenSSL支持SM2算法的方法
- 一種應(yīng)用層獲取真隨機數(shù)的方法
- 一種征信機系統(tǒng)中基于openssl的精準(zhǔn)更新升級系統(tǒng)及方法
- 一種基于OpenSSL的QAT性能對比方法及系統(tǒng)
- 使用SDF、SKF實現(xiàn)國密SSL協(xié)議的方法及系統(tǒng)
- 一種基于UEFI架構(gòu)EDK2支持Openssl算法的方法與設(shè)備





