nlnetlabs/krillKrill 是一个资源公钥基础设施(Resource Public Key Infrastructure, RPKI)守护进程,具备证书颁发机构(Certificate Authority, CA)和发布服务器功能,使用 Rust 语言编写。如果您有任何反馈,欢迎通过 GitHub 提交 issue、在 RPKI 邮件列表 或 *** 服务器 留言。您可以通过 Read the Docs 上的文档了解更多关于 Krill 和 RPKI 技术的信息。
Krill 官方 Docker 镜像可从 Docker Hub 获取:
bash# 拉取最新镜像 docker pull nlnetlabs/krill:latest # 运行容器(基本配置) docker run -d \ --name krill \ -p 3000:3000 \ -v /path/to/krill/data:/data \ nlnetlabs/krill:latest
注意:
/path/to/krill/data需替换为本地数据目录,用于持久化存储配置和证书数据。
在 Debian 或 Ubuntu 系统上,可通过官方软件仓库安装:
将对应系统的仓库配置添加到 /etc/apt/sources.list 或 /etc/apt/sources.list.d/ 目录:
bash# Debian stretch deb [arch=amd64] [***] stretch main # Debian buster deb [arch=amd64] [***] buster main # Ubuntu xenial deb [arch=amd64] [***] xenial main # Ubuntu bionic deb [arch=amd64] [***] bionic main # Ubuntu focal deb [arch=amd64] [***] focal main
bash# 更新仓库并安装依赖 sudo apt update && sudo apt-get install -y gnupg2 wget -qO- [***] | sudo apt-key add - sudo apt update # 安装并启动 Krill sudo apt install krill sudo systemctl enable --now krill
安装完成后:
/var/lib/krill//etc/krill.conf(已自动生成认证令牌)https://localhost:3000(使用自签名 TLS 证书)安装 Rust 环境:
bashcurl --proto '=https' --tlsv1.2 -sSf [***] | sh source ~/.cargo/env # 将 Cargo 添加到当前环境变量
安装依赖:
bashsudo apt install build-essential libssl-dev openssl pkg-config curl
bash# 安装 Krill cargo install --locked krill # 创建数据目录并生成配置文件 mkdir ~/data krillc config simple --token correct-horse-battery-staple --data ~/data/ > ~/data/krill.conf # 启动 Krill krill --config ~/data/krill.conf
使用 krillc 生成简单配置文件:
bashkrillc config simple \ --token <your-secret-token> \ # 替换为强密码(建议参考 XKCD 936 标准) --data /path/to/data/ \ # 数据目录路径 > /path/to/data/krill.conf # 输出配置文件
完整配置示例可参考 GitHub 仓库,核心参数包括:
data_dir:数据存储目录路径token:API 和 CLI 认证令牌server.listen:监听地址(默认 127.0.0.1:3000)server.tls:TLS 配置(证书和密钥路径)bash#!/bin/bash KRILL="krill" DATA_DIR="/path/to/data" # 替换为实际数据目录 KRILL_PID="$DATA_DIR/krill.pid" CONF="$DATA_DIR/krill.conf" SCRIPT_OUT="$DATA_DIR/krill.log" nohup $KRILL -c $CONF >$SCRIPT_OUT 2>&1 & echo $! > $KRILL_PID
bash#!/bin/bash DATA_DIR="/path/to/data" # 替换为实际数据目录 KRILL_PID="$DATA_DIR/krill.pid" kill `cat $KRILL_PID`
Krill 默认使用自签名 TLS 证书(位于数据目录的 ssl/ 子目录)。建议生产环境中配置反向代理(如 Nginx 或 Apache):
Nginx 代理示例:
nginxserver { listen 443 ssl; server_name krill.example.com; ssl_certificate /path/to/ca-cert.pem; ssl_certificate_key /path/to/ca-key.pem; location / { proxy_pass [***] proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
server.listen 配置可修改监听地址(如 0.0.0.0:3000 允许所有接口访问)token 复杂度足够,避免未授权访问启动后通过浏览器访问 https://localhost:3000,接受自签名证书警告后即可进入 UI,使用配置文件中的 token 登录。
使用 krillc 工具与 Krill 交互:
bash# 查看 CA 列表 krillc ca list --server https://localhost:3000 --token <your-token> # 创建新 CA krillc ca create --name my-ca --server https://localhost:3000 --token <your-token>
API 文档可通过访问 https://localhost:3000/api/v1/docs 获取,支持 RESTful 风格接口,需在请求头中包含认证令牌:
httpAuthorization: Bearer <your-token>
Docker 镜像更新:
bashdocker pull nlnetlabs/krill:latest docker stop krill && docker rm krill # 重新运行容器(使用原数据卷)
Cargo 安装更新:
bashrustup update cargo install --locked --force krill
Debian/Ubuntu 包更新:
bashsudo apt update && sudo apt upgrade krill
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务