Commit Graph

15 Commits

Author SHA1 Message Date
Andrew Gabbitas 87ef1b4934
Use OCSP NextUpdate to calculate Redis TTL (#6031) 2022-04-04 15:18:11 -06:00
Andrew Gabbitas e2b49dbe0a
Support writing OCSP to Redis on revocation (#6012)
If a Redis client is configured for the SA service, OCSP responses created
during a revocation event will be written to Redis on a best effort basis.

Use the OCSP response NextUpdate time as the expiration time for the
redis entry. Change the new issuance OCSP storage to do the same.

Fixes #5888
2022-04-01 13:59:56 -06:00
Andrew Gabbitas 79048cffba
Support writing initial OCSP response to redis (#5958)
Adds a rocsp redis client to the sa if cluster information is provided in the
sa config. If a redis cluster is configured, all new certificate OCSP
responses added with sa.AddPrecertificate will attempt to be written to
the redis cluster, but will not block or fail on errors.

Fixes: #5871
2022-03-21 20:33:12 -06:00
Andrew Gabbitas c931cf06e6
Fix typo in rocsp doc comment (#5989) 2022-03-11 11:42:53 -07:00
Aaron Gable d1777c5fda
Fix shadowing assignments inside closures (#5944)
When inside a closure, it is important to not accidentally assign
to variables declared outside the scope of the closure. Doing so
causes static analysis tools (such as `errcheck`) to be unable to
evaluate the lifetime of the variable, and unable to determine if
it is appropriately read from before being assigned to again.

Fix two instances where we assign to a variable declared in the
closure's enclosing scope, rather than declaring a new variable
with the same name.
2022-02-16 14:33:17 -08:00
Aaron Gable ab79f96d7b
Fixup staticcheck and stylecheck, and violations thereof (#5897)
Add `stylecheck` to our list of lints, since it got separated out from
`staticcheck`. Fix the way we configure both to be clearer and not
rely on regexes.

Additionally fix a number of easy-to-change `staticcheck` and
`stylecheck` violations, allowing us to reduce our number of ignored
checks.

Part of #5681
2022-01-20 16:22:30 -08:00
Jacob Hoffman-Andrews 06ba17c2be
Add scanning to rocsp-tool (#5864)
We can scan metadata and get the age of responses.
We can scan responses and print them in base64.

Note: this issues a GET for each key, and blocks on the result. For much
faster scanning we will want to introduce parallel GETs in a subsequent
PR.

Also, add a `get` operation to get a single entry.

Fixes #5830
2022-01-18 14:27:15 -08:00
Andrew Gabbitas 47377915f9
Add latency metrics to rocsp (#5865)
Measure and export latency histogram metrics for ocsp storage and lookup
operations in redis.

Fixes #5832
2022-01-10 16:22:55 -07:00
Andrew Gabbitas 8ea5a3dcbf
Handle redis lookup errors when value not found (#5860)
Add a not found error type to rocsp.

Handle redis value not found lookup errors in the ocsp-responder different
than other redis lookup errors.

Add labels to the to ocspLookup metric and delete the source used
metric. This can now be determined based on which lookup metric
reports success.

Fixes #5833
2021-12-22 13:19:24 -08:00
Andrew Gabbitas def152b722
Export Prometheus stats for Redis ClusterClient (#5828)
Redis ClusterClient has metrics available. Create a collector so
Prometheus can access the metrics on-demand.

Part of #5768
2021-12-06 18:27:18 -08:00
Jacob Hoffman-Andrews 3d7206a183
ocsp-updater: add support for writing to Redis (#5825)
If configured, ocsp-updater will write responses to Redis in parallel
with MariaDB, giving up if Redis is slower and incrementing a stat.

Factors out the ShortIDIssuer concept from rocsp-tool into
rocsp_config.
2021-12-06 14:46:46 -08:00
Andrew Gabbitas 6184ad5365
Add `MakeReadClient` for creating a redis reader (#5814)
Add a function to create and return a read only redis client.
2021-11-25 12:16:01 -07:00
Jacob Hoffman-Andrews d9245e9eda
Plumb through Redis config options. (#5803)
All the options from
https://pkg.go.dev/github.com/go-redis/redis#Options (except "DB int",
which we don't use) are now available via our JSON config.
2021-11-17 17:12:11 -08:00
Jacob Hoffman-Andrews 4f1934af82
Add load-from-db support to rocsp-tool (#5778)
This scans the database for certificateStatus rows, gets them signed by the CA, and writes them to Redis.

Also, bump the default PoolSize for Redis to 100.
2021-11-08 17:35:10 -08:00
Jacob Hoffman-Andrews 7fab32a000
Add rocsp-tool to manually store OCSP responses in Redis (#5758)
This is a sort of proof of concept of the Redis interaction, which will
evolve into a tool for inspection and manual repair of missing entries,
if we find ourselves needing to do that.

The important bits here are rocsp/rocsp.go and
cmd/rocsp-tool/main.go. Also, the newly-vendored Redis client.
2021-11-02 11:04:03 -07:00