5个版本 (稳定)
1.2.1 | 2024年5月30日 |
---|---|
1.1.0 | 2024年2月18日 |
1.0.3 | 2024年2月18日 |
0.1.0 | 2024年2月18日 |
#234 在 密码学
每月246次下载
43KB
406 行
Rust WKD服务器
什么是WKD?
运行此项目
将您的公钥放入 ./openpgp/keys
。文件应使用您注册该密钥的电子邮件地址命名。以下是一些示例
- 有效名称
用户@示例.com
user@example.com.asc
(可选的.asc
文件扩展名将被忽略)
- 无效名称
ktujkt7nrz91b17es7prizffedzxrsna
(wkd散列 -- 此工具将散列用户名)我的-公共-密钥.asc
可选地,将您的策略放入 ./openpgp
中的文本文件。
cargo build --release
./target/release/wkd-server ./openpgp/keys
用法
Usage: wkd-server [OPTIONS] <KEYS_PATH>
Arguments:
<KEYS_PATH> The path where the GPG keys are stored
Options:
--address <ADDRESS> [env: ADDRESS=] [default: 0.0.0.0]
--port <PORT> [env: PORT=] [default: 8080]
-p, --policy <POLICY> The path to the policy file. If not set, an empty policy is served [env: POLICY=]
-h, --help Print help
安全
此服务器将拒绝提供私有或无效的密钥。如果文件包含一个私有密钥和一个公钥,则只提供公钥。不过,请确保只包括您的公钥。
部署
您可以将此 docker-compose.yaml
示例文件作为您部署的起点。请确保将您的公钥作为卷添加。
services:
wkd-server:
image: ghcr.io/martin-fink/rust-wkd-server:latest
volumes:
- ./keys:/openpgp-keys:ro
ports:
- 127.0.0.1:8080:8080
environment:
- RUST_LOG=error,wkd_server=info # change this to trace for debugging
labels:
- "traefik.enable=true"
- "traefik.http.routers.rust-wkd-server.rule=(Host(`<your-domain>`) && PathPrefix(`/.well-known/openpgpkey`))"
- "traefik.http.routers.rust-wkd-server.entrypoints=<your-https-entrypoint>"
- "traefik.http.routers.rust-wkd-server.tls=true"
- "traefik.http.routers.rust-wkd-server.tls.certResolver=<your-certResolver>"
- "traefik.services.rust-wkd-server.loadbalancer.passHostHeader=true"
反向代理设置
您可能希望将其放在像nginx这样的反向代理后面,以便它能够处理https。您可以使用以下nginx片段。重要的是要设置 X-Forwarded-Host
标头,因为这个标头用于区分域名。
location ^~ /.well-known/openpgpkey {
resolver 127.0.0.11 valid=5s;
set $upstream_endpoint http://address:port;
proxy_pass $upstream_endpoint;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-Host $host;
}
依赖项
~30–44MB
~640K SLoC