【问题标题】:Nginx - setting up SSL with existing .crt, .key and CA.pem filesNginx - 使用现有的 .crt、.key 和 CA.pem 文件设置 SSL
【发布时间】:2018-12-15 03:26:54
【问题描述】:

我有一个.crt.keyCA.pem 文件,这些文件是由like this 生成的。

这些证书是项目范围的,它们在 HTTPS 上启动 webpack-dev-server 服务器时起作用,例如:

devServer: {
  https: {
    key: fs.readFileSync('/path/to/example.com.key'),
    cert: fs.readFileSync('/path/to/examle.com.crt'),
    ca: fs.readFileSync('/path/to/CA.pem'),
  }
}

现在我需要使用这 3 个文件设置 Nginx 服务器,但我一直在尝试,但没有成功。这是我的配置:

server {
    listen       3000;

    ssl_certificate certs/example.com.crt;
    ssl_certificate_key certs/example.com.key;

    # where does the CA.pem file go??
}

结果是 Chrome 给了我一个

This site can’t provide a secure connection 
example.com sent an invalid response.
ERR_SSL_PROTOCOL_ERROR

Nginx 日志显示随机十六进制字符:

172.18.0.1 - - [14/Dec/2018:18:01:55 +0000] "\x16\x03\x01\x00\xDD\x01\x00\x00\xD9\x03\x03\xAB\xE1\xB3\x1F\xCE\x02\x02\xC5}q\xDFgd\xF1`\xC1m\x8E\x99\xCE' \x98\xDF\xDEEg\x8Fm\xED\x9F\xB1\x00\x00\x1C" 400 166 "-" "-" "-" 0.001 -

任何想法我可能做错了什么?

【问题讨论】:

    标签: ssl nginx webpack-dev-server


    【解决方案1】:

    您需要将您的证书与 nginx 的 CA 连接起来:

    cp example.com.crt example.com.fullchain.pem
    cat CA.pem >> example.com.fullchain.pem
    

    并在 nginx 配置中使用此文件:

    ssl_certificate certs/example.com.fullchain.pem;
    

    【讨论】:

    • 我实际上只连接了 CA 和 crt。但是确实有效
    • 我认为这正是我告诉你要做的,我在回答中没有提到密钥文件。连接文件的完整路径为ssl_sertificate 参数,密钥文件的完整路径为ssl_certificate_key 参数。仅供参考,Let's Encrypt 的 certbot 生成所有这些文件(密钥为 privkey.pem,证书为 cert.pem,CA 为 chain.pem,串联的购物车+CA 为 fullchain.pem)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    • 2018-10-27
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    • 2020-01-04
    • 2018-09-23
    相关资源
    最近更新 更多