letsencrypt / letsencrypt/boulder

Creating an "overarching" configurable ceremony type

Open
#5,276 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
5.8k
Forks
649
Avg merge
3d 23h
Merged PRs (30d)
24

Description

Captured from a conversation that @aarongable and I had:

Create a new ceremony config which acts as a meta-config, saying "process these config files in this order, sending the outputs of this step to the inputs of that step"

A declarative replacement for what currently lives in run.sh and some hard-coded paths in the config files.

As an added feature, the program should be able to output a dot file diagramming the hierarchy

digraph structs {
    node [style=filled shape=note fontname=Arial];
    rankdir=TB;
    splines=ortho;
    pad="0";
    ranksep=".8";
    nodesep=".3";
    concentrate=true;
    {rank = same; dstrootcax3; isrgrootx1; isrgrootx2}
    {rank = same; leax1; leax3; r3; e1;}
    
    subgraph R {
        dstrootcax3 -> isrgrootx1 -> isrgrootx2 [arrowhead=vee]
        dstrootcax3 [label="DST Root CA X3" fillcolor=orange];
        isrgrootx1 [label="ISRG Root X1" fillcolor=orange];
        isrgrootx2 [label="ISRG Root X2" fillcolor=cadetblue3];
    }
    subgraph IR {
        isrgrootx1 -> leax1 -> ee1 [arrowhead=vee]
        isrgrootx1 -> leax3 -> ee2 [arrowhead=vee]
        isrgrootx1 -> r3 -> ee3 [arrowhead=vee]
        dstrootcax3 -> leax1 [color=gray40 style=dotted arrowhead=vee]
        dstrootcax3 -> leax3 [color=gray40 style=dotted arrowhead=vee]
        dstrootcax3 -> r3 [color=gray40 style=dotted arrowhead=vee]
        leax1 [label="LEA X1" fillcolor=orange];
        leax3 [label="LEA X3" fillcolor=orange];
        r3 [label="R3" fillcolor=orange];
        ee1 [label="EE"];
        ee2 [label="EE"];
        ee3 [label="EE"];
    }
    subgraph IE {
        isrgrootx2 -> e1 -> ee4 [arrowhead=vee]
        e1 [label="E1" fillcolor=cadetblue3];
        ee4 [label="EE"];
    }

image

Contributor guide

Open the contributing guide

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 by examining run.sh and the existing ceremony config files to understand the current ordering, hard-coded paths, and data flow. Define how the overarching config represents those steps and how the program should emit a Graphviz dot diagram; done should include a working declarative replacement and the requested hierarchy output.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.