开发者社区> 问答> 正文

IIS请求AccessToken报错msxml3.dll 错误80072f06

服务端环境是Windows Server 2003,ASP
向钉钉通过https://oapi.dingtalk.com/gettoken?corpid=&corpsecret= 接口请求AccessToken的时候报错

报错的代码是如下函数getHTTPPage(url):



Function getHTTPPage(url)
dim Http
set Http = Server.CreateObject("MSXML2.SERVERXMLHTTP.3.0")
Http.open "GET",url,false
Http.send() ‘这一步报错
if Http.readystate<>4 then
exit function
end if
getHTTPPage=bytesToBstr(Http.responseBody,"utf-8")
set http=nothing
if err.number<>0 then  err.Clear
end if
End Function


服务器错误提示:

msxml3.dll 错误 '80072f06' The host name in the certificate is invalid or does not match

经检查当URL 协议为Http的时候是可以正常运行的,协议为 https,且为开放平台API网址https://oapi.dingtalk.com/时 [font='Times New Roman']就报错,问题似乎出在证书上?测试 https://bbs.aliyun.com/ 又是可以获取到内容的。判断为证书问题,难道是开放平台API接口的证书级别原因?
求大牛解答,我已找遍网上了,都没找到如何解决该问题。


另外:
通过微软的WinHttp 组件来发请求还是报这样的错误,具体测试函数如下
test.asp

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<script language="jscript" runat=server>
function getText(strURL)
{
    var strResult;
try
    {
        // Create the WinHTTPRequest ActiveX Object.
        var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
//  Create an HTTP request
        var temp = WinHttpReq.Open("GET", strURL, false);
//  Send the HTTP request.
        WinHttpReq.Send();
//  Retrieve the response text.
        strResult = WinHttpReq.ResponseText;
    }
    catch (objError)
    {
        strResult = objError + "\n"
        strResult += "WinHTTP returned error: " + (objError.number & 0xFFFF).toString() + "\n\n";
        strResult += objError.description;
    }
//  Return the response text.
    return strResult;
}
//getText("https://oapi.dingtalk.com/"));
</script>
<%
response.write getText("https://oapi.dingtalk.com/")
%>


以上是今天测试的代码,用了微软的WinHttp 组件,依然报如下错误: [object Error] WinHTTP returned error: 12038 The host name in the certificate is invalid or does not match

-------------------------------------------------------------------------------------------------------------------------------------
在Windows Server 2003 上用系统自带的浏览器 访问https://oapi.dingtalk.com 浏览器报错,无法访问:
[attachment=108837]




展开
收起
ceadelta 2016-08-22 22:26:48 6807 0
2 条回答
写回答
取消 提交回答
  • 回 1楼谦吉的帖子
    应该是证书的问题,我在ASP里面用了另外一个COM组件 请求页面内容,报了同样的错误,如下:
    <script language="jscript" runat="server">
    function getText(strURL)
    {
        var strResult;
        
        try
        {
            // Create the WinHTTPRequest ActiveX Object.
            var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
            
            //  Create an HTTP request.
            var temp = WinHttpReq.Open("GET", strURL, false);

            //  Send the HTTP request.
            WinHttpReq.Send();
            
            //  Retrieve the response text.
            strResult = WinHttpReq.ResponseText;
        }
        catch (objError)
        {
            strResult = objError + "\n"
            strResult += "WinHTTP returned error: " +
                (objError.number & 0xFFFF).toString() + "\n\n";
            strResult += objError.description;
        }
        
        //  Return the response text.
        return strResult;
    }

    //WScript.Echo();
    </script>

    <%
    response.write getText("https://oapi.dingtalk.com/gettoken")
    %>

    以上是今天测试的代码,用了微软的WinHttp 组件,依然报如下错误:
    [object Error] WinHTTP returned error: 12038 The host name in the certificate is invalid or does not match

    -------------------------

    回 1楼谦吉的帖子
    对证书这块不是太了解,指点下,我的WIN2003 需要设置什么证书,需要做哪些信任

    -------------------------

    回 1楼谦吉的帖子
    SEVERXMLHTTP 是依赖于WinHTTP, 由此证明了,问题出在关于 服务器证书方面的问题,但是并不是所有HTTPS的请求都不行,比如本网页网址: https://bbs.aliyun.com/read/292395.html?spm=5176.bbsl276.0.0.oDcsNT 通过上述代码又是可以请求的,真是奇怪,目前就只有钉钉开放平台接口网址https://oapi.dingtalk.com/为首的都不行

    -------------------------

    Re回 1楼谦吉的帖子
    引用第2楼ceadelta于2016-08-23 12:03发表的 回 1楼谦吉的帖子 :
    应该是证书的问题,我在ASP里面用了另外一个COM组件 请求页面内容,报了同样的错误,如下:
    <script language="jscript" runat="server">
    function getText(strURL)
    {
        var strResult;
    ....... [url=https://bbs.aliyun.com/job.php?action=topost&tid=292395&pid=815771][/url]

    ERROR_WINHTTP_SECURE_CERT_CN_INVALID12038
    Returned when a certificate CN name does not match the passed value (equivalent to a CERT_E_CN_NO_MATCH error).
    这是微软给出的12038错误解释:证书CN名称和传递的值不匹配

    -------------------------

    回 1楼谦吉的帖子
    看了下HTTPS请求的流程:

    问题出在上图哪个阶段?客户端验证这里?

    -------------------------

    回 6楼谦吉的帖子
    服务器没有安装证书的,服务器向你们的HTTPS接口请求数据,我们的服务器需要安装证书吗?

    -------------------------

    回 6楼谦吉的帖子
    我们的服务器没有做SSL等配置,从服务器后台向你们的 https://oapi.dingtalk.com接口请求数据
    报错:The host name in the certificate is invalid or does not match  
    证书主机名不匹配,他说的这个证书是你们服务器传递过来的?还是哪来的

    -------------------------

    回 10楼谦吉的帖子
    看了,文档貌似是针对UNIX or Linux 系统的

    -------------------------

    ReIIS请求AccessToken报错msxml3.dll 错误80072f06
    引用第10楼谦吉于2016-08-23 22:48发表的  :
    这个证书应该是指你本地的证书
    https://technet.microsoft.com/en-us/library/dd891009.aspx
    这里有个微软的文档,你看下 [url=https://bbs.aliyun.com/job.php?action=topost&tid=292395&pid=815986][/url]

    我想问下,服务器向其他服务器发出HTTPS请求, 服务器需要事先配置好自己的证书吗,对这块确实不太了解,这个证书不是要访问的其他服务器发的?

    -------------------------

    ReIIS请求AccessToken报错msxml3.dll 错误80072f06
    没解决,最后换服务器了。。。。。。一劳永逸
    2016-08-23 12:03:12
    赞同 展开评论 打赏
  • 对ASP不太熟,错误码查了一下,应该是证书信任的问题,你的证书来源是?ASP可以设置成信任所有吗

    -------------------------

    你们的https的证书是购买的吗

    -------------------------

    这个证书应该是指你本地的证书
    https://technet.microsoft.com/en-us/library/dd891009.aspx
    这里有个微软的文档,你看下

    2016-08-23 09:32:07
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载