0

Windows Azure管理APIを使用して、プログラムでWebサービスをスケーリングしたいと思います。まず、管理証明書を取得しようとします。

makecert.exeを使用して新しい自己署名証明書を作成しました。ここで説明します。

makecert -sky exchange -r -n "CN=<CertificateName>" -pe -a sha1 -len 2048 -ss My "<CertificateName>.cer"

次に、証明書をazureサブスクリプションにアップロードしました(この方法)。アップロードした証明書は、新しい管理ポータルと以前の管理ポータルに実際に表示されます。

次に、次のコードをWebサービスに追加します

private X509Certificate2 GetX509Certificate2()
    {

        // The thumbprint value of the management certificate.
        // You must replace the string with the thumbprint of a 
        // management certificate associated with your subscription.
        string certThumbprint = "mythumprint...";

        // Create a reference to the My certificate store.
        X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);

        // Try to open the store.
        try
        {
            certStore.Open(OpenFlags.ReadOnly);
        }
        catch (Exception e)
        {
            if (e is CryptographicException)
            {
                Console.WriteLine("Error: The store is unreadable.");
                debugTable.persist("Error: The store is unreadable.");
            }
            else if (e is SecurityException)
            {
                Console.WriteLine("Error: You don't have the required permission.");
                debugTable.persist("Error: You don't have the required permission.");
            }
            else if (e is ArgumentException)
            {
                Console.WriteLine("Error: Invalid values in the store.");
                debugTable.persist("Error: Invalid values in the store.");
            }
            else
            {
                debugTable.persist("Something got wrong with certificate");
                return null;
            }
        }

        // Find the certificate that matches the thumbprint.
        X509Certificate2Collection certCollection = certStore.Certificates.Find(X509FindType.FindByThumbprint, certThumbprint, false);
        certStore.Close();

        // Check to see if our certificate was added to the collection. If no, throw an error, if yes, create a certificate using it.
        if (0 == certCollection.Count)
        {
            Console.WriteLine("Error: No certificate found containing thumbprint " + certThumbprint);
            debugTable.persist("Error: No certificate found containing thumbprint " + certThumbprint);
            return null;
        }

        debugTable.persist("found cert");
        // Create an X509Certificate2 object using our matching certificate.
        X509Certificate2 certificate = certCollection[0];
        return certificate;
    }

debugtable.persists()メソッドは、デバッグメッセージをテーブルストレージに書き込みます。最後に、テーブルには次のエントリしかありません。

"Error: No certificate found containing thumbprint " + certThumbprint

では、私のコードはどうしたのですか?

4

1 に答える 1

4

そこで、ポータルに証明書をアップロードしました。これは、証明書を使用してServiceManagementAPIへの認証を行うことができることを意味します。

ここで、Web/ワーカーロールでホストされているWCFサービス/Webサービス内からこの証明書を使用する場合は、その証明書をクラウドサービスにアップロードする必要もあります。

ここに画像の説明を入力してください

次に、Web /ワーカーロールの設定を開き、場所、ストア名、および拇印を指定して、ここに新しい証明書を追加する必要があります。

ここに画像の説明を入力してください

アプリケーションを再展開すると、証明書が使用可能になり、WCFサービスで使用できるようになります(サービスにアクセスするための十分なアクセス許可がある場合)。

于 2013-01-04T09:32:21.337 に答える