owncloud / owncloud/developer-certificates

Implement privileged first-party issuance path (core + core-bundled apps)

Open
#23 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
0
Forks
0
Avg merge
51m
Merged PRs (30d)
1

Description

Summary

The self-service issuer bot cannot issue leaves for core and the 12 core-bundled apps, because they have no standalone repo with a root appinfo/info.xml to run the nonce challenge against. These are first-party identities that need the privileged first-party issuance path described in the PKI design §15 ("Model A") / §19 Phase 5 — which is not implemented.

The 13 identities

core + comments, dav, federatedfilesharing, federation, files, files_external, files_sharing, files_trashbin, files_versions, provisioning_api, systemtags, updatenotification — all live inside owncloud/core (apps/<id>/appinfo/info.xml), not standalone owncloud/<id> repos; core has no app id.

Why the issuer bot can't do it

internal/enroll/enroll.go calls GetFile(f.Repo, "appinfo/info.xml") (fixed root path) and proves control via a per-repo nonce commit. Neither works for an app whose info.xml is nested inside owncloud/core, nor for core (no info.xml). Verified: owncloud/files, owncloud/dav, etc. return 404 (no standalone repos).

Ask

Implement a privileged, org-gated issuance path (sibling to privileged-revocation.yml / cmd/privrevoke): a workflow_dispatch-only workflow that takes a CSR (or appId + CSR), skips the nonce/repo challenge (control proven by the org-member dispatch gate per design §11/§15), and issues the leaf reusing internal/certtmpl.Leaf + internal/signer under the real intermediate. Should also seed the reserved ledger/<id>.json entries (design §15 / §19 Phase 5).

Context

Needed to complete G2 signing-cert enrollment for the oc11 (11.0.0-rc1) release. The 44 standalone first-party apps go through the normal issuer bot (currently blocked separately by owncloud/admin#211 — bypass actor not live). Key+CSR material for all 13 is already staged in the signing key store; a handoff note with the exact leaf profile accompanies it there.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the PKI design sections 11, 15, and 19, then inspect internal/enroll/enroll.go, privileged-revocation.yml, and cmd/privrevoke. Trace how internal/certtmpl.Leaf and internal/signer are used under the real intermediate. Done means an org-gated workflow_dispatch path issues the 13 first-party leaves without the nonce challenge and seeds the reserved ledger entries.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, go
Domain
ci-cd, cryptography, release, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.