因此,我将证书应用到我的服务器,但发生了运行时错误:
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”解释该错误的含义吗?我应该寻找不同版本的证书吗?
您使用的密钥文件的格式可能与 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