Skip to content

Commit 00dd199

Browse files
authored
observer: add CCADB CRL prober (#8644)
Prior work: letsencrypt/crl-monitor#88 Fixes #8618
1 parent 84b88da commit 00dd199

8 files changed

Lines changed: 484 additions & 3 deletions

File tree

cmd/boulder-observer/README.md

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ Prometheus.
3131
* [TLS](#tls)
3232
* [Schema](#schema-6)
3333
* [Example](#example-6)
34+
* [CCADB](#ccadb)
35+
* [Schema](#schema-7)
36+
* [Example](#example-7)
3437
* [Metrics](#metrics)
3538
* [Global Metrics](#global-metrics)
3639
* [obs_monitors](#obs_monitors)
@@ -255,6 +258,38 @@ monitors:
255258
response: valid
256259
```
257260

261+
#### CCADB
262+
263+
##### Schema
264+
265+
`allCertificatesCSVURL`: URL of the "V4 All Certificate Information (root and
266+
intermediate) in CCADB (CSV)" report from https://www.ccadb.org/resources.
267+
Default value works.
268+
269+
`certificatePEMsURL`: Base URL of the "All Certificate PEMs" report from
270+
https://www.ccadb.org/resources (i.e. without the "NotBeforeDecade"
271+
parameter). Default value works.
272+
273+
`caOwner`: The value of the "CA Owner" field to filter on in the "All
274+
Certificate Information" report. Default value works for ISRG.
275+
276+
`crlAgeLimit`: Error when a CRL is older than this.
277+
278+
`crlRegexp`: A regexp that matches our CRL URLs. Prevents fetching arbitrary
279+
URLs. At a minimum this should have strict matching on the origin part of the
280+
URL. Default value works.
281+
282+
##### Example
283+
284+
```yaml
285+
monitors:
286+
-
287+
period: 1h
288+
kind: CCADB
289+
settings:
290+
crlAgeLimit: 2h
291+
```
292+
258293
## Metrics
259294

260295
Observer provides the following metrics.
@@ -442,4 +477,4 @@ prometheus --config.file=boulder/test/prometheus/prometheus.yml
442477
### Viewing metrics locally
443478

444479
When developing with a local Prometheus instance you can use this link
445-
to view metrics: [link](http://0.0.0.0:9090)
480+
to view metrics: [link](http://0.0.0.0:9090)

cmd/boulder-observer/main.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import (
1313
)
1414

1515
func main() {
16+
defer cmd.AuditPanic()
17+
1618
debugAddr := flag.String("debug-addr", "", "Debug server address override")
1719
configPath := flag.String(
1820
"config", "config.yml", "Path to boulder-observer configuration file")

observer/mon_conf.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
// MonConf is exported to receive YAML configuration in `ObsConf`.
1515
type MonConf struct {
1616
Period config.Duration `yaml:"period"`
17-
Kind string `yaml:"kind" validate:"required,oneof=DNS HTTP CRL TLS AIA"`
17+
Kind string `yaml:"kind" validate:"required,oneof=DNS HTTP CRL TLS AIA CCADB"`
1818
Settings probers.Settings `yaml:"settings" validate:"min=1,dive"`
1919
}
2020

observer/obs_conf.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,6 @@ func (c *ObsConf) MakeObserver() (*Observer, error) {
9999
}, []string{"name", "kind", "success"})
100100
metrics.MustRegister(countMonitors)
101101
metrics.MustRegister(histObservations)
102-
defer cmd.AuditPanic()
103102
cmd.LogStartup(logger)
104103
logger.Infof("Initializing boulder-observer daemon")
105104
logger.Debugf("Using config: %+v", c)

observer/observer.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"github.com/letsencrypt/boulder/cmd"
77
blog "github.com/letsencrypt/boulder/log"
88
_ "github.com/letsencrypt/boulder/observer/probers/aia"
9+
_ "github.com/letsencrypt/boulder/observer/probers/ccadb"
910
_ "github.com/letsencrypt/boulder/observer/probers/crl"
1011
_ "github.com/letsencrypt/boulder/observer/probers/dns"
1112
_ "github.com/letsencrypt/boulder/observer/probers/http"

0 commit comments

Comments
 (0)