2013年7月30日 星期二

利用自然人憑證對檔案簽章

簽章的目的在防止檔案被篡改及確認檔案的發行者。
行政院國家資通安全會報技術服務中心為防止網頁漏洞,將逐步推動網頁應用程式不使用ActiveX計畫,而初步則先要求ActiveX取得數位簽章,以確保來源安全。
為了證明程式的來源,一般公司行號可以利用經濟部的工商憑證,或者向獨立的憑證公司購買憑證來對程式(或檔案)進行簽章,如果個人則可以利用自然人憑證來對自己開發的程式進行簽章。底下將介紹如何使用自然人憑證對自己開發的程式進行數位簽章。
一、預備動作:
(一)首先要安裝一台可以讀取自然人憑證的讀卡機(及驅動程式)
(二)到內政部憑證管理中心下載 HiCOS卡片管理工具:如下圖所示,在「文件下載」頁籤內之「檔案下載」項目中。
(三)安裝HiCOS卡片管理工具,安裝完成後,可以在開始功能表中看到「HiCOS PKI Smart Card」
註:1.如果沒有正確安裝卡片管理工具,則底下執行簽章時,將無法讀取自然人憑證內的憑證資料。
       2.上面的預備動作只需做一次就好,不用每次進行簽章都重新來遍!
二、利用 VS2008 的SignTool 來進行簽章
本篇並不是 SignTool 的教學,所以不會詳細介紹 SignTool的指令及用法,只選用最簡單的精靈模式來對 .dll 檔做簽章示範!
(一)由 VS2008 啟動 Visual Studio 2008 命令提示字元
(因我的環境是 Win7 64Bit ,所以我選用 Visual Studio 2008 x64 Win64 命令提示字元,請您依自身的環境啟用適當的提示字元)

(二)在命令提示字元內執行  「signtool signwizard」以啟動簽章精靈

(三)出現簽章精靈歡迎畫面後,請按「下一步」

(四)利用「瀏覽」找到要進行簽章的檔案,一次只能選用一個檔案
一般我們會對 *.exe, *.dll, *.ocx 做個簽章,或都對 *.cab 的包裝檔進行簽章
選定要簽章的檔案後,請按「下一步」

(五)簽署選項只要使用預設的「一般」即可

(六)出現簽署憑證畫面時,請按「從存放區選取
如果沒有成功安裝「HiCOS卡片管理工具」,會發現存放區中沒有自然人憑證資料可供選用。在自然人憑證選項中會出現兩組憑證,隨便選一項,但利用「檢視憑證」查看是否合適(見(七)),如果不合適再重選就好了!
因為我之前有做過簽章,所以存放區會有選用資訊(上圖),但並不表示已經內含憑證資料,所以如果自然人憑證沒有插到讀卡機時,會出現下圖的提示畫面,如果在執行(六)的步驟之前卡片已放入讀卡機,就不會出現這個提示畫面!
 

(七)當選用一組簽章憑證後,可利用「檢視憑證」鈕,查看憑證內容,要用來簽章檔案的憑證必須符合「確保軟體來自軟體發行者」這個使用目的。
當確認選用的憑證無誤後,就再按「下一步
註:自然人憑證內有二組 公-私 金鑰對,一組是用來加解密用,一組是用來簽章及驗證簽章用,必須選對使用目的

(八)資料描述的目的是要提供使用者詳細的資訊,以判斷是不是要接受這個檔案,這是一組選用的項目,不填也沒關係
如果是簽署ActiveX而供 IE 安裝使用時,在安裝之前會顯示相關內容供使用者閱覽!

(九)加上時間戳記,是指定網路上的時間伺服器提供日期時間資訊,對這次的簽章加入時間戳記,如果有加入時間戳記,緃使同一個簽章檔,在不同時間對同一個檔案進行簽章,其簽章壓碼也會不一樣!
不過這項不勾選也沒關係,如果有勾選,就要指定一個時間伺服器的網址。

(十)最後會出現相關資訊供您再確認,如果確認無誤,就大膽地按下「完成」吧!

(十一)按下「完成」後,Signtool 會去讀自然人憑證卡片上的資料,這時就會要求您輸入憑證的密碼!
這組密碼是自然人憑證的密碼,而不是要您去設定一組密碼哦! 不要隨便輸入!

(十二)正確輸入自然人憑證密碼,並按下「OK」,稍等一下下,就會跳出「數位簽章精靈執行成功」的畫面,恭喜! 您已經完成一個檔案的簽章了!

三、檢視已簽章的檔案之簽章內容
利用檔案總管在檔案上按滑鼠右鍵,然後選「內容」
接著切換到「數位簽章」的頁籤(要有經過數位簽章的檔案才會有此頁籤)
點一下簽章清單中的一組簽章,然後按「詳細資料」,再從數位簽章詳細資料視窗中選擇「檢視憑證」即可看到簽章的資訊!

附註:如果簽章是檔案時,在二之(六)簽署憑證時,就可以選擇憑證檔案,可是自然人憑證為了安全考量,金鑰是在卡片內部產生,而且依內政部宣稱,私鑰是不能從卡片匯出的! 所以要用自然人憑證簽章,一定要有讀卡機,每次簽章時,都必須讀取卡片上的憑證資訊!

9 則留言:

  1. 你好,我今天試著做,但瀏覽數位簽章時,發現 "撤銷狀態: 憑證已經撤銷。" ,請問可能是哪錯了?

    回覆刪除
    回覆
    1. 憑證被撤銷的情況可能是:(一)憑證已逾有效期限。(自然人憑證的有效期限是3年,可延長2年,故最長為5年) ;(二)使用者自行申請「遺失」或「損毀」(當重新申請新憑證時,前一張憑證就會被撤銷)。

      刪除
  2. 我也遇到跟樓上一樣的問題
    簽完之後出現 “憑證已被簽發者宣告撤銷”
    可是我有去政府那邊看我的憑證還有效,且我沒有申請遺失
    網路上資料有夠少,完全不知道怎麼處理....QQ

    回覆刪除
    回覆
    1. 嗯!我沒有碰過這個問題,無法給您答案,真的很抱歉!

      刪除
    2. 我也遇到相同的問題,神奇的是使用朋友舊的自然人憑證簽章就正常
      觀察出憑證明顯的差異在於 CRL Distribution Points
      舊卡:http://moica.nat.gov.tw/repository/MOICA/CRL2/***
      新卡:http://ocsp-moica.moi.gov.tw/crl/***

      刪除
    3. 那新卡的CRL Distribution Points有解嗎? 我也是會遇到憑證已被簽發者宣告撤銷

      刪除
    4. 我的憑證是2019申請的,CRL Distribution Point是 http://moica.nat.gov.tw/repository/MOICA/CRL2/CRL_0024.crl,並沒您遇到的問題,您可以將您的CRL的URL貼到瀏覽器,看能不能正常瀏覽,如果不行,就要找內政部憑證中心了

      刪除
  3. 回報一下,我的卡片是 2021/10 申請,也是有 "撤銷狀態: 憑證已經撤銷。" 的問題. 目前無解.

    回覆刪除