Https服务器与自签名证书

时间:2017-02-28 20:51:57

标签: node.js https

创建自签名证书后,在chrome中打开不安全的localhost后: chrome:// flags / #allow-insecure-localhost

并在添加自签名证书系统和'信任所有'之后。以下代码仍然不通过https托管服务器。 chrome中显示以下错误:

This site can’t provide a secure connection

localhost sent an invalid response.
Try running Network Diagnostics.
ERR_SSL_PROTOCOL_ERROR

我为此工作缺少什么?

var express = require('express');
var https = require('https');
var http = require('http');
var fs = require('fs');

// This line is from the Node.js HTTPS documentation.
var options = {
  key: fs.readFileSync('key.pem'),
  cert: fs.readFileSync('cert.pem')
};

// Create a service (the app object is just a callback).
var app = express();

// Create an HTTP service.
http.createServer(app).listen(8000);
// Create an HTTPS service identical to the HTTP service.
https.createServer(options, app).listen(8001);

2 个答案:

答案 0 :(得分:4)

创建证书(紧跟http://www.akadia.com/services/ssh_test_certificate.html)并将其添加到钥匙串访问权限,这对我来说非常有用

    openssl genrsa -des3 -out server.key 1024   
    openssl req -new -key server.key -out server.csr
    cp server.key server.key.org
    openssl rsa -in server.key.org -out server.key
    openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

答案 1 :(得分:0)

当我不小心擦掉我的openssl-serial文件时,我遇到了类似的问题。从那时起颁发的所有证书都是从已经发布的序列开始的。如果客户端记录了该客户已经看过的序列号证书,则该证书根本不会被接受,并且该连接将不会建立。

虽然我不知道这是否是问题(也许你会在日志中找到详细的错误)。