[英]setting up https cookie in nodejs
我也在尝试在我的网站上设置登录系统。
听说 nodejs cookies 是一个很好的方法。
在以下链接中:
https://stackoverflow.com/a/21809393/322537
https://nodejs.org/dist/latest-v8.x/docs/api/https.html
我找到了如何创建 https 服务器的示例。 据我了解,每次客户端发出请求时,createServer function 都应该运行。
所以我的代码中有以下内容:
var server_https=modules.https.createServer({
key: this.ssl_key,
cert:this.ssl_cert
},this.respond_to_client).listen(this.port);
mconnection.prototype.respond_to_client=function(request,response){
console.log('responded to client');
}
随着网站的启动和运行,服务器似乎运行良好。 function appears to never run as nodejs's log file never indicates the 'responded to client' string.但是 function 似乎永远不会运行,因为 nodejs 的日志文件从未指示“响应客户端”字符串。
怎么可能? 这可能与我稍后在代码中将 https 服务器升级到 websocket 有关吗?
计划是让 cookies 识别客户端,然后设置登录系统。 但我坚持这一点。 /:
我已经复制了您的节点脚本以进行本地测试。 我首先在 http(vs https)上运行,并且能够得到很好的响应。 但是,在移动到 https 后,服务器永远不会收到请求。 在发送实际请求之前,浏览器必须首先建立安全连接。
尝试在同一端口上运行多个服务器(https 和 ws)时,我遇到了类似的问题。 您所拥有的非常接近,但是您对 https.createServer({options}, handler) 的设置需要调整。
你在哪里:
var server_https= https.createServer({
key: this.ssl_key,
cert:this.ssl_cert
},respond_to_client).listen(this.port);
您还需要为“ca”添加一个选项:
var server_https= https.createServer({
key: this.ssl_key,
cert: this.ssl_cert,
ca: this.ssl_ca, // also add this
},respond_to_client).listen(this.port);
我用于“ca”的值是文件的内容:intermediate.crt 从证书签名机构收到。
重要的
虽然可以使用自签名证书来完成这项工作,但我从来没有这样做过,因为没有签名授权。
因此,就像您对其他证书文件所做的那样,您也应该对 middle.crt 文件执行此操作。
//Where you read your other cert files: add another.
this.ssl_ca = modules.fs.readFileSync(this.ssl_ca_pathfile);
我发现这很困难,而且记录不充分。 我不是 SSL/TSL 方面的专家,但是可以快速搜索中间证书:
中间证书是受信任的根颁发的专门用于颁发终端实体服务器证书的从属证书。 结果是一个证书链,从受信任的根 CA 开始,通过中间证书并以颁发给您的 SSL 证书结束。 此类证书称为链式根证书。 资源
middle.crt 将具有以下结构:
-----BEGIN CERTIFICATE-----
****
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
****
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
****
-----END CERTIFICATE-----
这是浏览器中的响应。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.