個功能其實并不常用,一般開發較少涉及到證書,不過,簡單了解一下還是有必要的。
先來說說制作測試證書的方法,這里老周講兩種方法,可以生成用于測試的.pfx文件。
產生證書,大家都知道有個makecert工具。好,我們先用這個工具來生成一個證書,并存放到當前用戶的證書存儲中。打開VS的開發人員命令提示符,然后輸入:
makecert -n "CN=中國好男人" -pe -sr CurrentUser -ss My -b 01/01/2016 -e 12/31/2018
-n 表示證書的標題名字,在系統的證書管理單元窗口中,它會顯示在“頒發給”一列中,即證書是頒給誰的。在本例中,該榮譽證書主要頒發給中國好男人。
-pe 參數一定要加上,它表示我們能否導出證書的密鑰(私鑰),因為稍后我們要將證書導出為.pfx。
-sr 表示證書是作為用戶證書還是本臺計算機的證書。用戶證書即CurrentUser,只有當前登錄的用戶可見;如果希望所有用戶都可見,可以用LocalMachine,即本臺計算機范圍的證書。
-ss 表示證書存儲目錄,MY表示證書將安裝到“個人”目錄下。
-b -e 表示證書的有效期,這個不用多說。
命令執行完后。打開用戶證書管理窗口,展開個人分支,就會看到剛剛創建的證書。
接下來就好辦了,直接導出這個證書即可。在導出向導的第二頁,記得選擇“導出私鑰”。
因為.pfx文件是可以包含私鑰的。此時,進入下一步,會自動選擇個人信息交換。
下面的幾個復選項,你可按實際情況來決定,然后下一步,在安全選項頁中,勾選密碼,然后自己輸入密碼。
密碼可以自己決定,比如我輸入弱智密碼1234。
接著選擇.pfx文件的存放路徑。
隨后一路下一步,直到完成即可。
上面的方法是通過證書管理窗口來完成的,下面我們再看另一種方法,這種方法是完全用命令來完成的。除了必須的 makecert 工具外,還需要用到 cert2spc 和 pvk2pfx 這兩個家伙。從名字上就可以知道它們是干嗎的,cert2spc就是把證書文件(.cer)轉化為spc文件,而pvk2pfx是將結合私鑰文件和spc文件,最終輸出.pfx文件。
第1步,產生證書和私鑰文件。輸入以下命令:
makecert -n "CN=中國好閨女" -pe -b 01/01/2016 -e 12/31/2017 -sv testkey.pvk test.cer
前面幾個參數剛才說過了,-sv 表示密鑰文件的名字,后綴名一般為.pvk,即私鑰,最后的參數是證書的文件名,后綴是.cer。本命令是直接生成文件,而不是在證書存儲區中。
執行后,首先彈出一個輸入框,讓你為pvk文件創建密碼,比如,我依舊用弱智密碼1234。
點OK確定后,會再次彈出一個輸入框,這一次是要你輸入你剛剛創建的密碼,比如1234。
確定后,若無意外,證書和私鑰文件已經生成,如下圖所示。
確定這兩個文件成功生成后,進入下一步。
第2步,把cer轉為spc,輸入命令:
第一個參數是待轉的cer文件(證書),第二個參數是輸出的spc文件。
命令執行后,會多了個test.spc文件。
第3步,利用上面生成的spc和pvk文件,生成pfx文件,輸入命令:
pvk2pfx -pvk testkey.pvk -pi 1234 -spc test.spc -pfx test.pfx -po 123456
-pvk 是剛創建的pvk文件,-pi是pvk文件的密碼,剛剛我設置了是1234;
-spc 是剛剛生成的spc文件的名字,-pfx是輸出的pfx文件名,-po是新pfx的密碼,我改為123456。
命令執行后,會看到多了個.pfx文件。
大功告成,現在,pfx文件已經有了,接下就是在UWP應用中導入證書了。
在干活之前,我們要知道,系統為每個APP創建一個獨立的證書存儲區,在應用安裝時創建,在應用卸載時被刪除。因此,每個應用的證書只能自己使用,不能訪問其他應用的證書。如果希望讓其他應用也能使用證書,就要用“共享用戶證書”,被共享的證書會導入到當前系統的用戶證書存儲區中,所以,其他應用都可以訪問,當然了,為了防止別有用心的人亂來,應用只有導入和讀取的權限,不能寫入和刪除證書。
在Windows.Security.Cryptography.Certificates命名空間下,公開了幾個與證書操作有關的類。經老周測試,不是所有的API都能用,有些API會發生異常,可能還沒有完全實現吧,具體得看今年“紅石”更新了,反正Win 10是不斷累積更新的,這個道理,8000年前我們的祖先就懂了。
CertificateEnrollmentManager 類公開了N版重載的ImportPfxDataAsync方法,就是支持從.pf文件導入證書。
但是,你得注一個事:如果直接調用 CertificateEnrollmentManager 類的方法,表明導入的證書是存放在應用的獨立存儲區中,只能自己使用。
如果調用的是 CertificateEnrollmentManager.UserCertificateEnrollmentManager 下面的方法,說明證書是導入到用戶存儲區中,可以與其他應用共享。
好,下面來看一段導入證書的代碼。
FileOpenPicker picker=new FileOpenPicker; picker.FileTypeFilter.Add(".pfx"); StorageFile pfxFile=await picker.PickSingleFileAsync; if (pfxFile !=null) { // 將證書內容轉為base64字符串 IBuffer buffer=await FileIO.ReadBufferAsync(pfxFile); string cerB64=CryptographicBuffer.EncodeToBase64String(buffer); // 密碼 string password=pwd.Password; // 導入證書 if (chkUserCert.IsChecked==true) { // 導入到當前用戶存儲 await CertificateEnrollmentManager.UserCertificateEnrollmentManager.ImportPfxDataAsync(cerB64, password, ExportOption.Exportable, KeyProtectionLevel.NoConsent, InstallOptions.DeleteExpired, "GoodBoy"); } else { // 導入到當前應用存儲 await CertificateEnrollmentManager.ImportPfxDataAsync(cerB64, password, ExportOption.Exportable, KeyProtectionLevel.ConsentOnly, InstallOptions.DeleteExpired, "GoodBoy"); } }
因為導入方法接收的是證書的base64字符串,所以打開.pfx文件后,要把它轉化為base64字符串。
ImportPfxDataAsync方法的第一個參數是證書文件的base64字符串,第二個參數是密碼,剛剛在使用pvk2pfx命令時,設置的密碼是123456。
ExportOption.Exportable表示私鑰可以導出,KeyProtectionLevel.NoConsent表示無需保護私鑰,如果使用其他值,在導入時會彈出一個對話框,讓用戶設置一個密碼來保護私鑰。
InstallOptions.DeleteExpired表示如果證書過期就刪除。
如果要共享用戶證書。請打開清單文件,切換到 功能 選項卡,然后勾選“共享用戶證書”。XML如下
<Capabilities> …… <uap:Capability Name="sharedUserCertificates" /> </Capabilities>
如果證書導入到當前用戶的證書區儲中,可以打開用戶證書管理窗口,展開“個人”分支,就會看到導入的證書。
好,今天的F話就講到這里了,天氣相當地熱,記得多喝水,少喝點有毒飲料。
許多用戶選擇Win10系統作為自己的計算機系統。使用計算機存儲一些自己的信息和計算機中的一些重要文件。這些東西非常私密,他們不能讓別人看到,所以他們已經應用于文件夾加密。重要的事情也是非常必要的。實際上,Win10系統配備了EFS加密功能,并使用此功能非常加密。
具體步驟:
1.第一步我們首先在左下角找到開始菜單以單擊,然后選擇運行菜單選項,最后在出現的對話框中輸入certmgr.msc,然后單擊“確定”以打開“證書管理”界面。
2.在出現的證書對話框中,我們需要依次雙擊展開證書 - 當前用戶→個人→證書選項,然后在右側的文件中,您可以使用您的用戶名名稱。
3,第三步,單擊鼠標右鍵單擊以選擇所有任務→導出命令,然后打開Cert Export向導對話框。
4.在向導期間,當私鑰將導出到證書時,將顯示私鑰,導出私鑰選項。
5,然后您可以設置證書的安全密碼。選擇已保存的文件名和文件路徑后,您可以順利地處理證書,然后您將在保存路徑上找到PFX作為PFX。 。
6.上述操作完成后,您可以添加加密文件備份。只需記住證書和密碼,單擊右鍵單擊證書,選擇“安裝證書”命令,可以輸入“證書導入向導”對話框,按默認狀態單擊按鈕,最后將完成證書的導入后輸入正確的密碼。
更多精彩教程盡在小白一鍵重裝系統官網