导出 (0) 打印
全部展开

获取服务证书

更新时间: 2014年4月

Get Service Certificate 操作返回与云服务关联的指定 X.509 证书的公共数据。

可以按以下方式指定 Get Service Certificate 请求。将 <subscription-id> 替换为订阅 ID,将 <service-name> 替换为云服务的 DNS 前缀名称,将 <thumbprint-algorithm> 替换为指纹的算法,并将 <thumbprint> 替换为指纹。

 

方法 请求 URI

GET

https://management.core.windows.net/<subscription-id>/services/hostedservices/<service-name>/certificates/<thumbprint-algorithm>-<thumbprint-in-hexadecimal>

你必须确保向管理服务发出的请求是安全的。有关其他详细信息,请参见对服务管理请求进行身份验证

无。

下表介绍请求标头。

 

请求标头 说明

x-ms-version

必需。指定用于此请求的操作的版本。应将此标头设置为 2009/10/1 或更高版本。有关版本控制标头的更多信息,请参阅服务管理版本控制

无。

响应包括 HTTP 状态代码、一组响应标头和响应正文。

此操作成功后返回状态代码 200(正常)。有关状态代码的信息,请参阅服务管理状态和错误代码

此操作的响应包括以下标头。该响应还可能包括其他标准 HTTP 标头。所有标准标头都符合 HTTP/1.1 协议规范

 

响应标头 说明

x-ms-request-id

一个值,它唯一地标识对管理服务做出的请求。

响应正文的格式如下所示:


<?xml version="1.0" encoding="utf-8"?>
<Certificate xmlns=”http://schemas.microsoft.com/windowsazure”>
  <Data>Base64-encoded-X509-representation</Data>
</Certificate>

下表介绍响应正文的元素。

 

元素名称 说明

Data

以 .cer 文件的 Base-64 编码形式指定 X.509 服务证书的公共部分。

Get Service Certificate 操作为与云服务关联的指定证书返回 .cer 文件格式的 Base-64 编码的二进制 X.509 证书数据。可使用此证书支持对 Web 角色或辅助角色的安全访问。

下面的示例方法调用 Get Service Certificate 操作,将公共服务证书数据输出到控制台,并且还将这些数据写入到某一 .cer 文件。参数包括订阅 ID、与订阅关联的管理证书、云服务的 DNS 前缀名称以及所请求证书的编码算法和指纹。目前,仅支持 sha1 作为编码算法。数据写入当前用户的文档目录中的某一文件并且其名称将与服务名称和指纹结合在一起使用。该示例不执行错误检查,并且在操作失败、找不到证书或无法写入文件时将引发异常。

/// <summary>
/// Calls the Get Certificate operation in the Service Management 
/// REST API for the certificate in the specified hosted service with 
/// the specified algorithm and thumbprint, and writes the Base-64
/// encoded public X.509 certificate data to the console and to the
/// user's documents directory.
/// </summary>
/// <param name="managementCert">The management certificate used to access the service.</param>
/// <param name="subscriptionId">The subscription identifier for the service.</param>
/// <param name="serviceName">The DNS prefix name of the hosted service containing the certificate to get.</param>
/// <param name="algorithm">The encryption algorithm for the certificate to get, for example, "sha1".</param>
/// <param name="thumbprint">The thumbprint for the certificate to get.</param>
/// <returns>The HostedServices XML element from the response.</returns>
public static void GetCertificateExample(
    X509Certificate2 managementCert,
    string subscriptionId,
    string serviceName,
    string algorithm,
    string thumbprint)
{
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(
        String.Format(
            "https://management.core.windows.net/{0}" +
            "/services/hostedservices/{1}/certificates/{2}-{3}", 
            subscriptionId, serviceName, algorithm, thumbprint));
    request.Method = "GET";
    request.Headers.Add("x-ms-version""2011-10-01");
    request.ClientCertificates.Add(managementCert);
    request.ContentType = "application/xml";
 
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    if (response.ContentLength > 0)
    {
        using (XmlReader reader = XmlReader.Create(response.GetResponseStream()))
        {
            XDocument responseBody = XDocument.Load(reader);
            XNamespace wa = "http://schemas.microsoft.com/windowsazure";
            string data =
                responseBody.Element(wa + "Certificate").Element(wa + "Data").Value;
 
            // Write out the data in Base-64 encoded .cer file format
            // to a file named <serviceName>_<thumbprint>.cer
            const int LineLength = 64;
            StringBuilder output = new StringBuilder();
            output.AppendLine("-----BEGIN CERTIFICATE-----");
            for (int offset = 0; offset < data.Length; offset += LineLength)
            {
                int remaining = data.Length - offset;
                output.AppendLine(data.Substring(
                    offset, remaining < LineLength ? remaining : LineLength));
            }
            output.AppendLine("-----END CERTIFICATE-----");
            string certificatePath = Path.Combine(
                Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
                serviceName + "_" + thumbprint + ".cer");
            using (StreamWriter writer = new StreamWriter(certificatePath, false))
            {
                writer.Write(output.ToString());
            }
 
            // Display the data on the console
            Console.WriteLine("Wrote certificate data to {0}{1}{2}", 
                certificatePath, Environment.NewLine, output.ToString());
        }
    }
    response.Close();
}
 

