【问题标题】:Webpack DevServer -> proxy HTTPS resource -> UNABLE_TO_VERIFY_LEAF_SIGNATUREWebpack DevServer -> 代理 HTTPS 资源 -> UNABLE_TO_VERIFY_LEAF_SIGNATURE
【发布时间】:2018-07-15 05:25:03
【问题描述】:

我正在使用具有以下设置的 Webpack DevServer:

devServer: {
    proxy: {
        '*': {
            target: 'https://localhost:44369',
            secure: true
        }
    },
    port: 8080,
    host: '0.0.0.0',
    hot: true,
    https: false
}

https://webpack.js.org/configuration/dev-server/#devserver-https

它在 HTTP 上运行良好,但是当我现在将我的代理切换到 HTTPS 时,我开始收到错误。

在命令提示符下收到以下消息:

[HPM] 尝试代理请求/来自时出错 本地主机:8080 到 https://localhost:44369 (UNABLE_TO_VERIFY_LEAF_SIGNATURE) (https://nodejs.org/api/errors.html#errors_common_system_errors)

我尝试将节点 NODE_TLS_REJECT_UNAUTHORIZED 设置为 0 但这没有帮助。

new webpack.DefinePlugin({
    'process.env.NODE_TLS_REJECT_UNAUTHORIZED': 0
})

是否可以通过某种方式访问​​生成的 CA 证书并将其添加到受信任的根证书颁发机构?这会有所帮助还是我还需要更改其他内容?

如果我将https 切换到true,我会得到同样的错误。

生成 SSL 证书

...

[HPM] 尝试代理请求/来自时出错 本地主机:8080 到 https://localhost:44369 (UNABLE_TO_VERIFY_LEAF_SIGNATURE) (https://nodejs.org/api/errors.html#errors_common_system_errors)

当我在 Chrome 中访问所需资源时,我还会收到以下错误:

更新:

我现在已将 webpack-dev-server 设置为使用与我的原始 Web 服务器 (https://localhost:44369) 相同的证书。我已经验证了ThumbprintSerial number 在两者之间是相同的。

https://webpack.js.org/configuration/dev-server/#devserver-pfx

https: true,
pfx: fs.readFileSync(path.resolve(__dirname, "../Client.WebProxy/App_Data/Certificate/") + '\\localhost.pfx'),
pfxPassphrase: 'securePassword'

我也尝试使用ssl-root-cas 注入证书,但我仍然遇到同样的错误。

var sslRootCAs = require('ssl-root-cas/latest')
sslRootCAs.inject();

也试过了:

target: 'https://[::1]:44369',

https://github.com/saikat/react-apollo-starter-kit/issues/20#issuecomment-316651403

var rootCas = require('ssl-root-cas/latest').create();
rootCas.addFile(path.resolve(__dirname, "../Client.WebProxy/App_Data/Certificate/") + '\\localhost.pem');
require('https').globalAgent.options.ca = rootCas;

https://www.npmjs.com/package/ssl-root-cas

https: {
    key: fs.readFileSync(path.resolve(__dirname, "../Client.WebProxy/App_Data/Certificate/") + '\\localhost.key'),
    cert: fs.readFileSync(path.resolve(__dirname, "../Client.WebProxy/App_Data/Certificate/") + '\\localhost.crt'),
    ca: fs.readFileSync(path.resolve(__dirname, "../Client.WebProxy/App_Data/Certificate/") + '\\localhost.pem'),
}

https://webpack.js.org/configuration/dev-server/#devserver-https

【问题讨论】:

    标签: node.js webpack https proxy webpack-dev-server


    【解决方案1】:

    为此花费了很多时间,但最终它变得如此简单。它的工作原理是将secure 设置为false 作为代理,然后通过http 访问webpack-dev-server。

    https://webpack.js.org/configuration/dev-server/#devserverproxy

    devServer: {
        proxy: {
            '*': {
                target: 'https://localhost:44369',
                secure: false
            }
        },
        port: 8080,
        host: '0.0.0.0',
        hot: true,
    }
    

    【讨论】:

    • 很好的解决方案!对于大多数开发环境来说,这种配置是通往胜利的最快途径,恕我直言。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 2021-02-11
    相关资源
    最近更新 更多