M7d follow-ups — remote TLS/auth polish
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 54/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- rust
- 領域
- authentication, cli, security
調査の方向性
docs/remote-tls.md と M7d 設計仕様から始め、次に crates/clowder-daemon/src/main.rs と remote_tls.rs::load_or_generate を調査してください。設計のみの項目に取り組む前に、2 つの具体的なフォローアップに焦点を当ててください。起動時の認証情報がログに露出しないようにし、トークンのローテーションによって証明書または TOFU pin が無効化されないようにしてください。issue にはテストが記載されていないため、受け入れ基準を maintainer と確認してください。
索引モデルが issue の本文から書いたものです。
説明
Context
M7d (#53) shipped opt-in TLS + bearer-token auth + TOFU for the remote daemon. These are the deferred minors from its review and threat model (docs/remote-tls.md, docs/superpowers/specs/2026-08-03-clowder-m7d-remote-tls-auth-design.md). None block use; all are polish/hardening.
Note: the "exposure warning still says NO authentication under TLS" minor was already fixed in the cleanup batch (#54).
Follow-ups
- Token logged in cleartext at info-level (
crates/clowder-daemon/src/main.rs) — the bearer token is printed to the daemon log on startup so the operator can copy it, but it then lands in any log aggregation. Consider redacting from the log and pointing operators atclowder remote-token(which reads the state-dir file) instead, or writing it to a0600file only. - Credential rotation is all-or-nothing (
crates/clowder-daemon/src/remote_tls.rs::load_or_generate) — it only takes the "load" path when all three files (remote-cert.pem,remote-key.pem,remote-token) exist; deleting any one regenerates all three, so "rotate the token" silently also rotates the cert and breaks every client's TOFU pin. Consider independent token rotation (e.g.clowder remote-token --rotatethat regenerates only the token) and/or an explicit--rotate-cert.
Larger deferred items (design-only in the M7d spec)
- mTLS / client certificates — channel-bound client auth instead of a bearer token.
- QUIC transport (
quinn) — if roaming/mux ever matters (M7 deliberately deferred this; TCP+TLS is adequate for a terminal). - Configured-fingerprint pin / pairing UX — an alternative to TOFU that closes the first-connect window (a single pasted "pairing string" of fingerprint + token).
- macOS Keychain storage for the client token (currently config/env only; the Rust forwarder would need
security-framework).
- 主要言語
- Rust
- スター
- 0
- フォーク
- 0
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
richardcase/clowder のほかの issue
-
documentation priority: medium
難易度 2/5 半日 初心者へのやさしさ 82/100
richardcase/clowder#143 ·
-
enhancement github_actions priority: medium rust
難易度 4/5 3〜5日 初心者へのやさしさ 65/100
richardcase/clowder#142 ·
-
github_actions priority: medium
難易度 3/5 1〜2日 初心者へのやさしさ 78/100
richardcase/clowder#141 ·
-
bug priority: medium
難易度 4/5 3〜5日 初心者へのやさしさ 68/100
richardcase/clowder#140 ·
-
bug priority: medium
難易度 3/5 1〜2日 初心者へのやさしさ 72/100
richardcase/clowder#139 ·
richardcase/clowder の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
メンテナーはふだん 1 日以内に返信
-
bug i18n priority: medium ui
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
storytold/craft-anything#983 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
needs triage
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
pbakaus/impeccable#1328 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
Dinnerbone/Rascal#91 · リアクション 2 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
higress-group/HiRoute#405 ·
メンテナーはふだん 1 日以内に返信