HOW TO:建立開發時要使用的暫時憑證
當使用 Windows Communication Foundation (WCF) 開發安全的服務或用戶端時,常常必須提供要用來做為認證的 X.509 憑證。 憑證通常是憑證鏈結的一部分,在電腦的 [受信任的根憑證授權單位] 存放區中有根授權。 具有憑證鏈結可讓您設定一組憑證的範圍,其中根授權通常來自您的組織或企業單位。 如果要在開發期間進行模擬,您可以建立兩種憑證以滿足安全性需求。 第一種是放在 [受信任的根憑證授權單位] 存放區中的自我簽署憑證,而第二種憑證是從第一種建立的,並放在個人存放區或本機位置,或目前使用者位置的個人存放區。 本主題將逐步帶領您使用由 .NET Framework SDK 所提供的Certificate Creation Tool (MakeCert.exe),來建立這兩種憑證。
注意: |
---|
憑證建立工具所產生的憑證僅針對測試用途提供。 當部署服務或用戶端時,請確定使用由憑證授權單位所提供的適當憑證。 這可能是來自您組織中的 Windows Server 2003 憑證伺服器或協力廠商。 根據預設,Certificate Creation Tool (MakeCert.exe) 會建立根授權稱為「根代理者」的憑證。 由於「根代理者」不是在 [受信任的根憑證授權單位] 存放區中,因此會讓這些憑證變得不安全。 建立位於 [受信任的根憑證授權單位] 存放區中的自我簽署憑證,可讓您建立一個更能夠模擬您開發環境的開發環境。 |
如需詳細資訊建立及使用憑證的詳細資訊,請參閱使用憑證。如需詳細資訊使用憑證做為認證的詳細資訊,請參閱確保服務與用戶端的安全。 如需有關使用 Microsoft Authenticode 技術的教學課程,請參閱 Authenticode 概觀與教學課程 (英文)。
建立自我簽署根授權憑證及匯出私密金鑰
請使用 MakeCert.exe 工具搭配下列參數:
-n subjectName。 指定主體名稱。 慣例是使用 "CN = " 做為主體名稱的前置詞,代表「一般名稱」。
-r。 指定憑證為自我簽署的。
-sv privateKeyFile。 指定含有私密金鑰容器的檔案。
例如,下列命令會建立主體名稱為 "CN=TempCA" 的自我簽署憑證。
makecert -n "CN=TempCA" -r -sv TempCA.pvk TempCA.cer
您會收到提供密碼以保護私密金鑰的提示。 當建立由這個根憑證簽署的憑證時,需要這個密碼。
建立由根授權憑證簽署的新憑證
請使用 MakeCert.exe 工具搭配下列參數:
-sk subjectKey。 主體的金鑰容器的位置,其中包含私密金鑰。 如果金鑰容器不存在,便會建立一個。 如果 -sk 和 -sv 選項均未使用,根據預設,便會建立稱為 JoeSoft 的金鑰容器。
-n subjectName。 指定主體名稱。 慣例是使用 "CN = " 做為主體名稱的前置詞,代表「一般名稱」。
-iv issuerKeyFile。 指定簽發者的私密金鑰檔。
-ic issuerCertFile。 指定簽發者的憑證的位置。
例如,下列命令會使用簽發者的私密金鑰,建立由主體名稱為
"CN=SignedByCA"
的TempCA
根授權憑證簽署的憑證。makecert -sk SignedByCA -iv TempCA.pvk -n "CN=SignedByCA" -ic TempCA.cer SignedByCA.cer -sr currentuser -ss My
在受信任的根憑證授權單位存放區中安裝憑證
在建立自我簽署憑證之後,您就可以將它安裝在 [受信任的根憑證授權單位] 存放區中。 此時任何使用憑證簽署的憑證都受到電腦的信任。 因此,當您不再需要憑證時,請立刻從存放區中將其刪除。 當您刪除這個根授權憑證時,使用該憑證簽署的所有其他憑證都會變成未經授權的。 根授權憑證只是一種機制,可依需要設定一組憑證的範圍。 例如,在對等應用程式中,通常不需要根授權,因為您只是藉由個體提供的憑證而信任其身分識別。
在受信任的根憑證授權單位中安裝自我簽署憑證
請開啟憑證嵌入式管理單元。 如需詳細資訊,請參閱 HOW TO:使用 MMC 嵌入式管理單元來檢視憑證.
開啟資料夾以儲存憑證,可以是 [本機電腦] 或 [目前使用者]。
開啟 [受信任的根憑證授權單位] 資料夾。
用滑鼠右鍵依序按一下 [憑證] 資料夾、[所有工作] 和 [匯入]。
請依照螢幕上的精靈指示,將 TempCa.cer 匯入存放區中。
搭配 WCF 使用憑證
設定暫時憑證之後,您可以用它來開發可將憑證指定為用戶端認證類型的 WCF 方案。 例如,下列 XML 組態會指定訊息安全性,而且將憑證指定為用戶端認證類型。
若要將憑證指定為用戶端認證類型
在服務的組態檔中,使用下列 XML 將安全性模式設定為訊息,而且將用戶端認證類型設定為憑證。
<bindings> <wsHttpBinding> <binding name="CertificateForClient"> <security> <message clientCredentialType="Certificate" /> </security> </binding> </wsHttpBinding> </bindings>
在用戶端的組態檔中,使用下列 XML 指定憑證位於使用者的存放區,而且可藉由在 SubjectName 欄位中搜尋值 "CohoWinery" 找到憑證。
<behaviors>
<endpointBehaviors>
<behavior name="CertForClient">
<clientCredentials>
<clientCertificate findValue="CohoWinery" x509FindType="FindBySubjectName" />
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
如需在 WCF 中使用憑證的詳細資訊,請參閱使用憑證。
安全性
請用滑鼠右鍵按一下憑證,然後按一下 [刪除],以確定從 [受信任的根憑證授權單位] 和 [個人] 資料夾中刪除暫時的根授權憑證。