2013-02-18 51 views
4

如何獲取部署到我的工作者角色Trusted People商店的公鑰證書?如何將證書部署到Azure的受信任的人員存儲中?

我使用PeerTrust爲WCF(Azure中的自託管TCP服務):

var creds = new ServiceCredentials(); 
creds.ClientCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.PeerTrust; 

我知道如何引用證書都在我.csdef和代碼。但是,我不知道如何使用.cer文件(沒有私鑰)並實際將其加入到Azure中,以便它可以將其用於PeerTrust。在線門戶中的證書管理器僅允許您上傳.pfx文件(即帶有私鑰的證書)。

回答

3

我只是想,如果您可以通過使用System.Security.Cryptography.X509Certificates.X509StoreSystem.Security.Cryptography.X509Certificates.X509Certificates2開始您的角色時從代碼安裝CER。您可以使用「複製到輸出目錄=始終複製」將您的CER加入到您的項目中。

+0

這不會像我們將該項目部署到8個不同的地方那樣工作,所有8個需要不同的證書。不過,我可能能夠將它們從blob存儲中提取出來。安裝代碼是否明顯? (還沒有找到它,我現在正在響應) – Jaxidian 2013-02-19 12:58:42

+0

我認爲你可以從blob中檢索證書文件並從二進制文件構造x509certificate實例。 – 2013-02-19 14:22:05

+1

構建實例很簡單。但是,如何將其「部署」到「受信任的人」存儲中? – Jaxidian 2013-02-19 16:15:13

2

也許這並非總是如此,但目前可以做到這一點,而無需任何定製工作。只需編輯您的服務的.csdef(雲服務定義)文件包括以下 - 或者,如果使用Visual Studio,使用輔助角色的屬性面板:

<?xml version="1.0" encoding="utf-8"?> 
<ServiceDefinition name="MyService" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2013-10.2.2"> 
    <WorkerRole name="MyService.Backend" ... > 
    <Certificates> 
     <Certificate name="backend.example.com.selfsigned" storeLocation="LocalMachine" storeName="My" /> 
     <Certificate name="frontend.example.com.selfsigned" storeLocation="LocalMachine" storeName="TrustedPeople" /> 
    </Certificates> 
    <Endpoints> 
     <InternalEndpoint name="Internal" protocol="tcp" port="..." /> 
    </Endpoints> 
    ... 
    </WorkerRole> 
    <WebRole name="MyService.Frontend" ... > 
    <Sites> 
     <Site name="Web"> 
     <Bindings> 
      <Binding name="WebsitePublicEndpoint" endpointName="Insecure" /> 
      <Binding name="WebsitePublicEndpoint" endpointName="Secure" /> 
     </Bindings> 
     </Site> 
    </Sites> 
    <Endpoints> 
     <InputEndpoint name="Insecure" protocol="http" port="80" /> 
     <InputEndpoint name="Secure" protocol="https" port="443" certificate="example.com" /> 
    </Endpoints> 
    <Certificates> 
     <Certificate name="backend.example.com" storeLocation="LocalMachine" storeName="TrustedPeople" /> 
     <Certificate name="frontend.example.com" storeLocation="LocalMachine" storeName="My" /> 
     <Certificate name="example.com" storeLocation="LocalMachine" storeName="My" /> 
    </Certificates> 
    ... 
    </WebRole> 
</ServiceDefinition> 

參見this forum threadworker role service definition file schema documentation

此外,Azure門戶現在支持上傳.cer(僅限公鑰)證書文件。您可能必須更改打開文件對話框的選擇過濾器 - 默認情況下,它設置爲僅查找.pfx文件。

+0

我覺得'.csdef'技巧會起作用,如果我能以某種方式獲得'.cer'文件的部署,但這部分是沒有工作。如果門戶現在允許你上傳'.cer'文件,那麼這是個好消息! – Jaxidian 2014-03-18 11:53:07

+0

是的,它現在可以工作 - 我現在有一個類似配置的服務。 :) – 2014-03-19 13:03:55

相關問題