Makecert.exe (憑證建立工具)

更新:2011 年 4 月

憑證建立工具可以產生僅供測試用途的 X.509 憑證。 它建立數位簽章的公開和私密金鑰組 (Key Pair),並且將它儲存到憑證檔。 這個工具也以指定的發行者 (Publisher) 名稱與金鑰組產生關聯,並建立 X.509 憑證,其繫結使用者指定的名稱到金鑰組的共用部分。

Makecert.exe 包含基本和擴充選項。 基本選項是最常用來建立憑證。 而擴充選項提供更多的彈性。

這個工具所產生的憑證私密金鑰應該永遠都不會存放在 .snk 檔案中。 如果您需要儲存私密金鑰,您應該使用金鑰容器。 如需關於如何將私密金鑰儲存在金鑰容器中的詳細資訊,請參閱HOW TO:將對稱金鑰儲存在金鑰容器中.

注意

您應該使用憑證存放區,安全地存放憑證。這個工具所使用的 .snk 檔案會以未受保護的方式存放私密金鑰。當您建立或匯入 .snk 檔案後,在使用時應該要特別注意它的安全性,而且作業完畢時要將它移除。

這個工具會自動隨 Visual Studio 和 Windows SDK 一起安裝。 若要執行工具,建議您使用 Visual Studio 命令提示字元或 Windows SDK 命令提示字元。 這些公司可讓您輕鬆地執行工具,而不需瀏覽至安裝資料夾。 如需詳細資訊,請參閱Visual Studio 和 Windows SDK 命令提示字元

  • 如果您已經在電腦上安裝 Visual Studio:在工作列上,依序按一下 Start、All Programs、Visual Studio、Visual Studio Tools,然後按一下 Visual Studio Command Prompt。

    -或-

    如果您已經在電腦上安裝 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

指定主體的金鑰容器 (Container) 位置,這個位置包含私密金鑰。 如果金鑰容器不存在,它將會被建立。

-sr location

指定主體的憑證存放區位置。 位置 可以是 currentuser(預設) 或localmachine。

-ss store

指定主體的憑證存放區名稱,其儲存輸出憑證。

-# number

指定從 1 到 2,147,483,647 的一個序號。 預設値是由 Makecert.exe 所產生的唯一值。

-$ authority

指定憑證的簽署授權單位,它必須設定成 commercial (商業軟體發行者所用的憑證) 或 individual (個人軟體發行者所用的憑證)。

-?

顯示工具的命令語法和基本選項清單。

-!

顯示工具的命令語法和擴充選項清單。

擴充選項

選項

描述

-a 演算法

指定簽章演算法。 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 提供者 (Provider) 名稱。 如需關於 CryptoAPI 提供程式名稱的資訊,請參閱–sp選項。

-ir location

指定簽發者的憑證存放區位置。 位置 可以是 currentuser(預設) 或localmachine。

-is store

指定簽發者的憑證存放區名稱。

-iv pvkFile

指定簽發者的 .pvk 私密金鑰檔。

-iy type

指定簽發者的 CryptoAPI 提供者類型。 如需關於 CryptoAPI 提供程式類型的資訊,請參閱–sy選項。

-l link

連結至原則資訊 (例如,連結至 URL)。

-len number

指定所產生的金鑰長度,以位元為單位。

-m number

以月份指定憑證有效期間的時間。

-nscp

包含 Netscape 用戶端授權擴充。

-r

建立自動簽名的憑證。

-sc file

指定主體的憑證檔。

-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 Types 的登錄子機碼中定義此類型。 如果出現 –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

請參閱

參考

Cert2spc.exe (軟體發行者憑證測試工具)

Visual Studio 和 Windows SDK 命令提示字元

其他資源

.NET Framework 工具

變更記錄

日期

記錄

原因

2011 年 4 月

加入使用 Visual Studio 和 Windows SDK 命令提示字元的相關資訊。

資訊加強。

2010 年 5 月

大規模修訂。

客戶回函。