<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    waysun一路陽光

    不輕易服輸,不輕言放棄.--心是夢的舞臺,心有多大,舞臺有多大。踏踏實實做事,認認真真做人。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
      167 隨筆 :: 1 文章 :: 64 評論 :: 0 Trackbacks

    cfca采用加密組件Bouncy Castle。 
    cfca證書工具包包含如下文件(服務器端,以jdk1.4為例): 
    1、bcprov-jdk14-125.jar:security provider lib 
    2、bcmail-jdk14-125.jar:貌似郵件用的 
    3、cfcaDigitalKitTest.jar:cfca自己開發的工具包,就一個類 
    4、entbase.jar、entuser.jar:cfcaDigitalKitTest.jar要應用的2個jar包 
    5、cacerts:cfca的根證書鏈文件,是一個keystore文件,可以用keytool -list查看 
    6、castle.ini:cfca工具包的配置文件,內容如下 

    [CRL校驗部分]==========貌似可以不配 
    /*ldap服務器端口號*/ 
    ldapServerPort=389 
    /*ldap服務器地址*/ 
    ldapServerName=210.74.41.60 
    /*CFCA CRL cache存放目錄*/ 
    cachedCRLDirPath=G:\\testCerts 

    [用戶證書部分] 
    /*用戶證書路徑*/==========這里可以配置keystore(擴展名必須是keysotre,寫死在cfca工具包中)或者pfx文件 
    userCertFilePath=D:\\java\\stf\\cfca\\cfcakeystore_server.keystore 
    /*訪問用戶證書口令*/ 
    userCertPassword=Passw0rds 
    /*用戶證書別名,可選*/===========如果前面配的是keystore必須指定alias 
    userCertAlias=cfca_server 

    [可信CA庫口令]=============根證書鏈文件cacerts的默認文件 
    trustedCAStorePass=changeit 





    兩種方式使用cfca的證書工具包: 
    參考:http://danielzzu.blog.163.com/blog/static/11851530420101194345324/ 

    一、配置方式(以jdk1.4為例) 
    1. 添加安全庫 
    前置條件:獲得/usr/java14目錄的寫權限 
    動作: 
    要添加兩個安全jar文件:bcmail-jdk14-125.jar和bcprov-jdk14-125.jar 
    把這兩個jar放到/usr/java14/jre/lib/ext目錄下 
    修改這兩個jar包的權限: 
    chmod 755 bcmail-jdk14-125.jar 
    chmod 755 bcprov-jdk14-125.jar 

    2. 配置安全文件java.security 
    該文件在/usr/java14/jre/lib/security/ 目錄下 
    在其中添加一行: 
    security.provider.N=org.bouncycastle.jce.provider.BouncyCastleProvider 
    其中N用具體的數字替換,如果文件中原有的security provider編號最大是4,則這里的N就用5,注意千萬不要與原有的security provider編號重復! 

    3. 更新cacerts文件 
    該文件在/usr/java14/jre/lib/security/ 目錄下 
    首先對該目錄下原cacerts進行備份:mv cacerts cacerts.old 
    然后把提供的cacerts復制到這個目錄下 
    修改文件權限:chmod 755 cacerts 

    4. 將cfcaDigitalKitTest.jar、entbase.jar、entuser.jar、castle.ini放到classpath中,就可以調用cfca工具包: 
    Java代碼  收藏代碼
    1. import java.io.File;  
    2. import java.io.FileInputStream;  
    3. import java.security.KeyStore;  
    4. import java.security.PrivateKey;  
    5. import java.security.Security;  
    6. import java.security.cert.X509Certificate;  
    7. import java.util.Enumeration;  
    8. import com.cfca.toolkit.*;  
    9.   
    10. public class TestSign {  
    11.   
    12.     /** 
    13.      * @param args 
    14.      */  
    15.     public static void main(String[] args) {  
    16.         // TODO Auto-generated method stub  
    17.         try{  
    18.             TestSign ts=new TestSign();;  
    19.             String msg="test string !!!!!!";  
    20.             System.out.println("簽名前數據:"+msg);  
    21.             String signedMsg=ts.signData(msg);  
    22.             System.out.println("簽名后數據:"+signedMsg);           
    23.             String checkedMsg=ts.checkSign(signedMsg);  
    24.             System.out.println("驗證簽名后數據:"+checkedMsg);  
    25.         }catch(Exception e){  
    26.             e.printStackTrace();  
    27.         }  
    28.   
    29.     }  
    30.           
    31.     public String signData(String msg) throws Exception{  
    32.         Castle.iniFilePath = "D:\\java\\stf\\castle_client.ini";  
    33.         Castle castle=new Castle();  
    34.         castle.initCertAppContext();  
    35.         return castle.signData(msg);  
    36.     }  
    37.       
    38.     public String checkSign(String msg) throws Exception{  
    39.         Castle.iniFilePath = "D:\\java\\stf\\castle.ini";  
    40.         Castle castle=new Castle();  
    41. //      castle.initCertAppContext();  
    42.         System.out.println("簽名者DN:"+castle.getDN(castle.getCertificate(msg)));  
    43.         return castle.verifySignedData(msg);  
    44.     }  
    45.       
    46. }  



    二、編碼方式 
    配置方式稍顯麻煩,編碼方式無非在程序中指定provider 

    悲劇:cfca證書工具包中指定trustkeystore只能是上述配置的位于jdk目錄的cacerts,不能放在其他地方 


    Java代碼  收藏代碼
    1.     //指定truststore(但經過測試,僅用客戶端證書簽名,用服務器端證書驗證簽名不需要配置truststore)  
    2.  //驗證簽名不需要配置trustCA,但調用cfca工具包的驗證證書命令:verifyCertificate,就需要配置信任CA  
    3. //      System.setProperty("javax.net.ssl.trustStore","D:\\java\\stf\\cacerts");     
    4. //      System.setProperty("javax.net.ssl.trustStorePassword","changeit");    
    5.     //指定provider  
    6.         Security.addProvider(new BouncyCastleProvider());  


    Java代碼  收藏代碼
    1. import java.io.File;  
    2. import java.io.FileInputStream;  
    3. import java.security.KeyStore;  
    4. import java.security.PrivateKey;  
    5. import java.security.Security;  
    6. import java.security.cert.X509Certificate;  
    7. import java.util.Enumeration;  
    8. import com.cfca.toolkit.*;  
    9.   
    10. import org.bouncycastle.jce.provider.BouncyCastleProvider;  
    11.   
    12. public class TestSign {  
    13.   
    14.     /** 
    15.      * @param args 
    16.      */  
    17.     public static void main(String[] args) {  
    18.         // TODO Auto-generated method stub  
    19.         try{  
    20.             TestSign ts=new TestSign();  
    21.             String msg="test string?。。。。。。。?!";  
    22.             System.out.println("簽名前數據:"+msg);  
    23.             String signedMsg=ts.signData(msg);  
    24.             System.out.println("簽名后數據:"+signedMsg);           
    25.             String checkedMsg=ts.checkSign(signedMsg);  
    26.             System.out.println("驗證簽名后數據:"+checkedMsg);  
    27.         }catch(Exception e){  
    28.             e.printStackTrace();  
    29.         }  
    30.   
    31.     }  
    32.       
    33.     public TestSign(){  
    34.     //指定truststore(但經過測試,僅用客戶端證書簽名,用服務器端證書驗證簽名不需要配置truststore)  
    35.  //驗證簽名不需要配置trustCA,但調用cfca工具包的驗證證書命令:verifyCertificate,就需要配置信任CA  
    36. //      System.setProperty("javax.net.ssl.trustStore","D:\\java\\stf\\cacerts");     
    37. //      System.setProperty("javax.net.ssl.trustStorePassword","changeit");    
    38.     //指定provider  
    39.         Security.addProvider(new BouncyCastleProvider());  
    40.           
    41.     }  
    42.       
    43.     public String signData(String msg) throws Exception{  
    44.         Castle.iniFilePath = "D:\\java\\stf\\castle.ini";  
    45.         Castle castle=new Castle();  
    46.         castle.initCertAppContext();  
    47.         return castle.signData(msg);  
    48.     }  
    49.       
    50.     public String checkSign(String msg) throws Exception{  
    51.         Castle.iniFilePath = "D:\\java\\stf\\castle_client.ini";  
    52.         Castle castle=new Castle();  
    53. //      castle.initCertAppContext();  
    54.         System.out.println("簽名者DN:"+castle.getDN(castle.getCertificate(msg)));  
    55.         return castle.verifySignedData(msg);  
    56.     }  
    57.   
    58. }  


    posted on 2011-11-08 18:31 weesun一米陽光 閱讀(3912) 評論(1)  編輯  收藏

    評論

    # re: cfca證書工具包使用指南【轉】 2016-05-06 02:15
    阿斯頓撒旦  回復  更多評論
      


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: av免费不卡国产观看| www.亚洲精品| 亚洲AV无码精品国产成人| 亚洲最大av无码网址| 91短视频免费在线观看| 亚洲av永久无码精品秋霞电影秋| 亚洲精品无码乱码成人| 国产va免费精品观看精品| 女人裸身j部免费视频无遮挡| 亚洲天堂久久精品| 国产传媒在线观看视频免费观看| 国产免费一区二区三区不卡| 亚洲精品第一综合99久久| 亚洲国产91在线| 亚洲av片一区二区三区| 99热在线免费播放| 日韩精品亚洲专区在线影视| 亚洲精品高清国产一久久| 国产成人高清精品免费鸭子| 最近中文字幕免费完整| 美女隐私免费视频看| 久久亚洲中文字幕精品有坂深雪 | 4455永久在线观免费看| 人人鲁免费播放视频人人香蕉| 亚洲国产成AV人天堂无码| 在线观看亚洲av每日更新| 日韩a级毛片免费视频| 天天影院成人免费观看| 免费无码又爽又刺激网站 | **俄罗斯毛片免费| 久久久久久久久久免免费精品| 久久亚洲精品无码av| 亚洲乱码一二三四区国产| 亚洲AV无码乱码国产麻豆| 久久久久亚洲AV成人网人人网站| 女人18毛片水真多免费播放| 久久福利资源网站免费看| 久久久久久AV无码免费网站下载 | 亚洲日韩国产欧美一区二区三区| 精品亚洲麻豆1区2区3区| 国产亚洲一区二区手机在线观看 |