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

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

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

    waysun一路陽光

    不輕易服輸,不輕言放棄.--心是夢的舞臺(tái),心有多大,舞臺(tái)有多大。踏踏實(shí)實(shí)做事,認(rèn)認(rèn)真真做人。

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

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

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

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

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





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

    一、配置方式(以jdk1.4為例) 
    1. 添加安全庫 
    前置條件:獲得/usr/java14目錄的寫權(quán)限 
    動(dòng)作: 
    要添加兩個(gè)安全jar文件:bcmail-jdk14-125.jar和bcprov-jdk14-125.jar 
    把這兩個(gè)jar放到/usr/java14/jre/lib/ext目錄下 
    修改這兩個(gè)jar包的權(quán)限: 
    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用具體的數(shù)字替換,如果文件中原有的security provider編號(hào)最大是4,則這里的N就用5,注意千萬不要與原有的security provider編號(hào)重復(fù)! 

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

    4. 將cfcaDigitalKitTest.jar、entbase.jar、entuser.jar、castle.ini放到classpath中,就可以調(diào)用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("簽名前數(shù)據(jù):"+msg);  
    21.             String signedMsg=ts.signData(msg);  
    22.             System.out.println("簽名后數(shù)據(jù):"+signedMsg);           
    23.             String checkedMsg=ts.checkSign(signedMsg);  
    24.             System.out.println("驗(yàn)證簽名后數(shù)據(jù):"+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(但經(jīng)過測試,僅用客戶端證書簽名,用服務(wù)器端證書驗(yàn)證簽名不需要配置truststore)  
    2.  //驗(yàn)證簽名不需要配置trustCA,但調(diào)用cfca工具包的驗(yàn)證證書命令: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("簽名前數(shù)據(jù):"+msg);  
    23.             String signedMsg=ts.signData(msg);  
    24.             System.out.println("簽名后數(shù)據(jù):"+signedMsg);           
    25.             String checkedMsg=ts.checkSign(signedMsg);  
    26.             System.out.println("驗(yàn)證簽名后數(shù)據(jù):"+checkedMsg);  
    27.         }catch(Exception e){  
    28.             e.printStackTrace();  
    29.         }  
    30.   
    31.     }  
    32.       
    33.     public TestSign(){  
    34.     //指定truststore(但經(jīng)過測試,僅用客戶端證書簽名,用服務(wù)器端證書驗(yàn)證簽名不需要配置truststore)  
    35.  //驗(yàn)證簽名不需要配置trustCA,但調(diào)用cfca工具包的驗(yàn)證證書命令: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證書工具包使用指南【轉(zhuǎn)】 2016-05-06 02:15
    阿斯頓撒旦  回復(fù)  更多評論
      


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 一级片在线免费看| 亚洲毛片无码专区亚洲乱| 国产一级理论免费版| 成人免费无码大片A毛片抽搐| 色播精品免费小视频| www视频免费看| 久久福利资源网站免费看| 久久久久久精品免费看SSS | 亚洲最大福利视频网站| 久久99国产亚洲精品观看| 亚洲AV成人无码久久精品老人| 亚洲国产精品无码中文字| 亚洲AV无码成人精品区蜜桃| 亚洲av激情无码专区在线播放 | 在线播放免费播放av片| 日韩免费一区二区三区| 免费国产一级特黄久久| 免费成人黄色大片| 国产亚洲精品资在线| 亚洲国产第一站精品蜜芽| 91亚洲国产成人精品下载| 亚洲一级在线观看| 亚洲熟妇无码av另类vr影视| 亚洲国产一区二区三区在线观看| 国产成人综合亚洲| 最新亚洲成av人免费看| 无码少妇精品一区二区免费动态 | 国产区图片区小说区亚洲区| 无码人妻一区二区三区免费视频 | 国产又黄又爽胸又大免费视频| 国产精品99精品久久免费| 97免费人妻无码视频| 国产在线ts人妖免费视频| 亚洲女同成人AⅤ人片在线观看| 亚洲AV无码专区国产乱码4SE| 亚洲成人福利在线观看| 亚洲av日韩av永久在线观看| 巨胸狂喷奶水视频www网站免费| 99精品一区二区免费视频| 国内一级一级毛片a免费| 综合亚洲伊人午夜网|