Skip to content

Releases: google/certificate-transparency-go

v1.2.1

30 May 15:30
2308f62
Compare
Choose a tag to compare

What's Changed

Fixes

Dependency update

Full Changelog: v1.2.0...v1.2.1

v1.2.0

28 May 15:39
0c9c98f
Compare
Choose a tag to compare

What's Changed

CTFE Storage Saving: Extra Data Issuance Chain Deduplication

To reduce CT/Trillian database storage by deduplication of the entire issuance chain (intermediate certificate(s) and root certificate) that is currently stored in the Trillian merkle tree leaf ExtraData field. Storage cost should be reduced by at least 33% for new CT logs with this feature enabled. Currently only MySQL/MariaDB is supported to store the issuance chain in the CTFE database.

Existing logs are not affected by this change.

Log operators can choose to opt-in this change for new CT logs by adding new CTFE configs in the LogMultiConfig and importing the database schema. See example.

  • ctfe_storage_connection_string
  • extra_data_issuance_chain_storage_backend

An optional LRU cache can be enabled by providing the following flags.

  • cache_type
  • cache_size
  • cache_ttl

This change is tested in Cloud Build tests using the mysql:8.4 Docker image as of the time of writing.

  • Add issuance chain storage interface by @roger2hk in #1430
  • Add issuance chain cache interface by @roger2hk in #1431
  • Add CTFE extra data storage saving configs to config.proto by @roger2hk in #1432
  • Add new types PrecertChainEntryHash and CertificateChainHash for TLS marshal/unmarshal in storage saving by @roger2hk in #1435
  • Add IssuanceChainCache LRU implementation by @roger2hk in #1454
  • Add issuance chain service by @roger2hk in #1452
  • Add CTFE extra data storage saving configs validation by @roger2hk in #1456
  • Add IssuanceChainStorage MySQL implementation by @roger2hk in #1462
  • Fix errcheck lint in mysql test by @roger2hk in #1464
  • CTFE Extra Data Issuance Chain Deduplication by @roger2hk in #1477
  • Fix incorrect deployment doc and server config by @roger2hk in #1494

Submission proxy: Root compatibility checking

  • Adds the ability for a CT client to disable root compatibile checking by @aaomidi in #1258

Fixes

  • Return 429 Too Many Requests for gRPC error code ResourceExhausted from Trillian by @roger2hk in #1401
  • Safeguard against redirects on PUT request by @mhutchinson in #1418
  • Fix CT client upload to be safe against no-op POSTs by @mhutchinson in #1424

Misc

