我正在尝试创建一个HTTPS服务器.我按照以下说明使用Cygwin64生成了privatekey.pem和certicate.pem:
openssl genrsa -out privatekey.pem 1024
openssl req -new -key privatekey.pem -out certrequest.csr
openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem
Run Code Online (Sandbox Code Playgroud)
而我的服务器代码是这样的:
var https = require('https');
var fs = require('fs');
var options = {
key: fs.readFileSync('privatekey.pem'),
cert: fs.readFileSync('certificate.pem')
};
https.createServer(options, function (req, res) {
res.writeHead(200);
res.end("hello world\n");
}).listen(8001);
Run Code Online (Sandbox Code Playgroud)
当我尝试连接到地址时https://localhost:8001,该网页不可用.谁能帮我?
您的代码绝对工作正常。我已经在我的本地主机上测试过它。我认为问题在于您的密钥生成。尝试再次生成密钥并运行您的服务器。我希望它会起作用。
注意:您生成的证书只能在 localhost 中使用。所以不要在任何在线 IDE(如 codio.com、koding.com、cloud9.com 等)中尝试这个。如果你想这样做,你必须从像 Verysign 这样的公司购买 SSL 证书。
如果没有,请尝试以下代码。
步骤 1:打开终端并运行以下命令以生成私钥文件'key.pem'。
$ openssl genrsa 1024 > key.pem
Run Code Online (Sandbox Code Playgroud)
第 2 步:现在运行以下命令来生成 SSL 证书文件'key-cert.pem'。
$ openssl req -x509 -new -key key.pem > key-cert.pem
Run Code Online (Sandbox Code Playgroud)
第 3 步:现在使用以下内容编写“server.js”文件。
var https = require('https');
var fs = require('fs');
var options = {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('key-cert.pem')
};
https.createServer(options, function (req, res) {
res.writeHead(200);
res.end("hello world\n");
}).listen(8001);
Run Code Online (Sandbox Code Playgroud)
第 4 步:现在使用以下命令运行服务器文件。
$ node server.js
Run Code Online (Sandbox Code Playgroud)
第 5 步:现在在浏览器中点击 url'https://localhost:8001'并接受证书,您将在页面上看到“hello world”消息。
| 归档时间: |
|
| 查看次数: |
5264 次 |
| 最近记录: |