Repository navigation
Blockscout backend build: re-resolve hackney and certifi, clearing the last eMudhra trust store - #369
Merged
Conversation
…e last eMudhra trust store The upstream v12.0.4 lockfile resolves hackney 4.8.5, which pins certifi to ~> 2.17.0, and certifi 2.17.0 still holds the distrusted root. The deps stage now runs mix deps.update hackney certifi (hackney 4.10.2, certifi 2.18.0) and asserts the six resulting lock entries, so the build stops if resolution changes. The register row for the backend moves from open to fixed after the three stores (castore, certifi, Alpine bundle) were read clean in the running pod.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
build-images.shgets a third guarded backend patch: the Blockscout backend's deps stage now runsmix deps.update hackney certifiand asserts the resultingmix.lockentries, so the backend image no longer carries certifi 2.17.0 (which still holds the distrusted "emSign ECC Root CA - G3"). The register row for the backend goes fromopentofixed, and the source-build item lists the new step.Why a build step
Upstream's v12.0.4 lockfile resolves hackney 4.8.5, which requires
certifi ~> 2.17.0. certifi 2.18.0 needs hackney 4.8.6 or later, so no upstream tag clears it yet. The step follows the #364 style: an exact-match guard on the upstream Dockerfile line (RUN mix local.hex --force, exactly one), then, in the sameRUN, the update followed by assertions on the six lock entries it changes. The build fails loudly if upstream or hex resolves anything differently.Evidence (local sandbox, in-place upgrade, data kept)
./sandbox.sh build-images; the pod runs digestsha256:b500012…(checked via the pod'simageID, after replacing the same-tag registry copy and the Kind node's cached image).:ethereum_jsonrpcpool; new blocks and transactions appeared in API v2 within seconds), API v2, BENS lookups (domains:lookup,batch-resolve-namesseen on the BENS pod), the verifier microservice (a fresh standard-input verification of a throwaway contract succeeded, andverify-latestreturned 13/13), a small concurrent search load, and a 15-minute soak with periodic transactions (the container was OOM-killed once by a diagnostic Erlang VM started inside it, so the soak is measured from that restart: 16 minutes, no further restart, head indexed at the chain head).insecureand{verify, verify_none}work.Not exercised: outbound HTTPS to public hosts (the sandbox has no egress, same as before).
hackney 4.8.5 → 4.10.2, what changes
max_body_size(4.9.0): buffered bodies are capped at 512 MiB by default (was unlimited); a chunked body can no longer bypass the cap (4.10.0).basic_authand cookies are no longer resent to another port, or over HTTP after HTTPS.cacerts(4.9.0) now truly limits trust, with no fallback to public roots; HTTPS proxies get the same certificate checks.max_per_hostslots are released on failed handshakes, timeouts and killed callers; socket options inconnect_optionsare no longer dropped on pooled connections; TLS 1.3 session resumption no longer causesbad_record_macon parallel connects.insecureoption and{verify, verify_none}actually disable verification (they were ignored before).Rollout impact
v12.0.4-kindtag, new digest; the build needs network access (hex.pm)build-imagesskips the registry push when the tag exists, so replace the registry copy (for exampleregistry-reset, thenbuild-images) and restart the backend; the Kind node's cached image of the same tag also has to be evictedDocs:
docs/KNOWN_ISSUES.md(register row, source-build item, same-tag note).