我正嘗試創建自己的WIF身份提供程序並在Azure上運行它,但在嘗試自動生成聯合元數據時遇到了困難。如何在Windows Azure上的代碼中獲得證書
這條線不會出現在Azure上運行:
CertificateUtil.GetCertificate(StoreName.My, StoreLocation.LocalMachine, signingCertificateName);
證書上傳到Azure的,我怎麼能弄個?
感謝
我正嘗試創建自己的WIF身份提供程序並在Azure上運行它,但在嘗試自動生成聯合元數據時遇到了困難。如何在Windows Azure上的代碼中獲得證書
這條線不會出現在Azure上運行:
CertificateUtil.GetCertificate(StoreName.My, StoreLocation.LocalMachine, signingCertificateName);
證書上傳到Azure的,我怎麼能弄個?
感謝
試試這個博客帖子: http://blogs.msdn.com/b/jnak/archive/2010/01/29/installing-certificates-in-windows-azure-vms.aspx
這表明這樣的代碼:
X509Certificate2Collection selectedCerts = new X509Certificate2Collection();
X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadOnly);
foreach (X509Certificate2 cert in store.Certificates)
{
// do stuff with cert
}
這段代碼也適用於非天藍色的機器...... – 2011-04-14 19:45:27
這段代碼讓我看到Azure上的證書名稱與我期望的不同,並對我的問題進行了排序:) – Max 2011-04-15 08:45:21
至於其他的答案稍有不同,如果你只是想獲得一個證書,而不是遍歷所有他們你可以做這樣的事情:
var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
X509Certificate2Collection matchedCertificates =
store.Certificates.Find(X509FindType.FindBySubjectName, signingCertificateName, true);
if (matchedCertificates.Count > 0)
{
myCertificate = matchedCertificates[0];
}
(這也不是Azure特定的)
非常好,即使我標記了其他repsonse作爲答案,因爲它突出了我的問題我重構了我的代碼看起來像這樣。謝謝! +1 – Max 2011-04-15 08:46:45
什麼是當前答案,StoreLocation.LocalMachine或StoreLocation.CurrentUser?我瞭解,對於Web應用程序,不能訪問本地用戶證書,因此它必須是本地機器,我錯了嗎? – 2012-06-11 15:55:28
我只在Azure上使用LocalMachine,因爲我在這種情況下發現用戶的概念有點怪異。 – knightpfhor 2012-06-11 21:15:08
看起來像下面所說明的那樣,代碼在內部和雲上都是相同的。我正在檢查證書的名稱,在Azure上它包含額外的信息,這就是爲什麼我找不到它。 – Max 2011-04-15 08:44:15