posts - 72, comments - 66, trackbacks - 0, articles - 0

          有關(guān)強(qiáng)大的capicom的應(yīng)用

          Posted on 2008-07-09 23:20 Fingki.li 閱讀(3503) 評(píng)論(7)  編輯  收藏 所屬分類(lèi): About security
          最近和capicom親密接觸了一下,感覺(jué)到它的強(qiáng)大,記錄以備后查.

          capicom是一個(gè)對(duì)windows來(lái)講非常重要的CryptoAPI.
          通過(guò)capicom你可以在你的應(yīng)用中集成Public Key Infrastructure (PKI)功能:獲取證書(shū)庫(kù),利用服務(wù)器證書(shū)簽名,加密數(shù)據(jù).
          通過(guò)vbscript你可以輕松的調(diào)用它,當(dāng)然,前提是你已經(jīng)安裝了capicom.dll.
          注冊(cè)capicom.dll,打開(kāi)cmd,轉(zhuǎn)到capicom.dll目錄下,執(zhí)行:regsvr32 capicom.dll.(當(dāng)然你也可以自己做個(gè).msi來(lái)安裝)
          之后你就可以用各種腳本調(diào)用它的強(qiáng)大功能了
          以vbscript為例:
          拿到當(dāng)前用戶(hù)的數(shù)字證書(shū)
          Const CAPICOM_MY_STORE = "My"
          Const CAPICOM_CURRENT_USER_STORE  = 2
          Const CAPICOM_STORE_OPEN_READ_ONLY = 0
          Dim oCert, oStore
          Set oStore = CreateObject ("CAPICOM.Store")
          if Err.Number <> 0 Then
             wscript.echo "CAPICOM NOT detected"
             Wscript.Quit(1)
          End if
          oStore.Open CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_READ_ONLY
          For Each oCert in oStore.Certificates
             WScript.Echo "  Subject Name: " & oCert.SubjectName
                  WScript.Echo "  Issuer Name: " & oCert.IssuerName
                  WScript.Echo "  SHA-1 Thumbprint: " & oCert.Thumbprint
                  WScript.Echo "  Serial Number: " & oCert.SerialNumber
                  WScript.Echo "  Version: " & oCert.Version
                  WScript.Echo "  Valid From: " & oCert.ValidFromDate
                  WScript.Echo "  Valid To: " & oCert.ValidToDate
          Next
          上面這段代碼就是得到了當(dāng)前用戶(hù)的所有數(shù)字證書(shū).
          當(dāng)然你也可以得當(dāng)前機(jī)器上的,AD上的等.
          store = CreateObject ("CAPICOM.Store")將返回一個(gè)證書(shū)庫(kù).
          可利用這個(gè)store的open()方法得到相應(yīng)證書(shū)庫(kù)及其中的證書(shū).
          .open ()語(yǔ)法為:
          .open(StoreLocationStoreName , OpenMode)
          StoreLocation :

              CAPICOM_ACTIVE_DIRECTORY_USER_STORE 3 得到AD上已經(jīng)發(fā)布的證書(shū)
              CAPICOM_CURRENT_USER_STORE 2 得到當(dāng)前用戶(hù)的證書(shū)
              CAPICOM_LOCAL_MACHINE_STORE 1 得到本地機(jī)器上的證書(shū)
              CAPICOM_MEMORY_STORE 0 得到內(nèi)存中的證書(shū)
          StoreName :
              CAPICOM_MY_STORE "MY" 得到當(dāng)前用戶(hù)證書(shū)與CAPICOM_CURRENT_USER_STORE配合使用
              "CN=your user name on domain" 得到指定用戶(hù)的證書(shū),一般與CAPICOM_ACTIVE_DIRECTORY_USER_STORE配合使用.
          OpenMode:    
              CAPICOM_STORE_OPEN_READ_ONLY 0 只讀方法

          經(jīng)常易出錯(cuò)的地方是:以上這些常量在vbscript中并沒(méi)被預(yù)定義,使用前要自己定義一下.其值就是后面相應(yīng)的數(shù)字.
          之前我就是以為這此常量是VBS預(yù)定義了,所以直接用,導(dǎo)致操作不成功,浪費(fèi)了大量時(shí)間去找原因.
          當(dāng)然,你也可以直接用相應(yīng)數(shù)字代替這此常量.

          了解更多請(qǐng)參考:
          http://msdn.microsoft.com/en-us/library/aa388130.aspx
          http://207.46.196.114/windowsserver/en/library/8f918fdc-9841-48f9-a46d-28232742239a1033.mspx?mfr=true

          Feedback

          # re: 有關(guān)強(qiáng)大的capicom的應(yīng)用  回復(fù)  更多評(píng)論   

          2008-09-23 09:51 by guogb
          為什么運(yùn)行這個(gè)代碼頁(yè)面是空白呢?

          # re: 有關(guān)強(qiáng)大的capicom的應(yīng)用  回復(fù)  更多評(píng)論   

          2008-09-23 10:41 by guogb
          證書(shū)已經(jīng)導(dǎo)入了。

          # re: 有關(guān)強(qiáng)大的capicom的應(yīng)用[未登錄](méi)  回復(fù)  更多評(píng)論   

          2008-09-25 14:17 by Fingki.li
          @guogb
          運(yùn)行vbs腳本文件

          # re: 有關(guān)強(qiáng)大的capicom的應(yīng)用  回復(fù)  更多評(píng)論   

          2008-09-28 09:46 by guogb
          無(wú)法讀取MY里的證書(shū) CA里的可以讀到 。我用ASP寫(xiě)的

          # re: 有關(guān)強(qiáng)大的capicom的應(yīng)用[未登錄](méi)  回復(fù)  更多評(píng)論   

          2008-10-20 16:10 by Fingki.li
          @guogb
          檢查一下用到的常量值是否都預(yù)設(shè)置了。

          # re: 有關(guān)強(qiáng)大的capicom的應(yīng)用  回復(fù)  更多評(píng)論   

          2008-12-04 13:52 by 水水
          我的證書(shū)都存放在USBKEY里,如果同時(shí)需要使用兩個(gè),一個(gè)是登錄進(jìn)去的用戶(hù),操作時(shí)需要另一個(gè)用戶(hù)用KEY里的證書(shū)進(jìn)行授權(quán),應(yīng)該怎么做?這時(shí)默認(rèn)的就是第一個(gè)證書(shū),不再出現(xiàn)彈出選擇證書(shū)的窗口了.
          先謝謝你,我的頭都大了.

          # re: 有關(guān)強(qiáng)大的capicom的應(yīng)用  回復(fù)  更多評(píng)論   

          2008-12-12 16:39 by Fingki.li
          @水水
          在應(yīng)用中完全可以讀出指定證書(shū)庫(kù)中的所有證書(shū),然后應(yīng)用。并且完全可以在你的應(yīng)用軟件中加入重新導(dǎo)入證書(shū)功能。
          主站蜘蛛池模板: 潮州市| 普陀区| 建瓯市| 衡水市| 高雄县| 海林市| 紫金县| 咸阳市| 安达市| 长子县| 刚察县| 永平县| 汝南县| 武夷山市| 临泽县| 同仁县| 通山县| 延津县| 灵台县| 龙门县| 新河县| 峨边| 新民市| 正阳县| 唐海县| 桦川县| 辉县市| 吴旗县| 宜黄县| 广东省| 长阳| 肇东市| 金寨县| 许昌县| 桂东县| 新野县| 沧州市| 宝清县| 清水河县| 米泉市| 墨竹工卡县|