扭曲箱错误。尝试在 Rust 中为 HTTPS 配置服务器,但“身份 PEM 丢失”

问题描述 投票:0回答:1

因此,我将证书应用到我的服务器,但发生了运行时错误:

thread 'tokio-runtime-worker' panicked at /home/ubuntu/.cargo/registry/src/index.crates.io-6f17d22bba15001f/warp-0.3.7/src/server.rs:550:27:
error binding to 0.0.0.0:443: Identity PEM is missing a private key such as RSA, ECC or PKCS8
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

下面是我的代码:

    let routes = warp::any().map(|| "Hello, World!");

    // Load SSL keys and certs
        let cert_path = "/etc/letsencrypt/live/merivilla.com/cert.pem";
        let key_path = "/etc/letsencrypt/live/merivilla.com/privkey.pem";


    //start warp server
        warp::serve(routes)
        .tls()
        .cert(cert_path)
        .key(key_path)
        .run(([0, 0, 0, 0], 443))
        .await;

我使用的是 WARP 版本 0.3.7:

Cargo.toml

warp = {version = "0.3", features = ["tls"]}

我尝试使用全链版本而不是

cert.pem
。 我尝试使用链式版本而不是
cert.pem
。 证书是几个月前才拿到的,所以年龄应该不是问题。

我使用 Linux Ubuntu 22 在命令行上使用

sudo
运行它,所以在权限方面不应该有任何问题。

有人可以通过“身份 pem”解释该错误的含义吗?我应该寻找不同版本的证书吗?

rust rust-cargo rust-warp
1个回答
0
投票

您使用的密钥文件的格式可能与 HTTPS 协议不兼容。正如错误消息所示:

Identity PEM is missing a private key such as RSA, ECC or PKCS8

您需要将密钥文件转换为这些格式之一。这是一个

openssl
命令,可将您的密钥转换为 PKCS8。

openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in pkcs1.key -out pkcs8.key
© www.soinside.com 2019 - 2024. All rights reserved.