證書建立工具生成僅用於測試目的的 X.509 證書。 它建立用於數字簽名的公鑰和私鑰對,並將其存儲在證書文件中。 此工具還將密鑰對與指定發行者的名稱相關聯,並建立一個 X.509 證書,該證書將用戶指定的名稱綁定到密鑰對的公共部分。git
說明 |
---|
有關 X.509 證書的概述,請參閱 使用證書。web |
Makecert.exe 包含基本選項和擴展選項。 基本選項是最經常使用於建立證書的選項。 擴展選項提供更多的靈活性。算法
必定不要將此工具生成的證書私鑰存儲在 .snk 文件中。 若是須要存儲私鑰,則應使用密鑰容器。 關於如何在密鑰容器中存儲私鑰的更多信息,請參見 如何:將非對稱密鑰存儲在密鑰容器中。安全
警告 |
---|
應使用證書存儲區來安全地存儲證書。此工具使用的 .snk 文件以不受保護的方式存儲私鑰。建立或導入 .snk 文件時,在使用期間應注意保證其安全,並在使用後將其移除。服務器 |
安裝 Visual Studio 和 Windows SDK 時會自動安裝此工具。 要運行工具,咱們建議您使用 Visual Studio 命令提示符或 Windows SDK 命令提示符(也稱 CMD Shell)。 您可使用這些實用程序輕鬆運行工具,而不須要導航到安裝文件夾。 有關詳細信息,請參閱 Visual Studio 和 Windows SDK 命令提示。網絡
-
若是您的計算機上已安裝了 Visual Studio:在任務欄上依次單擊 Start、All Programs、Visual Studio、Visual Studio Tools、Visual Studio Command Prompt。app
- 或 -ide
若是您的計算機上已安裝了 Windows SDK:在任務欄上依次單擊 Start、All Programs、Windows SDK 文件夾和 Command Prompt(或CMD Shell)。工具
-
在命令提示處,鍵入下列命令:測試
makecert [options] outputCertificateFile
參數 |
描述 |
---|---|
outputCertificateFile |
測試 X.509 證書要寫入的 .cer 文件的名稱。 |
選項 |
描述 |
---|---|
-n name |
指定主題的證書名稱。 此名稱必須符合 X.500 標準。 最簡單的方法是在雙引號中指定此名稱,並加上前綴 CN=;例如,-n "CN=myName"。 |
-pe |
將所生成的私鑰標記爲可導出。這樣可將私鑰包括在證書中。 |
-sk keyname |
指定主題的密鑰容器位置,該位置包含私鑰。 若是密鑰容器不存在,系統將建立一個。 |
-sr location |
指定主題的證書存儲位置。 location 能夠爲 currentuser(默認)或 localmachine。 |
-ss store |
指定主題的證書存儲名稱,輸出證書即存儲在那裏。 有關在本地系統發現的可顯示全部標準證書存儲區名稱的示例,請參閱 X509Store.Name 屬性。 |
-# number |
指定從 1 到 2,147,483,647 的序列號。 默認值是由 Makecert.exe 生成的惟一值。 |
-$ authority |
指定證書的簽名權限,必須設置爲 commercial (對於商業軟件發行者使用的證書)或 individual(對於我的軟件發行者使用的證書)。 |
-? |
顯示此工具的命令語法和基本選項列表。 |
-! |
顯示此工具的命令語法和擴展選項列表。 |
選項 |
描述 |
---|---|
-a algorithm |
指定簽名算法。 algorithm 必須是 md5、sha1(默認值)、sha256、sha384 或 sha512。 |
-b mm/dd/yyyy |
指定有效期的開始時間。 當前日期的默認值。 |
-crl |
生成證書重定位列表 (CRL) 而不是證書。 |
-cy certType |
指定證書類型。 有效值是 end(對於最終實體)和 authority (對於證書頒發機構)。 |
-e mm/dd/yyyy |
指定有效期的結束時間。 默認爲 12/31/2039 11:59:59 GMT。 |
-eku oid[,oid…] |
將用逗號分隔的加強型密鑰用法對象標識符 (OID) 列表插入到證書中。 |
-h number |
指定此證書下面的樹的最大高度。 |
-ic file |
指定頒發者的證書文件。 |
-ik keyName |
指定頒發者的密鑰容器名稱。 |
-iky keytype |
指定發佈者的密鑰類型,必須是下列之一:signature(其中指出密鑰用於數字簽名),exchange(其中指出密鑰用於密鑰加密和密鑰交換),或一個整數,表示提供程序類型。 默認狀況下,可傳入1 表示交換密鑰,或2 表示簽名密鑰。 |
-in name |
指定頒發者的證書公用名稱。 |
-ip provider |
指定頒發者的 CryptoAPI 提供程序名稱。 關於 CryptoAPI 提供程序名稱的信息,請參見 -sp。 |
-ir location |
指定頒發者的證書存儲區的位置。location 能夠是 currentuser(默認)或 localmachine。 |
-is store |
指定頒發者的證書存儲名稱。 |
-iv pvkFile |
指定頒發者的 .pvk 私鑰文件。 |
-iy type |
指定頒發者的 CryptoAPI 提供程序類型。 關於 CryptoAPI 提供程序類型的信息,請參見 -sy 選項。 |
-l link |
到策略信息的連接(例如,一個 URL)。 |
-len number |
指定生成的密鑰長度(以位爲單位)。 |
-m number |
以月爲單位指定證書有效期的持續時間。 |
-nscp |
包括 Netscape 客戶端身份驗證擴展。 |
-r |
建立自簽署證書。 |
-sc 文件 |
指定主題的證書文件。 |
-sky keytype |
指定主題密鑰類型,必須是下列之一:signature(其中指出密鑰用於數字簽名),exchange(其中指出密鑰用於密鑰加密和密鑰交換),或一個整數,表示提供程序類型。默認狀況下,可傳入1 表示交換密鑰,或2 表示簽名密鑰。 |
-sp provider |
指定主題的 CryptoAPI 提供程序名稱,該名稱必須在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider 的註冊表子項中已有定義。 若是 -sp 和 -sy 都出現, CryptoAPI 提供程序的類型應對應於提供程序的子項的 Type 值。 |
-sv pvkFile |
指定主題的 .pvk 私鑰文件。 若是該文件不存在,系統將建立一個。 |
-sy type |
指定主題的 CryptoAPI 提供程序類型,該類型必須在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider 的註冊表子項中已有定義。 若是 -sy 和 -sp 都出現, CryptoAPI 提供程序的類型應對應於提供程序的子項的 Name 值。 |
-tbs |
指定需簽名的證書或 CRL 文件。 |
下面的命令建立了一個由默認測試根頒發的測試證書並將其寫入 testCert.cer。
makecert testCert.cer
下面的命令建立了一個由默認測試根頒發的證書並將其保存到證書存儲區。
makecert -ss testCertStore
下面的命令建立了一個由默認測試根頒發的證書並將其保存到證書存儲區。它將證書顯式地放入 currentuser 存儲區。
makecert -ss testCertStore -sr currentuser
下面的命令使用主題的密鑰容器和證書主題的 X.500 名稱建立一個測試證書,並將其寫入 textXYZ.cer。
makecert -sk XYZ -n "CN=XYZ Company" testXYZ.cer
下面的命令建立了一個由默認測試根頒發的證書和一個 .pvk 文件,並將此證書同時輸出到存儲區和該文件。
makecert -sv testCert.pvk -ss testCertStore testCert.cer
下面的命令建立了一個由默認測試根頒發的證書和一個密鑰容器,並將此證書同時輸出到存儲區和該文件。
makecert -sk myTestKey -ss testCertStore testCert.cer
下面的命令建立一個自我簽署的證書,指定使用者名稱爲「CN=XYZ Company」,指定有效期的起始和結束時間,將密鑰放入 my 存儲區,指定並交換密鑰,而且使私鑰可導出。
makecert -r -pe -n "CN=XYZ Company" -b 01/01/2005 -e 01/01/2010 -sky exchange -ss my
如下命令建立自簽名證書,該證書能夠用於測試 web 應用程序,這個程序使用的是 URL 爲 www.example.com web 的網絡服務器上的「安全套接字層」(SSL)。 由 -eku 選項定義的 OID 標識該證書做爲 SSL 服務器證書。 證書存儲在 my 存儲,並在計算機(而非用戶)級別可用。 證書專用密鑰可用導出,證書有效期從 2010 年 5 月 10 日至 2011 年 12 月 22 日。
Makecert -r -pe -n CN="www.example.com" -b 05/10/2010 -e 12/22/2011 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localmachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12
下面的命令建立了一些證書並將它們保存到存儲區。第一個命令使用默認測試根建立了一個證書並將其保存到存儲區。 第二個命令使用新建立的證書建立了另外一個證書,並將第二個證書保存到另外一個存儲區。
makecert -sk myTestKey -ss testCertStore makecert -is testCertStore -ss anotherTestStore
下面的命令建立了一些證書並將它們保存到存儲區。 第一個命令將證書保存到 my 存儲區。 第二個命令使用新建立的證書建立了另外一個證書。 由於 my 存儲區中存在多個證書,因此第二個命令使用公用名稱來標識第一個證書。
makecert -sk myTestKey -n "CN=XXZZYY" -ss my makecert -is my -in "XXZZYY" -ss anotherTestStore
下面的命令建立了一些證書並將它們保存到文件和存儲區。第一個命令使用默認測試根建立了一個證書並將其保存到 my 存儲區和一個文件。 第二個命令使用新建立的testCert.cer 證書建立了另外一個證書。由於 my 存儲區中存在多個證書,因此第二個命令使用證書文件名來惟一標識第一個證書。
makecert -sk myTestKey -n "CN=XXZZYY" -ss my testCert.cer makecert -is my -ic testCert.cer -ss anotherTestStore地址:http://msdn.microsoft.com/zh-cn/library/bfsktky3.aspx