Dependency update

  • Bump distroless/base-debian12 from 5eae9ef to 28a7f1f in /trillian/examples/deployment/docker/ctfe by @dependabot in #1388
  • Bump github/codeql-action from 3.24.6 to 3.24.7 by @dependabot in #1389
  • Bump actions/checkout from 4.1.1 to 4.1.2 by @dependabot in #1390
  • Bump golang from 6699d28 to 7f9c058 in /integration by @dependabot in #1391
  • Bump golang from 6699d28 to 7f9c058 in /trillian/examples/deployment/docker/ctfe by @dependabot in #1392
  • Bump golang from 6699d28 to 7a392a2 in /internal/witness/cmd/witness by @dependabot in #1393
  • Bump golang from 6699d28 to 7a392a2 in /internal/witness/cmd/feeder by @dependabot in #1394
  • Bump golang from 7a392a2 to d996c64 in /internal/witness/cmd/witness by @dependabot in #1395
  • Bump golang from 7f9c058 to d996c64 in /trillian/examples/deployment/docker/ctfe by @dependabot in #1396
  • Bump golang from 7a392a2 to d996c64 in /internal/witness/cmd/feeder by @dependabot in #1397
  • Bump golang from 7f9c058 to d996c64 in /integration by @dependabot in #1398
  • Bump github/codeql-action from 3.24.7 to 3.24.8 by @dependabot in #1400
  • Bump github/codeql-action from 3.24.8 to 3.24.9 by @dependabot in #1402
  • Bump go.etcd.io/etcd/v3 from 3.5.12 to 3.5.13 by @dependabot in #1405
  • Bump distroless/base-debian12 from 28a7f1f to 611d30d in /trillian/examples/deployment/docker/ctfe by @dependabot in #1406
  • Bump golang from 1.22.1-bookworm to 1.22.2-bookworm in /trillian/examples/deployment/docker/ctfe by @dependabot in #1407
  • Bump golang.org/x/net from 0.22.0 to 0.23.0 by @dependabot in #1408
  • update govulncheck go version from 1.21.8 to 1.21.9 by @phbnf in #1412
  • Bump golang from 1.22.1-bookworm to 1.22.2-bookworm in /integration by @dependabot in #1409
  • Bump golang from 1.22.1-bookworm to 1.22.2-bookworm in /internal/witness/cmd/witness by @dependabot in #1410
  • Bump golang.org/x/crypto from 0.21.0 to 0.22.0 by @dependabot in #1414
  • Bump golang from 1.22.1-bookworm to 1.22.2-bookworm in /internal/witness/cmd/feeder by @dependabot in #1411
  • Bump github/codeql-action from 3.24.9 to 3.24.10 by @dependabot in #1415
  • Bump golang.org/x/net from 0.23.0 to 0.24.0 by @dependabot in #1416
  • Bump google.golang.org/grpc from 1.62.1 to 1.63.2 by @dependabot in #1417
  • Bump github.com/fullstorydev/grpcurl from 1.8.9 to 1.9.1 by @dependabot in #1419
  • Bump golang from 48b942a to 3451eec in /integration by @dependabot in #1421
  • Bump golang from 48b942a to 3451eec in /trillian/examples/deployment/docker/ctfe by @dependabot in #1423
  • Bump golang from 48b942a to 3451eec in /internal/witness/cmd/witness by @dependabot in #1420
  • Bump golang from 3451eec to b03f3ba in /integration by @dependabot in #1426
  • Bump golang from 3451eec to b03f3ba in /trillian/examples/deployment/docker/ctfe by @dependabot in #1425
  • Bump golang from 48b942a to 3451eec in /internal/witness/cmd/feeder by @dependabot in #1422
  • Bump golang from 3451eec to b03f3ba in /internal/witness/cmd/witness by @dependabot in #1427
  • Bump golang from 3451eec to b03f3ba in /internal/witness/cmd/feeder by @dependabot in #1428
  • Bump github/codeql-action from 3.24.10 to 3.25.0 by @dependabot in #1433
  • Bump github/codeql-action from 3.25.0 to 3.25.1 by @dependabot in #1434
  • Bump actions/upload-artifact from 4.3.1 to 4.3.2 by @dependabot in #1436
  • Bump actions/checkout from 4.1.2 to 4.1.3 by @dependabot in #1437
  • Bump actions/upload-artifact from 4.3.2 to 4.3.3 by @dependabot in #1440
  • Bump github/codeql-action from 3.25.1 to 3.25.2 by @dependabot in #1441
  • Bump golang from b03f3ba to d0902ba in /internal/witness/cmd/feeder by @dependabot in #1444
  • Bump golang from b03f3ba to d0902ba in /trillian/examples/deployment/docker/ctfe by @dependabot in https://github...
Read more

v1.1.8

11 Mar 13:59
59b9bd9
Compare
Choose a tag to compare

What's Changed

  • Recommended Go version for development: 1.21
    • Using a different version can lead to presubmits failing due to unexpected diffs.

Monitoring

  • Distribution metric to monitor the start of get-entries requests by @phbnf in #1364

Add support for AIX

Fixes

Misc

