由於我的電腦曾經管理過兩個Azure訂閱,這兩天在上傳VHD文件到Azure時出現了“找不到存儲賬號”及“證書不匹配”的問題。
場景還原
第一天使用Azure賬號A上傳VHD,沒有出現問題。第二天使用Azure賬號B上傳VHD是,出現瞭如下提示”The storage account was not found”
再次覈對Azure管理後臺,確定存儲賬號“uploadtest”是存在的。先來看看存儲賬號<Get-AzureStorageAccount>,結果提示“No certificate was found in the certificate store with thumbprint”
問題分析
a. 近期我使用Azure Powershell管理過兩個Azure賬號,可能是Azure賬號識別不正確;
b. Powershell執行命令時不需要輸入Azure賬號信息,那麼本地計算機肯定保存了Azure賬號的相關信息;
c. 在所有操作過程中,只是從Azure下載過證書並安裝到本地計算機上了,而上圖中也有提示證書的問題。
解決過程
1. 查看證書
在操作最初,我用<Import-AzurePublishSettingsFile>導入過從Azure下載的證書。此證書存放在當前用戶的個人目錄下
2. 查看本機關聯的Azure訂閱
命令<Get-AzureSubscription>
從下圖中可以看出有兩個不同的Azure訂閱“1RMB Trail Offer”和“免費試用”,而“1RMB Trail Offer”的DefaultAccount值與上面提示“No certificate was found in the certificate store with thumbprint”的證書指紋完全吻合。“1RMB Trail Offer”的另外兩個屬性IsDefault和IsCurrent值均爲True,與“免費試用”相反,即默認訂閱和當前活動訂閱均爲“1RMB Trail Offer”。
那麼,問題來了,我現在需要管理訂閱“免費試用”,該怎麼辦?
3. 選擇Azure訂閱
命令<Select-AzureSubscription>
執行完成後可以看到,訂閱“1RMB Trail Offer”和“免費試用”的IsCurrent值變爲對調了,即當前活動訂閱變爲“免費試用”
4. 再次查看存儲賬號
再次查看存儲賬號,發現屬性正常了,正式我想要管理的
5. 上傳VHD文件
終於可以正常上傳了,可以看到進度
插曲-證書指紋更新
針對提示“No certificate was found in the certificate store with thumbprint”,還有另外一個插曲。
我在管理訂閱“免費試用”對應的賬號時,生成過多張證書,從上圖中3個證書指紋就可發現。而我電腦僅保留了最後一張證書(指紋EA1AED開頭的),但是Azure的訂閱關聯的默認證書是第一張(證書指紋263B87開頭的),見下圖
此時我在進行VHD上傳時,同樣出現了證書錯誤,見下圖
處理辦法,更新訂閱關聯的默認證書指紋
命令
<$mycert = Get-Item Cert:\CurrentUser\My\證書指紋>
<Set-AzureSubscription -SubscriptionName "訂閱名稱" -Certificate $mycert>
完成後結果如下