...

Package notmain

import "github.com/letsencrypt/boulder/cmd/ocsp-responder"
Overview
Index

Overview ▾

Index ▾

Package files

main.go

type Config

type Config struct {
    OCSPResponder struct {
        DebugAddr string       `validate:"hostname_port"`
        DB        cmd.DBConfig `validate:"required_without_all=Source SAService,structonly"`

        // Source indicates the source of pre-signed OCSP responses to be used. It
        // can be a DBConnect string or a file URL. The file URL style is used
        // when responding from a static file for intermediates and roots.
        // If DBConfig has non-empty fields, it takes precedence over this.
        Source string `validate:"required_without_all=DB.DBConnectFile SAService Redis"`

        // The list of issuer certificates, against which OCSP requests/responses
        // are checked to ensure we're not responding for anyone else's certs.
        IssuerCerts []string `validate:"min=1,dive,required"`

        Path string

        // ListenAddress is the address:port on which to listen for incoming
        // OCSP requests. This has a default value of ":80".
        ListenAddress string `validate:"omitempty,hostname_port"`

        // When to timeout a request. This should be slightly lower than the
        // upstream's timeout when making request to ocsp-responder.
        Timeout config.Duration `validate:"-"`

        // How often a response should be signed when using Redis/live-signing
        // path. This has a default value of 60h.
        LiveSigningPeriod config.Duration `validate:"-"`

        // A limit on how many requests to the RA (and onwards to the CA) will
        // be made to sign responses that are not fresh in the cache. This
        // should be set to somewhat less than
        // (HSM signing capacity) / (number of ocsp-responders).
        // Requests that would exceed this limit will block until capacity is
        // available and eventually serve an HTTP 500 Internal Server Error.
        // This has a default value of 1000.
        MaxInflightSignings int `validate:"min=0"`

        // A limit on how many goroutines can be waiting for a signing slot at
        // a time. When this limit is exceeded, additional signing requests
        // will immediately serve an HTTP 500 Internal Server Error until
        // we are back below the limit. This provides load shedding for when
        // inbound requests arrive faster than our ability to sign them.
        // The default of 0 means "no limit." A good value for this is the
        // longest queue we can expect to process before a timeout. For
        // instance, if the timeout is 5 seconds, and a signing takes 20ms,
        // and we have MaxInflightSignings = 40, we can expect to process
        // 40 * 5 / 0.02 = 10,000 requests before the oldest request times out.
        MaxSigningWaiters int `validate:"min=0"`

        ShutdownStopTimeout config.Duration

        RequiredSerialPrefixes []string `validate:"omitempty,dive,hexadecimal"`

        Features map[string]bool

        // Configuration for using Redis as a cache. This configuration should
        // allow for both read and write access.
        Redis *rocsp_config.RedisConfig `validate:"required_without=Source"`

        // TLS client certificate, private key, and trusted root bundle.
        TLS cmd.TLSConfig `validate:"required_without=Source,structonly"`

        // RAService configures how to communicate with the RA when it is necessary
        // to generate a fresh OCSP response.
        RAService *cmd.GRPCClientConfig

        // SAService configures how to communicate with the SA to look up
        // certificate status metadata used to confirm/deny that the response from
        // Redis is up-to-date.
        SAService *cmd.GRPCClientConfig `validate:"required_without_all=DB.DBConnectFile Source"`

        // LogSampleRate sets how frequently error logs should be emitted. This
        // avoids flooding the logs during outages. 1 out of N log lines will be emitted.
        // If LogSampleRate is 0, no logs will be emitted.
        LogSampleRate int `validate:"min=0"`
    }

    Syslog        cmd.SyslogConfig
    OpenTelemetry cmd.OpenTelemetryConfig

    // OpenTelemetryHTTPConfig configures tracing on incoming HTTP requests
    OpenTelemetryHTTPConfig cmd.OpenTelemetryHTTPConfig
}