【问题标题】:Https server with self signed certificate带有自签名证书的 HTTPS 服务器
【发布时间】:2017-02-28 20:51:56
【问题描述】:

创建自签名证书后,在 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);

【问题讨论】:

  • 您是否连接到正确的端口? https://localhost:8001/...
  • 是的,我正在浏览 https://localhost:8001/
  • 您的证书的 CN 是 'localhost' 吗?即CN=localhost
  • @wablab 试过这个

标签: node.js https


【解决方案1】:

在 mac 上创建证书(遵循 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

【讨论】:

【解决方案2】:

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

虽然我不知道这是否是问题所在(也许您可以跟踪日志中的详细错误)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-10
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 2012-02-17
    • 2014-08-08
    相关资源
    最近更新 更多