0

我有我的所有服務織物的羣集節點,需要進口我的合作伙伴的X509客戶端證書(有完整的鏈條一起)使我可以驗證每個傳入請求並根據客戶端證書對每個合作伙伴進行身份驗證。這意味着,當我導入客戶端證書,我想在相關的中間證書(即簽署的客戶端證書)和相關的根證書(即簽署的中間證書)被自動安裝到適當的證書存儲如「中間體證書頒發機構」和「受信任的根證書頒發機構'在本地機器商店中。最終用戶通信的所有服務織物羣集節點上導入客戶證書(含鏈)

我希望整個鏈存儲在證書存儲區適當位置的原因是我打算使用我的服務身份驗證管道組件中的System.Security.Cryptography.X509Certificates命名空間中的X509Chain驗證傳入的客戶端證書。 X509Chain似乎依賴於「受信任的根證書頒發機構」存儲來完成根證書驗證。

有大量的信息,關於如何確保)節點到節點,和b)管理客戶集羣通信像這樣:https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-cluster-security。然而,關於保護服務(託管在服務結構集羣中)與使用客戶端證書的最終用戶使用者之間的通信信息並不多。如果我錯過了這些信息,請告訴我。

我沒有很多的合作伙伴客戶端證書的配置。合作伙伴的數量在可控範圍內。此外,每次有新的合作伙伴客戶端證書添加時,我都無法重新創建羣集。

  1. 我需要做槓桿 /ServiceManifest/CodePackage/SetupEntryPoint元素 SerivceManifest.xml文件,並編寫自定義代碼導入合作伙伴 證書(存儲在關鍵庫或其他地方)?這種方法有哪些優點 和缺點?
  2. 或有任何其他簡單的方法來導入滿足所有的我的要求的合作伙伴證書嗎?如果 那麼請詳細說明如何實現這一步驟。

更新: 我嘗試添加的客戶端證書作爲下osProfile部在上述link描述的所提出的方法。這看起來非常簡單。

爲了能夠做到這一點,我首先需要將相關證書(作爲祕密)推送到相關密鑰保管庫中,如link所述。在這篇文章中,描述(章節「格式化證書Azure的資源提供者使用」)如何把它作爲重點金庫的祕密之前證書信息成JSON格式來格式化。這JSON有以下格式上傳PFX文件的字節:

{ 
    "dataType": "pfx", 
    "data": "base64-encoded-cert-bytes-go-here", 
    "password": "pfx-password" 
} 

但是因爲我處理的客戶端證書的公共部分,我不與PFX文件,但只的base64 CER文件在Windows處理(這顯然是一樣的pem文件)。證書的公開部分沒有密碼。所以我改變了JSON格式到以下幾點:

{ 
    "dataType": "pem", 
    "data": "base64-encoded-cert-bytes-go-here" 
} 

當我調用新AzureRmResourceGroupDeployment與下osProfile部分適當修改相關的ARM模板,我收到以下錯誤:

New-AzureRmResourceGroupDeployment : 11:08:11 PM - Resource Microsoft.Compute/virtualMachineScaleSets 'nt1vm' failed with message '{ 
    "status": "Failed", 
    "error": { 
    "code": "ResourceDeploymentFailure", 
    "message": "The resource operation completed with terminal provisioning state 'Failed'.", 
    "details": [ 
     { 
     "code": "CertificateImproperlyFormatted", 
     "message": "The secret's JSON representation retrieved from 
https://xxxx.vault.azure.net/secrets/ClientCert/ba6855f9866644ccb4c436bb2b7675d3 has data type pem which is not 
an accepted certificate type." 
     } 
    ] 
    } 
}' 

我也嘗試使用'cer'數據類型如下所示:

{ 
    "dataType": "cer", 
    "data": "base64-encoded-cert-bytes-go-here" 
} 

這也導致了相同的錯誤。

我在做什麼錯?

回答

0

我會考慮在所有節點上導入證書here。 (第5步)您可以使用引用Azure密鑰保管庫的ARM模板在指定的商店中添加多個證書。使用耐用性級別Silver/Gold,以在重新部署期間保持羣集運行。

請注意受信任商店中的adding證書。 如果證書是由受信任的CA創建的,則不需要將 任何內容都放入受信任的根權威機構存儲中(因爲它們已經存在)。

使用X509Certificate2驗證客戶端證書。 Verify,除非每個客戶都有自己的服務實例進行通信。

+0

1)我的確瞭解將證書放置在可信商店的危險。 2)如果通過ARM添加證書,當集羣功能正常時需要添加一個證書時會發生什麼情況? – Raghu

+0

這就是銀色/金色級別,你的vmss節點會按順序重新啓動 – LoekD

+0

LoekD:你能否看看我的問題的更新部分? – Raghu

相關問題