Dependency update

  • Bump golang from 20f9ab5 to 5ee1296 in /trillian/examples/deployment/docker/ctfe by @dependabot in #1216
  • Bump golang from 20f9ab5 to 5ee1296 in /internal/witness/cmd/witness by @dependabot in #1217
  • Bump golang from 20f9ab5 to 5ee1296 in /internal/witness/cmd/feeder by @dependabot in #1218
  • Bump k8s.io/klog/v2 from 2.100.1 to 2.110.1 by @dependabot in #1219
  • Bump golang from 20f9ab5 to 5ee1296 in /integration by @dependabot in #1220
  • Bump golang from 5ee1296 to 5bafbbb in /integration by @dependabot in #1221
  • Bump golang from 5ee1296 to 5bafbbb in /internal/witness/cmd/feeder by @dependabot in #1222
  • Bump golang from 5ee1296 to 5bafbbb in /internal/witness/cmd/witness by @dependabot in #1223
  • Bump golang from 5ee1296 to 5bafbbb in /trillian/examples/deployment/docker/ctfe by @dependabot in #1224
  • Update the minimal image to gcr.io/distroless/base-debian12 by @roger2hk in #1148
  • Bump jq from 1.6 to 1.7 by @roger2hk in #1225
  • Bump github.com/spf13/cobra from 1.7.0 to 1.8.0 by @dependabot in #1226
  • Bump golang.org/x/time from 0.3.0 to 0.4.0 by @dependabot in #1227
  • Bump github.com/mattn/go-sqlite3 from 1.14.17 to 1.14.18 by @dependabot in #1228
  • Bump github.com/gorilla/mux from 1.8.0 to 1.8.1 by @dependabot in #1229
  • Bump golang from 1.21.3-bookworm to 1.21.4-bookworm in /trillian/examples/deployment/docker/ctfe by @dependabot in #1232
  • Bump golang from 1.21.3-bookworm to 1.21.4-bookworm in /internal/witness/cmd/witness by @dependabot in #1233
  • Bump golang from 1.21.3-bookworm to 1.21.4-bookworm in /integration by @dependabot in #1234
  • Bump golang from 1.21.3-bookworm to 1.21.4-bookworm in /internal/witness/cmd/feeder by @dependabot in #1235
  • Bump go-version-input from 1.20.10 to 1.20.11 in govulncheck.yml by @roger2hk in #1238
  • Bump golang.org/x/net from 0.17.0 to 0.18.0 by @dependabot in #1236
  • Bump github/codeql-action from 2.22.5 to 2.22.6 by @dependabot in #1240
  • Bump github/codeql-action from 2.22.6 to 2.22.7 by @dependabot in #1241
  • Bump golang from 85aacbe to dadce81 in /integration by @dependabot in #1243
  • Bump golang from 85aacbe to dadce81 in /internal/witness/cmd/feeder by @dependabot in #1242
  • Bump golang from 85aacbe to dadce81 in /trillian/examples/deployment/docker/ctfe by @dependabot in #1244
  • Bump golang from 85aacbe to dadce81 in /internal/witness/cmd/witness by @dependabot in #1245
  • Bump golang from dadce81 to 52362e2 in /internal/witness/cmd/witness by @dependabot in #1247
  • Bump golang from dadce81 to 52362e2 in /integration by @dependabot in #1248
  • Bump golang from dadce81 to 52362e2 in /trillian/examples/deployment/docker/ctfe by @dependabot in #1249
  • Bump golang from dadce81 to 52362e2 in /internal/witness/cmd/feeder by @dependabot in #1250
  • Bump github/codeql-action from 2.22.7 to 2.22.8 by @dependabot in #1251
  • Bump golang.org/x/net from 0.18.0 to 0.19.0 by @dependabot in #1252
  • Bump golang.org/x/time from 0.4.0 to 0.5.0 by @dependabot in #1254
  • Bump alpine from eece025 to 34871e7 in /internal/witness/cmd/feeder by @dependabot in #1256
  • Bump alpine from eece025 to 34871e7 in /trillian/examples/deployment/docker/envsubst by @dependabot in #1257
  • Bump go-version-input from 1.20.11 to 1.20.12 in govulncheck.yml by @roger2hk in #1264
  • Bump actions/setup-go from 4.1.0 to 5.0.0 by @dependabot in #1261
  • Bump golang from 1.21.4-bookworm to 1.21.5-bookworm in /internal/witness/cmd/witness by @dependabot in #1259
  • Bump golang from 1.21.4-bookworm to 1.21.5-bookworm in /integration by @dependabot in #1263
  • Bump golang from 1.21.4-bookworm to 1.21.5-bookworm in /internal/witness/cmd/feeder by @dependabot in #1262
  • Bump golang from 1.21.4-bookworm to 1.21.5-bookworm in /trillian/examples/deployment/docker/ctfe by @dependabot in #1260
  • Bump go.etcd.io/etcd/v3 from 3.5.10 to 3.5.11 by @dependabot in #1266
  • Bump github/codeql-action from 2.22.8 to 2.22.9 by @dependabot in #1269
  • Bump alpine from 34871e7 to 51b6726 in /internal/witness/cmd/feeder by @dependabot in #1270
  • Bump alpine from 3.18 to 3.19 in /trillian/examples/deployment/docker/envsubst by @dependabot in #1271
  • Bump golang from a6b787c to 2d3b13c in /internal/witness/cmd/feeder by @dependabot in #1272
  • Bump golang from a6b787c to 2d3b13c in /internal/witness/cmd/witness by @dependabot in #1273
  • Bump golang from a6b787c to 2d3b13c in /integration by @dependabot in #1274
  • Bump golang from a6b787c to 2d3b13c in /trillian/examples/deployment/docker/ctfe by @dependabot in #1275
  • Bump github/codeql-action from 2.22.9 to 2.22.10 by @dependabot in #1278
  • Bump google.golang.org/grpc from 1.59.0 to 1.60.0 by @dependabot in #1279
  • Bump github/codeql-action from 2.22.10 to 3.22.11 by @dependabot in #1280
  • Bump distroless/base-debian12 from 1dfdb5e to 8a0bb63 in /trillian/examples/deployment/docker/ctfe by @dependabot in #1281
  • Bump github.com/google/trillian from 1.5.3 to 1.5.4-0.20240110091238-00ca9abe023d by @mhutchinson in #1297
  • Bump actions/upload-artifact from 3.1.3 to 4.0.0 by @dependabot in #1282
  • Bump github/codeql-action from 3.22.11 to 3.23.0 by @dependabot in #1295
  • Bump github.com/mattn/go-sqlite3 from 1.14.18 to 1.14.19 by @dependabot in #1283
  • Bump golang from 1.21.5-bookworm to 1.21.6-bookworm in /integration by @dependabot in #1300
  • Bump d...
