yamine 0.10.0 → 0.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: db8822f4d49064d2cb61c2219c43c7049eafc7e44a2bb4b918981ef7a4bd8d11
4
- data.tar.gz: 31c30cc196665056aab7f711c092003f775af0d684fc891adcf039da1603a96b
3
+ metadata.gz: 73e497200efd0723559dff2f57e920e3d126d3caecf302770c37bec613d7998e
4
+ data.tar.gz: 2203cabc149df919703fb1182fb9ad76e9c6729d4ed105455c749dbfa7611593
5
5
  SHA512:
6
- metadata.gz: 85e04f77e692d458765ef87714bb83dac175f387dec1bba92bb46e4ac405d292d693a0292187bf427b6fc56bbbbf1263635bdcbcbd3426295531235aab51dc67
7
- data.tar.gz: 226f812a9accf7265fcae4f1ae74328bb6229ee9199af790e2d744085fed517f7445a6c501c94b6ec188d8f0575677f91753831b9ef502349b4bf2f873b5dbf3
6
+ metadata.gz: d30e26aec61c7036e349a84f6f241291756c7ee3207f6e1de210cb47465ccc94279619cc9657d3ecbc477b8983be8027ae2303d43456b4891762f79dec7bd885
7
+ data.tar.gz: 1a6a7e1b4e402b822a3d6f70ed6b19881c8927563c131875b322a7b750c9ec9368ba8a7f45ff99badfe55d23c54a964f163a80b8d10d6c45aa6a5a3ae5d9abc9
data/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.10.1] — 2026-09-10
4
+
5
+ ### Fixed
6
+
7
+ - **The CA is regenerated before trust is judged, not after.** Both
8
+ trust paths asked `Certs.trusted?` first, which compares the trust
9
+ marker against the certificate ON DISK. A proxy regenerates the CA at
10
+ boot when the on-disk one is missing, expiring, or renamed — so after
11
+ a rename the marker still matched the OLD certificate, trust was
12
+ skipped as "already done", and the proxy then came up serving a CA the
13
+ keychain did not trust: TLS verification fails for every route. The
14
+ check now brings the CA up to date first (`ca_current_and_trusted?`,
15
+ used by both paths).
16
+
17
+
3
18
  ## [0.10.0] — 2026-09-10
4
19
 
5
20
  The ask-local rename is finished: the two user-visible names it left
@@ -334,13 +334,29 @@ module Yamine
334
334
  puts "Installed root LaunchDaemon on port 443 (state: #{state_dir})."
335
335
  end
336
336
 
337
+ # True when the trust store covers the CA this machine should be
338
+ # serving with — regenerating the CA first if it is missing,
339
+ # expiring, or renamed.
340
+ #
341
+ # The ordering is the whole point, so it lives in one place rather
342
+ # than at each call site. `trusted?` compares a marker against the
343
+ # fingerprint of the certificate ON DISK, and a proxy regenerates
344
+ # the CA at boot when the name changes. Checking the marker before
345
+ # the CA is current therefore reads a stale match, skips trust, and
346
+ # lets the proxy come up serving a CA the keychain does not trust —
347
+ # breaking TLS for every route.
348
+ def ca_current_and_trusted?(dir = Certs.state_dir)
349
+ Certs.ensure_ca(dir)
350
+ Certs.trusted?(dir)
351
+ end
352
+
337
353
  # Root-only CA trust: the System keychain (all users, no prompt).
338
354
  # Safe to call repeatedly — once the marker is set it is a no-op.
339
355
  # Prints before doing work: the System keychain add can take a few
340
356
  # seconds, and this runs in the root half of setup where silence
341
357
  # reads as a hang.
342
358
  def ensure_system_ca_trust
343
- return if Certs.trusted?(Certs.state_dir)
359
+ return if ca_current_and_trusted?(Certs.state_dir)
344
360
 
345
361
  puts " Trusting the CA into the System keychain..."
346
362
  result = Trust.trust
@@ -760,7 +776,7 @@ module Yamine
760
776
  # those users had already chosen to avoid.
761
777
  def ensure_workstation!(ctx)
762
778
  # 1. CA
763
- unless Yamine::Certs.trusted?(ctx.store.dir)
779
+ unless ca_current_and_trusted?(ctx.store.dir)
764
780
  result = Yamine::Trust.trust
765
781
  unless result[:trusted]
766
782
  abort_setup("CA trust failed: #{result[:error]}",
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Yamine
4
- VERSION = "0.10.0"
4
+ VERSION = "0.10.1"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yamine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kaka Ruto