当前位置: 首页 > 面试题库 >

Node.js / Express.js链证书不起作用

柴琨
2023-03-14
问题内容

我在Express中有一个SSL服务器,该服务器不能在所有浏览器上运行(除非用户手动信任该网站),因为某些浏览器需要链证书(我们有自己的中间证书)。我已经将中间证书和连锁证书放在一个.crt文件中。链+中间证书在INT_CERT_FILE变量中。它似乎不起作用。我正在使用http://www.digicert.com/help并正在进行openssl s_client -connect tasker.adnxs.net:443 -showcerts | grep "^ "检查,但是它似乎没有返回中间+链证书。

这是我的设置方法:

var fs = require("fs");
var https = require("https");
var express = require("express");

var KEY_FILE = fs.readFileSync("path/to/key/file.key");
var CERT_FILE = fs.readFileSync("path/to/crt/file.crt);
var INT_CERT_FILE = fs.readFileSync("path/to/intermediate and chain crt.crt");

var _app_https = express();
var _server_https = null;

_server_https = https.createServer({
    key: KEY_FILE,
    cert: CERT_FILE,
    ca: INT_CERT_FILE
}, _app_https).listen(443);

在Firefox上访问它时,Firefox无法识别其身份,因此需要手动信任它。如何解决此问题?

谢谢,


问题答案:

您的中间证书文件是否包含多个证书块?

如果是这种情况,您应该将它们拆分为不同的文件,并一一读取。您可以将它们作为数组传递给ca参数。

我已经将其与以下代码一起使用:

var https = require('https'),
    read = require('fs').readFileSync,
    httpsOptions = {
        key: read('ssl/mycertificate.key', 'utf8'),
        cert: read('ssl/mycertificate.crt', 'utf8'),
        ca: [
            read('ssl/rapidssl_1.pem', 'utf8'),
            read('ssl/rapidssl_2.pem', 'utf8')
        ]
    };

https.createServer(httpsOptions, function (req, res) {
    // ...
});


 类似资料:
  • 给了我一个错误: javax.net.ssl.sslHandShakeException:Sun.Security.Validator.ValidatorException:PKIX路径构建失败:Sun.Security.Provider.CertPath.SunCertPathBuilderException:找不到请求目标的有效证书路径

  • null openssl pkcs12-export-in cert1.pem-inkey privkey1.pem-out cert_and_key.p12-name certificate-cafile fullchain1.pem-caname root keytool-importKeystore-destStorePAS5W0RD123-destKeypass Pas5w0rd123-d

  • 问题内容: 在我提出疑问之前,我至少应该解释一下使用中间件时发生的事情。要使用中间件,要使用的功能是。在执行中间件时,它将使用或使其调用下一个中间件,从而不再调用任何中间件。这意味着我放置中间件调用的顺序很重要,因为某些中间件依赖于其他中间件,而接近末尾的某些中间件甚至可能不会被调用。 今天,我正在开发应用程序,并在后台运行服务器。我想进行一些更改并刷新页面,然后立即查看更改。具体来说,我正在更改

  • 以下脚本适用于: 我从Dwolla的支付API得到了预期的响应。为了使脚本更具动态性,我尝试将其更改为引用托管我希望信任的证书的目录。因此,我将最后一个选项()更改为: 但是,这会中断脚本,并且不会建立连接;错误是: SSL证书问题:无法获取本地颁发者证书 我知道目录是正确的,证书文件是有效的,因为原始脚本引用了同一目录中的证书。我希望扫描目录中的文件并找到它需要的证书,但这没有发生。为什么会这样

  • 我在macos上有IdentityServer4。Idv在本地主机上具有自签名证书。它一直有效,直到macos更新到蒙特利。无法使用Safari、Chrome和Firefox。Safari在空白页面上搜索,Chrome显示error ERR\u SSL\u PROTOCOL\u error。 该证书从6月份起一直有效,到蒙特利为止没有任何问题。 我试图做的是: 创建了密钥大小为4096的新证书。

  • 我在java和cxf中有应用程序,它通过客户端证书连接到Web服务。 我有WebService所有者的证书 证书。p12 证书。pem 证书。crt 受信任的核证机关 根癌 我无法直接将此p12证书转换为java要求的工作jks密钥库。 我是这样做的: 但是这个jks不工作,我得到HTTP响应403:禁止使用这个certificate1.jks 但是,如果我将此p12(pfx)证书导入Intern