端口号为的HTTPS url在iOS上不起作用

端口号为的HTTPS url在iOS上不起作用,ios,node.js,https,Ios,Node.js,Https,我在一个包含端口号的HTTPS url上发送一个简单的GET请求。url如下所示 这在Android和任何浏览器上都能完美运行,甚至连卷曲都不行。但是,我在iOS上遇到了这个错误。如果我从上面的URL中删除端口号,这将非常好 错误:Error Domain=NSURLErrorDomain Code=-1202“此服务器的证书无效。您可能正在连接一个冒充“example.com”的服务器,这可能会使您的机密信息面临风险。”UserInfo=0xa694c50{NSErrorFailingURL

我在一个包含端口号的HTTPS url上发送一个简单的GET请求。url如下所示

这在Android和任何浏览器上都能完美运行,甚至连卷曲都不行。但是,我在iOS上遇到了这个错误。如果我从上面的URL中删除端口号,这将非常好

错误:Error Domain=NSURLErrorDomain Code=-1202“此服务器的证书无效。您可能正在连接一个冒充“example.com”的服务器,这可能会使您的机密信息面临风险。”UserInfo=0xa694c50{NSErrorFailingURLStringKey=,nsLocalizedRecoverysSuggestion=是否仍要连接到服务器?,NSErrorFailingURLKey=,NSLocalizedDescription=此服务器的证书无效。您可能正在连接假装为“example.com”的服务器这可能会使您的机密信息处于危险之中。NSUnderlyingError=0xa2410a0“此服务器的证书无效。您可能正在连接一个冒充“example.com”的服务器,这可能会使您的机密信息处于危险之中。”,nsurErrorFailingUrlPeerTrustErrorKey=}

SSL证书由DigiCert颁发。服务器后端是节点v0.10.15和iOS SDK v6.1


你知道我在这里遗漏了什么吗?

除了你自己的证书之外,你还有其他的家长CA证书吗

另外,如果您使用的端口不是8080或443,它是否工作?如果您侦听443并显式尝试请求
https://example.com:443/v1/base

var fs = require('fs');
var httpsOpt = {
  key  : fs.readFileSync('ssl.plain.key').toString(),
  cert : fs.readFileSync('ssl.crt').toString(),
  ca:[fs.readFileSync('ca.pem').toString(),
      fs.readFileSync('sub.class1.server.ca.pem').toString()],
};
https.createServer(httpsOpt, app)
  .listen('8080', function(){
    console.log('Listening on 8080')
  }); 

除您自己的证书外,您是否还包括任何其他家长CA证书

另外,如果您使用的端口不是8080或443,它是否工作?如果您侦听443并显式尝试请求
https://example.com:443/v1/base

var fs = require('fs');
var httpsOpt = {
  key  : fs.readFileSync('ssl.plain.key').toString(),
  cert : fs.readFileSync('ssl.crt').toString(),
  ca:[fs.readFileSync('ca.pem').toString(),
      fs.readFileSync('sub.class1.server.ca.pem').toString()],
};
https.createServer(httpsOpt, app)
  .listen('8080', function(){
    console.log('Listening on 8080')
  }); 

添加
requestCert:true
&CA证书解决了这个问题

var https = require('https'),      // module for https
fs =    require('fs');         // required to read certs and keys

var options = {
    key:    fs.readFileSync('ssl/server.key'),
    cert:   fs.readFileSync('ssl/server.crt'),
    ca:     fs.readFileSync('ssl/ca.crt'),
    requestCert:        true,
    rejectUnauthorized: false
};

https.createServer(options, function (req, res) {
    if (req.client.authorized) {
        res.writeHead(200, {"Content-Type": "application/json"});
        res.end('{"status":"approved"}');
    } else {
        res.writeHead(401, {"Content-Type": "application/json"});
        res.end('{"status":"denied"}');
    }
}).listen(443);

添加
requestCert:true
&CA证书解决了这个问题

var https = require('https'),      // module for https
fs =    require('fs');         // required to read certs and keys

var options = {
    key:    fs.readFileSync('ssl/server.key'),
    cert:   fs.readFileSync('ssl/server.crt'),
    ca:     fs.readFileSync('ssl/ca.crt'),
    requestCert:        true,
    rejectUnauthorized: false
};

https.createServer(options, function (req, res) {
    if (req.client.authorized) {
        res.writeHead(200, {"Content-Type": "application/json"});
        res.end('{"status":"approved"}');
    } else {
        res.writeHead(401, {"Content-Type": "application/json"});
        res.end('{"status":"denied"}');
    }
}).listen(443);

我很想知道你这里的问题是否与我无法从安全服务器下载iOS应用程序有关。我对http协议问题不够精通,无法完全理解这里写的内容,但我知道我可以(从私人服务器)进行企业分发只有当.ipa文件保存在http上,而不是https上时。烦人!有什么见解吗?我很想知道你这里的问题是否与我无法从安全服务器下载iOS应用程序有关。我对http协议问题不够精通,无法完全理解这里写的内容,但我知道我可以进行Enterprise分发(来自专用服务器)仅当.ipa文件保存在http上而不是https上时。烦人!有什么见解吗?