在使用适当参数运行时,此方法的控制台输出将如下所示:

Wrote certificate data to C:\Users\username\Documents\MyHostedService1_2EA90CBB65EFCF71C92F55363954A16B87941ECD.cer
-----BEGIN CERTIFICATE-----
MIIDIDCCAgygAwIBAgIQFacJqSCsGKVGE19GKlrEejAJBgUrDgMCHQUAMCMxITAf
BgNVBAMTGGhvc3RlZHNlcnZpY2VjZXJ0aWZpY2F0ZTAeFw0xMTExMTAwMDM3NDRa
Fw0zOTEyMzEyMzU5NTlaMCMxITAfBgNVBAMTGGhvc3RlZHNlcnZpY2VjZXJ0aWZp
Y2F0ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM94zedfRaAcpOES
oStDBM/r18qdOI7HFawK+8sd+atW93L+pJgUjmEYgbHsBET2YZRTWHV2l6HkV7CR
nSgTMQ/0SrIsGj+l1BG5Xncdp5Do9dbpHOQmZYVB3t3l0BcFgj3DP+atNXWctUpj
dyDJB+USZJB7o0gz3esmyxdD1HaFBu1LW7GfhWHDmC0+QERdoKxAvVKY1wuvCxY1
/LdCno6ZMV95l5xJ5jzf/itRo0A9wD5tlcR7bJL7Xp45REKZoaVwxCIooL8fC427
LQf2EZbwjhU3kqPOyQ40vNTB+ksJneXqXjhh7Hefond9fFe6O7mwGVfbqOsbFWJs
rTA7b40CAwEAAaNYMFYwVAYDVR0BBE0wS4AQMezArIE9mdwqywnNC9Y/NaElMCMx
ITAfBgNVBAMTGGhvc3RlZHNlcnZpY2VjZXJ0aWZpY2F0ZYIQFacJqSCsGKVGE19G
KlrEejAJBgUrDgMCHQUAA4IBAQA0XehZ43Yt/u/NlOSYOkGhCeomndZbBcijGH9f
o39OiMPwN1BOY1Ch1YmlTt60o/1u1Lg7oxx9+NfE4O2x2xqBK+SIT/W4gtowjmwF
g+dRu0qRCYcJL1HaQWGoRbkZrJHNOKsBVUWJbSKyOtM/MZ2v5eZ2q2imDLNMnIPY
6YaeP9s4lLhcu53iuzkHf1JvsmNkvI7XQkCw2W/COu8ndcXmTrhc1btz+j3r6G9s
iGeRQ+xDV394GIAtTZgszefJXVkjiYlHczUmr0ZPKWh3vA/RTyrcQfDVH0QBZ9CM
YNhhI1PIJOPAQ3X5YsYQwah9pbYV4mIXaJKld+eNsEFt3Zo8
-----END CERTIFICATE-----


另请参阅

Microsoft 正在进行一项网上调查,以了解您对 MSDN 网站的意见。 如果您选择参加,我们将会在您离开 MSDN 网站时向您显示该网上调查。

是否要参加?
显示:
© 2014 Microsoft