...

Package notmain

import "github.com/letsencrypt/boulder/cmd/crl-updater"
Overview
Index

Overview ▾

Index ▾

Package files

main.go

type Config

type Config struct {
    CRLUpdater struct {
        DebugAddr string

        // TLS client certificate, private key, and trusted root bundle.
        TLS cmd.TLSConfig

        SAService           *cmd.GRPCClientConfig
        CRLGeneratorService *cmd.GRPCClientConfig
        CRLStorerService    *cmd.GRPCClientConfig

        // IssuerCerts is a list of paths to issuer certificates on disk. This
        // controls the set of CRLs which will be published by this updater: it will
        // publish one set of NumShards CRL shards for each issuer in this list.
        IssuerCerts []string `validate:"min=1,dive,required"`

        // NumShards is the number of shards into which each issuer's "full and
        // complete" CRL will be split.
        // WARNING: When this number is changed, the "JSON Array of CRL URLs" field
        // in CCADB MUST be updated.
        NumShards int `validate:"min=1"`

        // ShardWidth is the amount of time (width on a timeline) that a single
        // shard should cover. Ideally, NumShards*ShardWidth should be an amount of
        // time noticeably larger than the current longest certificate lifetime,
        // but the updater will continue to work if this is not the case (albeit
        // with more confusing mappings of serials to shards).
        // WARNING: When this number is changed, revocation entries will move
        // between shards.
        ShardWidth config.Duration `validate:"-"`

        // LookbackPeriod is how far back the updater should look for revoked expired
        // certificates. We are required to include every revoked cert in at least
        // one CRL, even if it is revoked seconds before it expires, so this must
        // always be greater than the UpdatePeriod, and should be increased when
        // recovering from an outage to ensure continuity of coverage.
        LookbackPeriod config.Duration `validate:"-"`

        // CertificateLifetime is the validity period (usually expressed in hours,
        // like "2160h") of the longest-lived currently-unexpired certificate. For
        // Let's Encrypt, this is usually ninety days. If the validity period of
        // the issued certificates ever changes upwards, this value must be updated
        // immediately; if the validity period of the issued certificates ever
        // changes downwards, the value must not change until after all certificates with
        // the old validity period have expired.
        // DEPRECATED: This config value is no longer used.
        // TODO(#6438): Remove this value.
        CertificateLifetime config.Duration `validate:"-"`

        // UpdatePeriod controls how frequently the crl-updater runs and publishes
        // new versions of every CRL shard. The Baseline Requirements, Section 4.9.7
        // state that this MUST NOT be more than 7 days. We believe that future
        // updates may require that this not be more than 24 hours, and currently
        // recommend an UpdatePeriod of 6 hours.
        UpdatePeriod config.Duration

        // UpdateOffset controls the times at which crl-updater runs, to avoid
        // scheduling the batch job at exactly midnight. The updater runs every
        // UpdatePeriod, starting from the Unix Epoch plus UpdateOffset, and
        // continuing forward into the future forever. This value must be strictly
        // less than the UpdatePeriod.
        // DEPRECATED: This config value is not relevant with continuous updating.
        // TODO(#7023): Remove this value.
        UpdateOffset config.Duration `validate:"-"`

        // UpdateTimeout controls how long a single CRL shard is allowed to attempt
        // to update before being timed out. The total CRL updating process may take
        // significantly longer, since a full update cycle may consist of updating
        // many shards with varying degrees of parallelism. This value must be
        // strictly less than the UpdatePeriod. Defaults to 10 minutes, one order
        // of magnitude greater than our p99 update latency.
        UpdateTimeout config.Duration `validate:"-"`

        // MaxParallelism controls how many workers may be running in parallel.
        // A higher value reduces the total time necessary to update all CRL shards
        // that this updater is responsible for, but also increases the memory used
        // by this updater. Only relevant in -runOnce mode.
        MaxParallelism int `validate:"min=0"`

        // MaxAttempts control how many times the updater will attempt to generate
        // a single CRL shard. A higher number increases the likelihood of a fully
        // successful run, but also increases the worst-case runtime and db/network
        // load of said run. The default is 1.
        MaxAttempts int `validate:"omitempty,min=1"`

        Features map[string]bool
    }

    Syslog        cmd.SyslogConfig
    OpenTelemetry cmd.OpenTelemetryConfig
}