在 Chrome 和 Mac 中信任 MEAN 堆栈的 https://localhost:3000/

Trust https://localhost:3000/ of MEAN stack in Chrome & Mac

我在 macOS Sierra 10.12.3 中使用 Chrome。我想我很久以前就已经为 localhost 设置了 ssl。现在,http://localhost/https://localhost/ 都在 Chrome return localhost 下的文件夹列表中。我创建了一个 nodejs 应用程序。所以在命令行中输入 npm start 到 运行 服务器后,我们可以在 Chrome.

中打开 http://localhost:3000/#/home 作为前端

现在,出于某种原因,我需要让 https://localhost:3000/#/home 在 Chrome 中工作。目前,它给出 This site can't be reached; localhost unexpectedly closed the connection 错误。

有人知道怎么修改吗?我应该在 mac 还是在我的应用代码中设置一些东西?

编辑 1: 我找到了这个页面:SSL/HTTPS server with Node.js and Express.js。所以我生成了文件并修改了节点代码。现在加载 https://localhost:3000/#/posts/editor/ 显示页面,但我想删除烦人的 Not Secure 警告。

如上图所示,我可以查看它的证书(虽然有错误ERR_CERT_COMMON_NAME_INVALID)。我把证书复制到桌面,拖到Keychain Access工具的login,修改设置为Always Trust。我重新启动 Chrome,重新加载页面,但 Not Secure 警告仍然存在。

有人能帮忙吗?

您确定设置了证书颁发机构吗?也许您只在代码中设置了 https 但忘记为您的应用程序设置本地证书颁发机构来验证证书。如果是这种情况请参考:http://www.techrepublic.com/blog/apple-in-the-enterprise/create-your-own-ssl-ca-with-the-os-x-keychain/

这个问题其实有很多跟帖,比较混乱。我写适合我的方式。

  1. 我终于按照这个页面生成了文件http://blog.mgechev.com/2014/02/19/create-https-tls-ssl-application-with-express-nodejs/。请注意,我将 localhost 设置为 Common Name(不确定它是否真的是强制性的)。

  2. 在我的 MEAN 项目的 www

    var fs = require("fs");
    var config = {
        key: fs.readFileSync('key.pem'),
        cert: fs.readFileSync('cert.pem')
    };
    var server = https.createServer(config, app).listen(3000);
    
  3. 在Chrome中,我打开https://localhost:3000/#/new,然后转到Dev ToolsSecurity选项卡查看其证书。然后将证书拖到桌面。

  4. 双击桌面上的证书,打开 Keychain Access。确保证书在 login 中(不一定是 system)。如果不是,则将证书拖入login.

  5. 全部改成Always Trust

  6. (可能会重启Chrome),npm start应用后,使用Green Secure Light享受网上冲浪https://localhost/#/new