Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在服务器上定位SSL证书、密钥和CA_Node.js_Ssl - Fatal编程技术网

Node.js 在服务器上定位SSL证书、密钥和CA

Node.js 在服务器上定位SSL证书、密钥和CA,node.js,ssl,Node.js,Ssl,免责声明:回答此问题不需要知道节点,但它会有所帮助 我有一个节点服务器,我需要使它与HTTPS的工作。当我在互联网上搜索时,我发现我必须做这样的事情: var fs = require('fs'); var credentials = { key: fs.readFileSync('path/to/ssl/private-key'), cert: fs.readFileSync('path/to/ssl/cert'), ca: fs.readFileSync('path/

免责声明:回答此问题不需要知道
节点
,但它会有所帮助

我有一个节点服务器,我需要使它与HTTPS的工作。当我在互联网上搜索时,我发现我必须做这样的事情:

var fs = require('fs');
var credentials = {
    key: fs.readFileSync('path/to/ssl/private-key'),
    cert: fs.readFileSync('path/to/ssl/cert'),
    ca: fs.readFileSync('path/to/something/called/CA')
};
var app = require('https').createServer(credentials, handler);
我对此有几个问题。首先,我发现的所有示例都使用完全不同的方法

证书和密钥的
.pem
文件的一些链接。我不知道什么是
pem
文件,但我知道我的证书是
.crt
,我的密钥是
.key
。有些从根文件夹开始,有些似乎只是在应用程序目录中有这些
.pem
文件。我不知道

有些人也使用
ca
东西,有些人不使用。根据一些文章,这个
CA
应该是
my domain的CA bundle
,但是没有人解释在哪里可以找到这个文件。在我的服务器上的
ssl
目录中,除了一个空的
csrs
目录和一个
ssl.db
文件之外,还有一个
certs
目录中的
crt
文件和一个
keys
目录中的
.key
文件


那么,我在哪里可以找到这3个文件(密钥、证书、ca)以及如何正确链接到它们?

这里是区别:

\uuuu dirname
指脚本所在的目录

指调用nodejs命令的位置<代码>。指其父文件夹

例如:

cwd > node script.js
\u dirname
都将是相同的cwd

cwd > node /path/to/script.js

cwd
\u dirname
/path/to

您的密钥可能是PEM编码的私钥。在linux中运行
文件ssl.key
告诉我
PEM RSA私钥
,所以这是一种测试方法。否则,您可能必须使用
openssl rsa
获取带有一些参数的私钥,请参见谷歌。证书将是您的.crt文件。我不记得从哪里获得了我的证书颁发机构(CA)证书。我想我是从startcom下载的,它与我的密钥和证书一起。哦,路径并不重要,但我会将文件放在子目录中以减少混乱,然后将https.createServer指向相关文件。顺便说一句,如果您希望windows路径正常工作,node可以使用
path.join
var priv=require('path')。join(\uu dirname,“ssl”,“ssl.private.key”)
谢谢。关于路径,我将文件复制到与包含服务器的
node\u servers
目录相同级别的
ssl
目录中。然而,当我像
。/ssl/certificatefilename.crt
那样指向它时,我得到一个错误,说
没有这样的文件或目录
。有什么想法吗?尝试使用
\uuuu dirname
就像我在第二条评论中使用的那样-
\uuuu dirname+“/ssl/certificatefilename.crt”
,\uu dirname指向运行脚本的目录。或者
\uuu dirname+”./ssl/certificatefilename.crt“
非常乐意帮助!在这个问题上,我要悬赏给能解释为什么点符号不能正确引用文件以及
\uu dirname
的不同之处的人。我敢打赌,如果你能在答案中列出你的文件夹和文件结构,肯定会有很大帮助。编辑:忘记我不能提供新问题,抱歉:谢谢@乔文,这和你的路线相符吗?