Commit Graph

20 Commits

Author SHA1 Message Date
Daniel McCarney 4e9ab5f04e
deps: update to eggsampler/acme/v3, run tidy, re-enable parallel tests (#4568)
This updates the `github.com/eggsampler/acme` dependency used in our Go-based
integration tests to v3. Notably this fixes a data race we encountered in CI.
With the data race fixed this branch can also revert
54a798b7f6 and resolve
https://github.com/letsencrypt/boulder/issues/4542

I ran a `go mod tidy` to cleanup the old `v2` copy of the dep and it also
removed a few stale cfssl/mysql items from the `go.mod`.

Upstream library's tests are confirmed to pass:
```
~/go/src/github.com/eggsampler/acme$ git log --pretty=format:'%h' -n 1
b581dc6

~/go/src/github.com/eggsampler/acme$ make pebble
mkdir -p /home/daniel/go/src/github.com/letsencrypt/pebble
git clone --depth 1 https://github.com/letsencrypt/pebble.git /home/daniel/go/src/github.com/letsencrypt/pebble \
	|| (cd /home/daniel/go/src/github.com/letsencrypt/pebble; git checkout -f master && git reset --hard HEAD && git pull -q)
fatal: destination path '/home/daniel/go/src/github.com/letsencrypt/pebble' already exists and is not an empty directory.
Already on 'master'
Your branch is up-to-date with 'le/master'.
HEAD is now at 6c2d514 wfe: compare Identifier.Type with acme.IndentifierIP (#287)
docker-compose -f /home/daniel/go/src/github.com/letsencrypt/pebble/docker-compose.yml up -d
Creating network "pebble_acmenet" with driver "bridge"
Creating pebble_challtestsrv_1 ... done
Creating pebble_pebble_1       ... done
while ! wget --delete-after -q --no-check-certificate "https://localhost:14000/dir" ; do sleep 1 ; done
go clean -testcache
go test -race -coverprofile=coverage_18.txt -covermode=atomic github.com/eggsampler/acme/v3
ok  	github.com/eggsampler/acme/v3	24.292s	coverage: 83.0% of statements
docker-compose -f /home/daniel/go/src/github.com/letsencrypt/pebble/docker-compose.yml down
Stopping pebble_pebble_1       ... done
Stopping pebble_challtestsrv_1 ... done
Removing pebble_pebble_1       ... done
Removing pebble_challtestsrv_1 ... done
Removing network pebble_acmenet
```
2019-11-21 09:23:12 -05:00
Daniel McCarney 4c2613a8e5 deps: update weppos/publicsuffix-go and zmap/zlint. (#4563)
Updates `github.com/weppos/publicsuffix-go` to 3dd5f42, and
`github.com/zmap/zlint` to eea5fe8. Both hashes are the tip of master at
the time of writing.

Unit tests are confirmed to pass:
```
~/go/src/github.com/weppos/publicsuffix-go$ git log --pretty=format:'%h' -n 1
3dd5f42

~/go/src/github.com/weppos/publicsuffix-go$ go test ./...
?   	github.com/weppos/publicsuffix-go/cmd/load	[no test files]
ok  	github.com/weppos/publicsuffix-go/net/publicsuffix	0.008s
ok  	github.com/weppos/publicsuffix-go/publicsuffix	0.005s
?   	github.com/weppos/publicsuffix-go/publicsuffix/generator	[no test files]

~/go/src/github.com/zmap/zlint$ git log --pretty=format:'%h' -n 1
eea5fe8

~/go/src/github.com/zmap/zlint$ go test ./...
ok  	github.com/zmap/zlint	0.240s
?   	github.com/zmap/zlint/cmd/zlint	[no test files]
?   	github.com/zmap/zlint/cmd/zlint-gtld-update	[no test files]
ok  	github.com/zmap/zlint/lints	0.156s
ok  	github.com/zmap/zlint/util	0.020s
```
2019-11-20 19:31:22 -08:00
Jacob Hoffman-Andrews 0804e97d88 Update mysql to b4242ba (latest). (#4552)
The most recent tagged release of mysql is v1.4.1, from a year ago. It
also happens to pull in an unwanted dependency (appengine) that the
latest commit does not.

Tests pass:

$ go test -count=1 github.com/go-sql-driver/mysql
ok github.com/go-sql-driver/mysql 0.068s

Fixes #4530
2019-11-15 12:29:14 -08:00
Daniel McCarney 32ad79a0df deps: rerun the gopkg.in/go-gorp/gorp.v2 go get. (#4531)
Newer Go versions seem to give a different psuedoversion for this
dependency at the same commit than when we initially switched to Go
modules for Boulder. Fixing the psuedoversion now so it won't trip up
future updates unexpectedly.
2019-11-07 10:21:28 -08:00
Daniel McCarney 6da5e18a1e deps: update CFSSL to v1.4.0 (#4529)
This keeps us on a tagged release and includes only small bugfixes/doc
updates.
2019-11-06 14:23:22 -08:00
Daniel McCarney e448e81dc4 deps: update square/go-jose to v2.4.0 (#4518)
This branch also updates the WFE2 parseJWS function to match the error string fixed in the upstream project for the case where a JWS EC public key fails to unmarshal due to an incorrect length.

Resolves #4300
2019-10-30 10:59:41 -07:00
Daniel McCarney 424247f5ea
deps: update publicsuffix-go to latest. (#4450)
Notably this adds the new `.ss` ccTLD.
2019-09-27 16:48:43 -04:00
Daniel McCarney 92839da2e7
deps: update zlint to latest. (#4449) 2019-09-27 16:48:21 -04:00
Daniel McCarney 93902965e5 Add Go 1.13 support, temporarily disable TLS 1.3 default. (#4435)
A unit test is included to verify that a TLS-ALPN-01 challenge to
a TLS 1.3 only server doesn't succeed when the `GODEBUG` value to
disable TLS 1.3 in `docker-compose.yml` is set. Without this env var
the test fails on the Go 1.13 build because of the new default:

```
=== RUN   TestTLSALPN01TLS13
--- FAIL: TestTLSALPN01TLS13 (0.04s)
    tlsalpn_test.go:531: expected problem validating TLS-ALPN-01 challenge against a TLS 1.3 only server, got nil
    FAIL
    FAIL        github.com/letsencrypt/boulder/va       0.065s
```

With the env var set the test passes, getting the expected connection
problem reporting a tls error:

```
=== RUN   TestTLSALPN01TLS13
2019/09/13 18:59:00 http: TLS handshake error from 127.0.0.1:51240: tls: client offered only unsupported versions: [303 302 301]
--- PASS: TestTLSALPN01TLS13 (0.03s)
PASS
ok      github.com/letsencrypt/boulder/va       1.054s
```

Since we plan to eventually enable TLS 1.3 support and the `GODEBUG`
mechanism tested in the above test is platform-wide vs package
specific I decided it wasn't worth the time investment to write a
similar HTTP-01 unit test that verifies the TLS 1.3 behaviour on a
HTTP-01 HTTP->HTTPS redirect.

Resolves https://github.com/letsencrypt/boulder/issues/4415
2019-09-17 11:00:58 -07:00
Jacob Hoffman-Andrews a8586d05cd
Add integration test for precertificate OCSP. (#4417)
This test adds support in ct-test-srv for rejecting precertificates by
hostname, in order to artificially generate a condition where a
precertificate is issued but no final certificate can be issued. Right
now the final check in the test is temporarily disabled until the
feature is fixed.

Also, as our first Go-based integration test, this pulls in the
eggsampler/acme Go client, and adds some suport in integration-test.py.

This also refactors ct-test-srv slightly to use a ServeMux, and fixes
a couple of cases of not returning immediately on error.
2019-09-06 13:35:08 -07:00
Daniel McCarney a5936522d7
deps: update github.com/zmap/zlint to latest. (#4399)
* deps: update github.com/zmap/zlint to latest.

This captures a new lint (`e_subject_printable_string_badalpha`) that
addresses a historic Let's Encrypt incident related to the allowed
PrintableString character set. It also pulls in minor housekeeping
related to consistently prefixing lint names with their respective lint
result level.

* review: fix expected lint name in TestIgnoredLint.

The upstream `zlint` project added a missing `w_` prefix on the
`ct_sct_policy_count_unsatisifed` lint that needed to be reflected in
expected test output.
2019-08-13 13:05:29 -04:00
Daniel McCarney 8b518451b4 deps: update github.com/zmap/zlint to latest. (#4384)
* deps: update github.com/zmap/zlint to latest.

Update the `github.com/zmap/zlint` dependency to b126a9b. This captures
a small fix to the `ct_sct_policy_count_unsatisfied` lint that ensures
it isn't run for precertificates.

* config: remove ct_sct_policy_count_unsatisfied from ignored_lints.

With the latest `zlint` the `ct_sct_policy_count_unsatisfied` lint won't
flag precertificates as having an info-level lint result for missing
SCTs. With that fix in place we no longer have to ignore this lint in
the config-next CA configs that enable preissuance linting.
2019-08-01 10:22:30 -07:00
Daniel McCarney 17cf6fde8d
deps: bump github.com/weppos/publicsuffix-go to latest. (#4383) 2019-07-31 17:46:51 -04:00
Daniel McCarney 17b74cfb55
deps: update github.com/cloudflare/cfssl to v1.3.4 (#4377)
This will unblock pre-issuance linting support by updating the
`github.com/cloudflare/cfssl` dependency to the `1.3.4` tag which
notably includes the zlint integration developed in
cloudflare/cfssl#1015
2019-07-31 14:06:02 -04:00
Daniel McCarney 75dcac2272
deps: update github.com/zmap/zlint to latest. (#4375)
Notably this brings in:
* A mild perf. boost from an updated transitive zcrypto dep and a reworked util func.
* A new KeyUsage lint for ECDSA keys.
* Updated gTLD data.
* A required `LintStatus` deserialization fix that will unblock a CFSSL update.

The `TestIgnoredLint` unit test is updated to no longer expect a warning from the 
` w_serial_number_low_entropy` lint. This lint was removed in the upstream project.
2019-07-31 13:10:44 -04:00
Daniel McCarney c7344170df
mod: update github.com/weppos/publicsuffix-go. (#4320)
Update `github.com/weppos/publicsuffix-go` to 5363748, the tip of master
at the time of writing.
2019-07-02 13:37:03 -04:00
Roland Bracewell Shoemaker 14d34e9075
Update square/go-jose to v2.3.1 (#4299)
Also excises the existing bad padding metrics code, adds a special error for when we encounter badly padded keys, and adds a test for the new special error.

Fixes #4070 and fixes #3964.
2019-06-26 16:27:50 -07:00
Roland Bracewell Shoemaker d99c008c07
Update cloudflare/cfssl (#4283)
Fixes #4004.
2019-06-21 12:47:32 -07:00
Daniel McCarney 3de2831c32
deps: update github.com/zmap/zlint to tip of master. (#4254)
* tld data updates
* new lints:
  * .arpa reverse DNS subjects lint
  * QcStatements lint
  * Onion subject linting
  * Informational embedded SCT policy lint
  * RFC 4055 RSA algorithm identifier parameter linting
2019-06-10 12:58:11 -04:00
Jacob Hoffman-Andrews 1014a81606 Switch to modules (#4211)
Because the package versions in go.mod match what we use in Godeps.json,
there are no substantive code diffs. However, there are some tiny
differences resulting from how go mod vendors things differently than
godep:

go mod does not preserve executable permissions on shell scripts
Some packages have import lines like:
package ocsp // import "golang.org/x/crypto/ocsp"

godep used to remove the comment from these lines, but go mod vendor does not.

This introduces several indirect dependencies that we didn't have
before. This is because godep used to operate at a package level, but
go mod operates at a module (~= repository) level. So if we used a
given repository, but didn't use all of its packages, we wouldn't
previously care about the transitive dependencies of the packages we
weren't using. However, in the go mod world, once we care about the
repository, we care about all of that repository's transitive
dependencies. AFAICT this doesn't affect vendoring.

Fixes #4116
2019-05-23 14:14:00 -07:00