【问题标题】:Grunt Node and Express Local Dev HTTPS CertificatesGrunt 节点和 Express 本地开发 HTTPS 证书
【发布时间】:2017-05-03 09:22:50
【问题描述】:

我正在尝试从 Service Worker 开始,并阅读您需要拥有 ssl 证书。

我有一个 AngularJS 1.x 应用程序和一个 Node Express 后端,我都独立运行,所以我使用 grunt serve 在端口 8443 上运行前端,我使用 node app.js 运行 express这是7443

注意:我在 macOS 上执行此操作

我使用了关于如何在使用 Grunt 的项目上设置 https 的指南:here

openssl genrsa -out livereload.key 1024

openssl req -new -key livereload.key -out livereload.csr

openssl x509 -req -in livereload.csr -signkey livereload.key -out livereload.crt

Gruntfile.js

options: {
    protocol: 'https', // or 'http2'
    port: 8443,
    hostname: '0.0.0.0',
    key: grunt.file.read('livereload.key'),
    cert: grunt.file.read('livereload.crt')
},

node app.js

var privateKey  = fs.readFileSync('../livereload.key', 'utf8');
var certificate = fs.readFileSync('../livereload.crt', 'utf8');
var credentials = {key: privateKey, cert: certificate};

httpsServer.listen(7443, config.ip, function () {
  console.log('Express server listening on %d, in %s mode', 7443, app.get('env'));
});

两者都没有错误,前端确实抱怨连接不是私有的。当我的前端尝试访问快速服务器上的端点时,我收到以下信息;

选项https://localhost:7443/api/census/generalnet::ERR_INSECURE_RESPONSE

有人可以帮忙解决我的这个问题吗。

【问题讨论】:

  • 您知道livereload.crt 文件的到期日期吗?如果没有,您可以运行:openssl x509 -in livereload.crt -text -noout。另外,您是否记得将您的服务器配置为提供livereload.crt 文件?

标签: javascript angularjs node.js express ssl


【解决方案1】:

您创建了一个自签名证书,该证书适用于开发和测试,但对于一般用途而言被认为是不安全。与从信誉良好的第三方购买的 SSL 证书不同,自签名证书默认不受信任。

您需要告诉您的操作系统明确信任该证书。我不熟悉 Mac OS,但 this question 之前在 SuperUser 上得到了回答。

【讨论】:

    猜你喜欢
    • 2018-01-11
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 2018-08-11
    • 2022-08-04
    • 2011-08-03
    相关资源
    最近更新 更多