Read more

v1.1.7

01 Nov 18:26
42c8cff
Compare
Choose a tag to compare

What's Changed

  • Recommended Go version for development: 1.20

    • This is the version used by the Cloud Build presubmits. Using a different version can lead to presubmits failing due to unexpected diffs.
  • Bump golangci-lint from 1.51.1 to 1.55.1 (developers should update to this version).

Add support for WASI port

Add support for IBM Z operating system z/OS

Log List

  • Add support for "is_all_logs" field in loglist3 by @phbnf in #1095

Documentation

  • Improve Dockerized Test Deployment documentation by @roger2hk in #1179

Misc

Dependency update

Read more

v1.1.6

11 May 08:02
55b99fc
Compare
Choose a tag to compare

What's Changed

Deployments

Repo config

Dependency update

Misc

  • Update CHANGELOG.md for v1.1.5 release by @phbnf in #1063

Full Changelog: v1.1.5...v1.1.6

v1.1.5

26 Apr 13:16
f19baea
Compare
Choose a tag to compare

Key management

  • If a public key has been configured for a log, check that it is consistent with the private key by @robstradling in #1044
  • Don't allow the same private key to be used by more than one configured log by @robstradling in #1046

Log list

Vulnerability management

Fixes

Cleanups

Dependency updates

