windowsphone验证推送,但没有得到任何响应


windows phone authenticated push with getting no response at all

这是我的服务的php

$r = curl_init();
curl_setopt($r, CURLOPT_URL, $uri);
curl_setopt($r, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($r, CURLOPT_POST, true);
curl_setopt($r, CURLOPT_HEADER, true); 
curl_setopt($r, CURLOPT_CONNECTTIMEOUT, 120);
curl_setopt($r, CURLOPT_TIMEOUT, 120);
curl_setopt($r, CURLOPT_MAXREDIRS, 20);
curl_setopt($r, CURLOPT_AUTOREFERER, true);
curl_setopt($r, CURLOPT_FOLLOWLOCATION, true);
//curl_setopt($r, CURLOPT_SSLKEY, 'ssl.key'); 
//curl_setopt($r, CURLOPT_CAINFO, 'ssl2.crt'); 
curl_setopt($r, CURLOPT_SSLCERT, 'ssl3.pem');  
//curl_setopt($r, CURLOPT_SSLCERTTYPE, 'PEM');
//curl_setopt($r, CURLOPT_SSLCERTPASSWD, 'mypassword');
//curl_setopt($r, CURLOPT_SSLVERSION, 3);
//curl_setopt($r, CURLOPT_SSLENGINE, 'x509');
//curl_setopt($r, CURLOPT_SSLKEYTYPE, 'PEM'); 
curl_setopt($r, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($r, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($r, CURLOPT_HTTPHEADER, $httpHeadersToast);
curl_setopt($r, CURLOPT_POSTFIELDS, $toastMessage);
$output = curl_exec($r);
curl_close($r);

我尝试了以上代码的各种组合,但大多数情况下$output都是空的,或者我会得到403"Forbidden",这取决于我使用的命令。

我有我的服务器通过Dreamhost。。。使用签名的comodo证书……当我去查看证书时,会有"证书"、"密钥"answers"中间证书"。"证书"是我已上传到Windows Phone开发人员帐户的证书,并且"指纹"匹配。

我知道我手机的推送URI是合法的,因为它有"https…unthrottled…"

我以前用"未经身份验证"的方式处理过这个问题,但我想使用我的安全服务器。

我在curl/php中遇到了同样的403问题。我使用我的crt和密钥以及CA文件进行了身份验证,该文件包含GoDaddy CA捆绑包(我们的crt来自GoDaddly)和附加的"完整"CA捆绑包"(Fedora上的/etc/pki/tls/certs/CA-bundle.crt)。

还要确保您的脚本具有对所有证书文件的读取权限。通常私钥只能由root用户读取。

编辑:添加了与身份验证相关的确切CURL选项:

    curl_setopt($req, CURLOPT_SSL_VERIFYHOST, '2');
    curl_setopt($req, CURLOPT_SSL_VERIFYPEER, '1');
    curl_setopt($req, CURLOPT_CAINFO,  $ca_file);
    curl_setopt($req, CURLOPT_SSLCERT, $cert_file);
    curl_setopt($req, CURLOPT_SSLKEY, $key_file);

$ca_file包含上面提到的ca捆绑包。