2015-05-26 43 views
0

我试图实现在这里描述的MS Azure的身份验证: https://github.com/Azure/azure-resource-provider-sdk/tree/master/docs#authentication 但唯一提到有:MS Azure的资源提供SDK - 验证

你是负责核实来电者的证书指纹。 只接受来自拥有正确公钥的证书的呼叫。

如何制作?最好在PHP中。提前致谢。

+0

我试图验证与PHP openssl_verify()的响应,但我会需要$签名,我不知道,我认为这不是要做的方式。然后尝试使用我的私钥/公钥来设置Apache服务器设置,以模仿从MS Azure发送的请求,但没有运气。也看到$ _SERVER变量的任何线索的签名或其他SSL变量 - 没有。 – Lamy

回答

1

根据我的理解,资源提供者(RP)API是HTTP RESTful,这里是证书:https://github.com/Azure/azure-resource-provider-sdk/blob/master/docs/misc/AzureStoreLatest.cer Azure用来调用您的RP。要实现https://github.com/Azure/azure-resource-provider-sdk/tree/master/docs#authentication上提到的RP认证,您可以利用验证从请求发送到RP的证书。根据我的经验,我们通常会检查证书的序列号或指纹以验证其授权,这些官方样本以https://github.com/Azure/azure-resource-provider-sdk/tree/master/samples发布,使用相同的方式进行证书验证。例如。下面是的AuthorizeRequest的,供大家参考C#版本:

public static bool AuthorizeRequest(X509Certificate2 clientCertificate) 
    { 
     if (ConfigurationDataProvider.AzureStoreRequestAuthorization) 
     { 
      if (clientCertificate == null || (
       // BaltimoreRdfeExtensibilityClientProd.cer, will expire on Saturday, February 14, 2015 
       !clientCertificate.Thumbprint.Equals("F2693F8487AB975A28C19610A672E59DDCF873F2", StringComparison.OrdinalIgnoreCase) && 

       // BaltimoreRdfeExtensibilityClientStage.cer, will expire on Saturday, February 14, 2015 
       !clientCertificate.Thumbprint.Equals("19D02B07DEC22C0998BB266A7DA5BA8B4D42A0A6", StringComparison.OrdinalIgnoreCase) 
      )) 
      { 
       Logger.ErrorFormat(
        format : "Unauthorized access to Azure Store integration endpoints: {0}, {1}", 
        arg0 : clientCertificate != null ? clientCertificate.Subject  : "<null>", 
        arg1 : clientCertificate != null ? clientCertificate.Thumbprint : "<null>" 
       ); 

       return false; 
      } 
     } 

     return true; 
    } 

在PHP & OpenSSL的,我们可以利用SSL_CLIENT_M_SERIAL变量:http://pilif.github.io/2013/07/how-to-accept-ssl-client-certificates/获取客户端证书的序列,然后检查值等于AzureStoreLatest的序列号.CER。 (你可以很难在你的代码代码序列号,就像上面的C#示例做)

enter image description here

我想指出的一些概念和技巧,使用RP API:

https://github.com/Azure/azure-resource-provider-sdk/blob/master/docs/concepts.md

https://github.com/Azure/azure-resource-provider-sdk/blob/master/docs/tips-and-tricks.md

如果执行过程中的任何进一步的问题,请随时与我们联络,并提供有关您已尝试什么更多的信息。