net :: ERR_INSECURE_RESPONSE Angular 2 + Node.js + Socket.io
我正在开发一个与Angular 2,Node.js和socket.io的Web应用程序。 它与http完美地工作,但是我想实现https协议,我打了墙。
我得到NET :: ERR_INSECURE_RESPONSE从angular度到我的网页api的任何http调用,也试图build立一个套接字连接。
这是我做的:
1)生成我的私钥和csr。
2)使用该csr从Comodo申请SSL证书。
3)从Comodo收到2个文件: – domain.ca-bundle – domain.crt
4)我将这两个文件和我的私钥复制到一个文件夹:/ etc / apache2 / ssl /
5)我修改了etc / apache2 / sites-default中的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/ )进行validation。 它确认现在连接到我的网站是安全的,所以我认为这部分是正确的,现在我需要修复应用程序和服务器来处理https。
7)这是如何创buildangular度的套接字连接:
this.socket = io.connect('https://server_ip' + ':3000', {
rejectUnauthorized:false});
这个会在晚些时候给我net :: ERR_INSECURE_RESPONSE
8)Angular应用程序也在向服务器发送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)。 服务器和angular度应用程序都在同一个IP上运行。
任何想法,我可能在这里做错了吗? 谢谢!