New Contributors

Full Changelog: v1.1.4...v1.1.5

v1.1.4

21 Oct 16:09
50ef850
Compare
Choose a tag to compare

Log list

Logging

Cleanup

Misc

  • Add test leaf template with serverAuth EKU by @pavelkalinnikov in #893
  • Fix S1039: unnecessary use of fmt.Sprintf in presubmit lint messages by @roger2hk in #932
  • Update Go version and remove log list v1, v2 in README.md by @roger2hk in #979
  • Add missing license header by @AlCutter in #970
  • Downgrade 429 errors to verbosity 2 (#957) by @mhutchinson in #963
  • Update to testdata.SampleLogList3 in distributor_test.go by @roger2hk in #966
  • Update linter, fix errors, delete travis config by @mhutchinson in #940
  • Add CODEOWNERS with default team assignment by @AlCutter in #939

Dependency updates

Full Changelog: v1.1.3...v1.1.4

v1.1.3

13 May 16:11
5162ff6
Compare
Choose a tag to compare

New features

  • #867: Add package for (un)marshalling the loglist3 schema
  • #927: Add readonly logs mode to CTFE configuration
  • Add experimental (not exported from the Go module) implementation of CT witness. Running witnesses by multiple independent organisations allows detecting and preventing split-view attacks.

Improvements / bug fixes

  • #852: migrillian: Return error if context was canceled
  • #896: jsonclient: retry POSTs after getting HTTP 429
  • #901: ctclient: Use Cobra library for command-line tools
  • #920: Set is_master metric to 0 for when starting up
  • #928: Do not print context canceled errors

Slightly breaking changes

  • #881: Terminate hammer early if the context is cancelled
  • #903, #921: Move PEMCertPool from CTFE package to x509util

Dependency updates

  • Switch Merkle tree code to use github.com/transparency-dev/merkle@v0.0.1 [#874, ..., #924]
  • Trillian: v1.4.0 -> v1.4.1 [#924]
  • Replace juju/ratelimit with x/time/rate [#800]
  • protoc: v3.12.4 -> v3.20.1 [#923]
  • github.com/fullstorydev/grpcurl: 1.8.2->1.8.6 [#860, #891]
  • github.com/google/go-cmp: 0.5.6->0.5.8 [#879, #917]
  • github.com/mattn/go-sqlite3: 1.14.8->1.14.10 [#873]
  • github.com/rs/cors: 1.8.0->1.8.2 [#872]
  • go.etcd.io/etcd/v3: 3.5.0->3.5.4 [#859, #887, #913]
  • google.golang.org/grpc: v1.40.0 -> v1.46.0 [#914]

Full Changelog: v1.1.2...v1.1.3

v1.1.2

21 Sep 14:31
Compare
Choose a tag to compare

CTFE

  • Removed the -by_range flag.

Updated dependencies

  • Trillian from v1.3.11 to v1.4.0
  • protobuf to v2

v1.1.1

06 Oct 15:53
Compare
Choose a tag to compare

Tools

CT Hammer

Added a flag (--strict_sth_consistency_size) which when set to true enforces the current behaviour of only request consistency proofs between tree sizes for which the hammer has seen valid STHs.
When setting this flag to false, if no two usable STHs are available the hammer will attempt to request a consistency proof between the latest STH it's seen and a random smaller (but > 0) tree size.

CTFE

Caching

The CTFE now includes a Cache-Control header in responses containing purely
immutable data, e.g. those for get-entries and get-proof-by-hash. This allows
clients and proxies to cache these responses for up to 24 hours.

EKU Filtering

⚠️ It is not yet recommended to enable this option in a production CT Log!

CTFE now supports filtering logging submissions by leaf certificate EKU.
This is enabled by adding an extKeyUsage list to a log's stanza in the
config file.

The format is a list of strings corresponding to the supported golang x509 EKUs:

Config string Extended Key Usage
Any ExtKeyUsageAny
ServerAuth ExtKeyUsageServerAuth
ClientAuth ExtKeyUsageClientAuth
CodeSigning ExtKeyUsageCodeSigning
EmailProtection ExtKeyUsageEmailProtection
IPSECEndSystem ExtKeyUsageIPSECEndSystem
IPSECTunnel ExtKeyUsageIPSECTunnel
IPSECUser ExtKeyUsageIPSECUser
TimeStamping ExtKeyUsageTimeStamping
OCSPSigning ExtKeyUsageOCSPSigning
MicrosoftServerGatedCrypto ExtKeyUsageMicrosoftServerGatedCrypto
NetscapeServerGatedCrypto ExtKeyUsageNetscapeServerGatedCrypto

When an extKeyUsage list is specified, the CT Log will reject logging
submissions for leaf certificates that do not contain an EKU present in this
list.

When enabled, EKU filtering is only performed at the leaf level (i.e. there is
no 'nested' EKU filtering performed).

If no list is specified, or the list contains an Any entry, no EKU
filtering will be performed.

GetEntries

Calls to get-entries which are at (or above) the maximum permitted number of
entries whose start parameter does not fall on a multiple of the maximum
permitted number of entries, will have their responses truncated such that
subsequent requests will align with this boundary.
This is intended to coerce callers of get-entries into all using the same
start and end parameters and thereby increase the cachability of
these requests.

e.g.:

Old behaviour:
             1         2         3
             0         0         0
Entries>-----|---------|---------|----...
Client A -------|---------|----------|...
Client B --|--------|---------|-------...
           ^        ^         ^
           `--------`---------`---- requests

With coercion (max batch = 10 entries):
             1         2         3
             0         0         0
Entries>-----|---------|---------|----...
Client A ----X---------|---------|...
Client B --|-X---------|---------|-------...
             ^
             `-- Requests truncated

This behaviour can be disabled by setting the --align_getentries
flag to false.

Flags

The ct_server binary changed the default of these flags:

  • by_range - Now defaults to true

The ct_server binary added the following flags:

  • align_getentries - See GetEntries section above for details

Added backend flag to migrillian, which now replaces the deprecated
"backend" feature of Migrillian configs.

FixedBackendResolver Replaced

This was previously used in situations where a comma separated list of
backends was provided in the rpcBackend flag rather than a single value.

It has been replaced by equivalent functionality using a newer gRPC API.
However this support was only intended for use in integration tests. In
production we recommend the use of etcd or a gRPC load balancer.

LogList

Log list tools updated to use the correct v2 URL (from v2_beta previously).

Libraries

x509 fork

Merged upstream Go 1.13 and Go 1.14 changes (with the exception
of golang/go@14521198679e, to allow
old certs using a malformed root still to be logged).

asn1 fork

Merged upstream Go 1.14 changes.

ctutil

Added VerifySCTWithVerifier() to verify SCTs using a given ct.SignatureVerifier.

Configuration Files

Configuration files that previously had to be text-encoded Protobuf messages can
now alternatively be binary-encoded instead.

JSONClient

  • PostAndParseWithRetry error logging now includes log URI in messages.

Minimal Gossip Example

All the code for this, except for the x509ext package, has been moved over
to the trillian-examples repository.

This keeps the code together and removes a circular dependency between the
two repositories. The package layout and structure remains the same so
updating should just mean changing any relevant import paths.

Dependencies

A circular dependency on the monologue repository has been removed.

A circular dependency on the trillian-examples repository has been removed.

The version of trillian in use has been updated to 1.3.11. This has required
various other dependency updates including gRPC and protobuf. This code now
uses the v2 proto API. The Travis tests now expect the 3.11.4 version of
protoc.

The version of etcd in use has been switched to the one from go.etcd.io.

Most of the above changes are to align versions more closely with the ones
used in the trillian repository.