<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一米陽光 閱讀(3915) 評論(1)  編輯  收藏

    評論

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


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


    網站導航:
     
    主站蜘蛛池模板: 91短视频免费在线观看| 怡红院免费全部视频在线视频| 99在线在线视频免费视频观看| 久久亚洲国产精品五月天婷| 日韩亚洲人成在线综合| 国产精品无码一区二区三区免费 | 久久精品国产亚洲AV高清热 | 国产精品国产免费无码专区不卡| 久久久久se色偷偷亚洲精品av| 成人免费AA片在线观看| 亚洲五月综合缴情婷婷| 午夜无遮挡羞羞漫画免费| 国产亚洲视频在线| 国产aⅴ无码专区亚洲av麻豆 | 91免费国产自产地址入| 亚洲黄色免费网址| 成年轻人网站色免费看 | 大地影院MV在线观看视频免费| 亚洲国产精品嫩草影院在线观看| 久久aa毛片免费播放嗯啊| 亚洲中文字幕无码av在线| 天天看免费高清影视| 人人公开免费超级碰碰碰视频| 国产AV无码专区亚洲AWWW| 88av免费观看入口在线| 亚洲熟妇AV日韩熟妇在线| 亚洲精品国产电影| 无码人妻一区二区三区免费n鬼沢| 亚洲国产精品综合久久久| 日韩免费电影在线观看| 精品国产污污免费网站入口在线 | 亚洲国产欧美国产综合一区| www.亚洲精品.com| 免费国产99久久久香蕉| 亚洲国产日韩精品| 亚洲午夜日韩高清一区| 亚洲黄色免费在线观看| 国产亚洲精品美女2020久久| 亚洲色四在线视频观看| 日韩黄色免费观看| 免费日本一区二区|