在我當前的ASP.NET核心項目中,我使用Azure Active Directory身份驗證和X509Certificate來訪問密鑰保管庫。需要在機器上安裝證書以允許應用程序訪問它並最終從Key Vault讀取值。現在我正在將此應用程序遷移到Azure Service Fabric。我上傳的證書修飾手臂模板庫的關鍵,通過添加:從Azure服務結構中託管的ASP.NET核心應用程序訪問Azure密鑰保管庫
"osProfile": {
"secrets": [
{
"sourceVault": {
"id": "{KeyVaultIdHere}"
},
"vaultCertificates": [
{
"certificateUrl": "{CertificateUrlHere}",
"certificateStore": "My"
}
]
}
]
},
但是當我部署我的應用程序Azure的服務織物好像它沒有獲得證書。我是否正確理解當我使用此類ARM模板創建羣集時,正在安裝證書LocalMachine\My
存儲?如果是,是否有可能,在哪個應用程序運行的操作系統用戶沒有權限訪問私鑰?當我在本地計算機上運行集羣時,我必須給予ASF本地集羣用戶特殊權限才能讀取私鑰。也許Azure上的ASF需要完成相同的工作?怎麼辦?提前致謝。
我已經遠程從ASF集羣虛擬機,事實證明,這個證書上缺少私鑰許可。但我無法手動設置它,因爲「管理員」對此證書只具有「讀取」權限。出於這個原因,我將嘗試修改ARM模板,以便「解除」運行ASF羣集的NETWORK_SERVICE的私鑰。 –
「NETWORK_SERVICE」的ACL應該在配置證書時自動完成。訪問KeyVault的代碼如何?也許你的方法是默認查看'cert:\ currentuser \ my',這對SF來說當然是不正確的! – Mardoxx
我的方法確實在看'localmachine/my'商店。當我運行ASF本地集羣時,它工作正常。有趣的是,你提到的是,NETWORK_SERVICE應該可以訪問使用ARM模板安裝的這種證書的私鑰。顯然,它沒有。只有'System'完全可以訪問它。還提到了'Administrators'組,但只有'Read'權限。 –