net :: ERR_INSECURE_RESPONSE Angular 2 + Node.js + Socket.io

时间:2017-08-04 11:15:33

标签: node.js angular ssl socket.io

我正在使用Angular 2,Node.js和socket.io开发一个Web应用程序。它与http工作完全正常,但是我想实现https协议,我就碰壁了。

我在从angular到我的web api的任何http调用中获取net :: ERR_INSECURE_RESPONSE,并且在尝试建立套接字连接时也是如此。

这是我做的:

1)生成我的私钥和csr。

2)使用该csr从Comodo请求SSL证书。

3)从Comodo收到2个文件: - domain.ca-bundle - domain.crt

4)我将这两个文件和我的私钥复制到一个文件夹中:/ etc / apache2 / ssl /

5)我修改了etc / apache2 / sites-available中的default-ssl.conf以指向这些文件:

SSLCertificateFile  /etc/apache2/ssl/domain.crt
SSLCertificateKeyFile /etc/apache2/ssl/mypriv.key
SSLCertificateChainFile /etc/apache2/ssl/domain.ca-bundle

加上:

ServerName domain.io
ServerAlias www.domain.io

6)启用https并重启apache。如果我的证书设置正确,则使用SSL分析器(https://sslanalyzer.comodoca.com/)进行验证。它确认与我的网站的连接现在是安全的,所以我认为这部分已经正确完成,现在我需要修复应用程序和服务器来处理https。

7)这是以角度创建套接字连接的方式:

this.socket = io.connect('https://server_ip' + ':3000', { 

rejectUnauthorized:false});

稍后会在

上给我net :: ERR_INSECURE_RESPONSE

8)Angular app也向服务器发出http请求,如下所示:

var headers = new Headers();
headers.append('Content-Type', 'application/json');
let options = new RequestOptions({ headers: headers });

return this.http.post('https://server_ip' + ':3000/register', 
JSON.stringify(userModel), options)
  .map(res => res.json())

这也会给我net :: ERR_INSECURE_RESPONSE(响应OPTIONS调用)

9)现在在服务器端,这是相关的代码:

var https = require('https');
var options = {
    ca: splitca('/etc/apache2/ssl/domain.ca-bundle'),
    key: fs.readFileSync('/etc/apache2/ssl/mypriv.key'),
    cert: fs.readFileSync('/etc/apache2/ssl/domain.crt')
};

var server = https.createServer(options, app);
let io = require('socket.io')(https);

server.listen(3000, () => {
    logger.debug('server started on port');
})

服务器启动正常,但来自angular的任何调用都会导致net :: ERR_INSECURE_RESPONSE响应(尝试使用chrome,mozilla和IE)。服务器和角度应用程序都运行在同一个IP上。

知道我在这里做错了什么吗?谢谢!

0 个答案:

没有答案