Documentation
¶
Index ¶
- Variables
- func DebugServer(addr string)
- func FailOnError(err error, msg string)
- func LoadCert(path string) (cert []byte, err error)
- func ProfileCmd(profileName string, stats statsd.Statter)
- func Version() string
- type AppShell
- type CAConfig
- type Config
- type ConfigDuration
- type KeyConfig
- type OCSPUpdaterConfig
- type PAConfig
- type PKCS11Config
- type Queue
- type RateLimitConfig
- type RateLimitPolicy
- type TLSConfig
Constants ¶
This section is empty.
Variables ¶
var ErrDurationMustBeString = errors.New("cannot JSON unmarshal something other than a string into a ConfigDuration")
ErrDurationMustBeString is returned when a non-string value is presented to be deserialized as a ConfigDuration
Functions ¶
func DebugServer ¶
func DebugServer(addr string)
DebugServer starts a server to receive debug information. Typical usage is to start it in a goroutine, configured with an address from the appropriate configuration object:
go cmd.DebugServer(c.XA.DebugAddr)
func FailOnError ¶
FailOnError exits and prints an error message if we encountered a problem
func LoadCert ¶
LoadCert loads a PEM-formatted certificate from the provided path, returning it as a byte array, or an error if it couldn't be decoded.
func ProfileCmd ¶
ProfileCmd runs forever, sending Go runtime statistics to StatsD.
Types ¶
type AppShell ¶
AppShell contains CLI Metadata
func NewAppShell ¶
NewAppShell creates a basic AppShell object containing CLI metadata
func (*AppShell) Run ¶
func (as *AppShell) Run()
Run begins the application context, reading config and passing control to the default commandline action.
func (*AppShell) VersionString ¶
VersionString produces a friendly Application version string
type CAConfig ¶
type CAConfig struct { Profile string TestMode bool DBConnect string SerialPrefix int Key KeyConfig // LifespanOCSP is how long OCSP responses are valid for; It should be longer // than the minTimeToExpiry field for the OCSP Updater. LifespanOCSP string // How long issued certificates are valid for, should match expiry field // in cfssl config. Expiry string // The maximum number of subjectAltNames in a single certificate MaxNames int CFSSL cfsslConfig.Config MaxConcurrentRPCServerRequests int64 // DebugAddr is the address to run the /debug handlers on. DebugAddr string }
CAConfig structs have configuration information for the certificate authority, including database parameters as well as controls for issued certificates.
type Config ¶
type Config struct { ActivityMonitor struct { // DebugAddr is the address to run the /debug handlers on. DebugAddr string } // General AMQP struct { Server string Insecure bool RA Queue VA Queue SA Queue CA Queue OCSP Queue Publisher Queue TLS *TLSConfig } WFE struct { BaseURL string ListenAddress string AllowOrigins []string CertCacheDuration string CertNoCacheExpirationWindow string IndexCacheDuration string IssuerCacheDuration string ShutdownStopTimeout string ShutdownKillTimeout string // DebugAddr is the address to run the /debug handlers on. DebugAddr string } CA CAConfig Monolith struct { // DebugAddr is the address to run the /debug handlers on. DebugAddr string } RA struct { RateLimitPoliciesFilename string MaxConcurrentRPCServerRequests int64 MaxContactsPerRegistration int // DebugAddr is the address to run the /debug handlers on. DebugAddr string } SA struct { DBConnect string MaxConcurrentRPCServerRequests int64 // DebugAddr is the address to run the /debug handlers on. DebugAddr string } VA struct { UserAgent string PortConfig va.PortConfig MaxConcurrentRPCServerRequests int64 // DebugAddr is the address to run the /debug handlers on. DebugAddr string } SQL struct { SQLDebug bool } Statsd struct { Server string Prefix string } Syslog struct { Network string Server string Tag string } Revoker struct { DBConnect string } Mailer struct { Server string Port string Username string Password string DBConnect string CertLimit int NagTimes []string // Path to a text/template email template EmailTemplate string // DebugAddr is the address to run the /debug handlers on. DebugAddr string } OCSPResponder struct { // 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. Source string Path string ListenAddress string // MaxAge is the max-age to set in the Cache-Controler response // header. It is a time.Duration formatted string. MaxAge ConfigDuration ShutdownStopTimeout string ShutdownKillTimeout string // DebugAddr is the address to run the /debug handlers on. DebugAddr string } OCSPUpdater OCSPUpdaterConfig Publisher struct { MaxConcurrentRPCServerRequests int64 // DebugAddr is the address to run the /debug handlers on. DebugAddr string } ExternalCertImporter struct { CertsToImportCSVFilename string DomainsToImportCSVFilename string CertsToRemoveCSVFilename string StatsdRate float32 } PA PAConfig Common struct { BaseURL string // Path to a PEM-encoded copy of the issuer certificate. IssuerCert string DNSResolver string DNSTimeout string DNSAllowLoopbackAddresses bool CT publisher.CTConfig } CertChecker struct { Workers int ReportDirectoryPath string DBConnect string } SubscriberAgreementURL string }
Config stores configuration parameters that applications will need. For simplicity, we just lump them all into one struct, and use encoding/json to read it from a file.
Note: NO DEFAULTS are provided.
type ConfigDuration ¶
ConfigDuration is just an alias for time.Duration that allows serialization to YAML as well as JSON.
func (ConfigDuration) MarshalJSON ¶
func (d ConfigDuration) MarshalJSON() ([]byte, error)
MarshalJSON returns the string form of the duration, as a byte array.
func (*ConfigDuration) UnmarshalJSON ¶
func (d *ConfigDuration) UnmarshalJSON(b []byte) error
UnmarshalJSON parses a string into a ConfigDuration using time.ParseDuration. If the input does not unmarshal as a string, then UnmarshalJSON returns ErrDurationMustBeString.
func (*ConfigDuration) UnmarshalYAML ¶
func (d *ConfigDuration) UnmarshalYAML(unmarshal func(interface{}) error) error
UnmarshalYAML uses the same frmat as JSON, but is called by the YAML parser (vs. the JSON parser).
type KeyConfig ¶
type KeyConfig struct { File string PKCS11 PKCS11Config }
KeyConfig should contain either a File path to a PEM-format private key, or a PKCS11Config defining how to load a module for an HSM.
type OCSPUpdaterConfig ¶
type OCSPUpdaterConfig struct { DBConnect string NewCertificateWindow ConfigDuration OldOCSPWindow ConfigDuration MissingSCTWindow ConfigDuration RevokedCertificateWindow ConfigDuration NewCertificateBatchSize int OldOCSPBatchSize int MissingSCTBatchSize int RevokedCertificateBatchSize int OCSPMinTimeToExpiry ConfigDuration OldestIssuedSCT ConfigDuration // DebugAddr is the address to run the /debug handlers on. DebugAddr string }
OCSPUpdaterConfig provides the various window tick times and batch sizes needed for the OCSP (and SCT) updater
type PAConfig ¶
PAConfig specifies how a policy authority should connect to its database, and what policies it should enforce.
type PKCS11Config ¶
PKCS11Config defines how to load a module for an HSM.
type RateLimitConfig ¶
type RateLimitConfig struct { // Total number of certificates that can be extant at any given time. // The 2160h window, 90 days, is chosen to match certificate lifetime, since the // main capacity factor is how many OCSP requests we can sign with available // hardware. TotalCertificates RateLimitPolicy `yaml:"totalCertificates"` // Number of certificates that can be extant containing any given name. // These are counted by "base domain" aka eTLD+1, so any entries in the // overrides section must be an eTLD+1 according to the publicsuffix package. CertificatesPerName RateLimitPolicy `yaml:"certificatesPerName"` // Number of registrations that can be created per IP. // Note: Since this is checked before a registration is created, setting a // RegistrationOverride on it has no effect. RegistrationsPerIP RateLimitPolicy `yaml:"registrationsPerIP"` // Number of pending authorizations that can exist per account. Overrides by // key are not applied, but overrides by registration are. PendingAuthorizationsPerAccount RateLimitPolicy `yaml:"pendingAuthorizationsPerAccount"` }
RateLimitConfig contains all application layer rate limiting policies
func LoadRateLimitPolicies ¶
func LoadRateLimitPolicies(filename string) (RateLimitConfig, error)
LoadRateLimitPolicies loads various rate limiting policies from a YAML configuration file
type RateLimitPolicy ¶
type RateLimitPolicy struct { // How long to count items for Window ConfigDuration `yaml:"window"` // The max number of items that can be present before triggering the rate // limit. Zero means "no limit." Threshold int `yaml:"threshold"` // A per-key override setting different limits than the default (higher or lower). // The key is defined on a per-limit basis and should match the key it counts on. // For instance, a rate limit on the number of certificates per name uses name as // a key, while a rate limit on the number of registrations per IP subnet would // use subnet as a key. // Note that a zero entry in the overrides map does not mean "not limit," it // means a limit of zero. Overrides map[string]int `yaml:"overrides"` // A per-registration override setting. This can be used, e.g. if there are // hosting providers that we would like to grant a higher rate of issuance // than the default. If both key-based and registration-based overrides are // available, the registration-based on takes priority. RegistrationOverrides map[int64]int `yaml:"registrationOverrides"` }
RateLimitPolicy describes a general limiting policy
func (*RateLimitPolicy) Enabled ¶
func (rlp *RateLimitPolicy) Enabled() bool
Enabled returns true iff the RateLimitPolicy is enabled.
func (*RateLimitPolicy) GetThreshold ¶
func (rlp *RateLimitPolicy) GetThreshold(key string, regID int64) int
GetThreshold returns the threshold for this rate limit, taking into account any overrides for `key`.
func (*RateLimitPolicy) WindowBegin ¶
func (rlp *RateLimitPolicy) WindowBegin(windowEnd time.Time) time.Time
WindowBegin returns the time that a RateLimitPolicy's window begins, given a particular end time (typically the current time).