Skip to content

TLS certificate for apt.fullstaqruby.org expired on Oct 12, 2026 #199

Closed

Description

@jperville

Describe the bug

The Let's Encrypt certificate served by apt.fullstaqruby.org expired on Oct 12, 2026 at 02:22 UTC, so apt update fails to fetch the repository index.

To Reproduce

Linux distribution: Ubuntu 24.04

Run apt update with the Fullstaq Ruby repository configured:

Err:3 https://apt.fullstaqruby.org ubuntu-24.04 InRelease
  Certificate verification failed: The certificate is NOT trusted. The certificate chain uses expired certificate.  Could not handshake: Error in the certificate verification.
W: Failed to fetch https://apt.fullstaqruby.org/dists/ubuntu-24.04/InRelease  Certificate verification failed: The certificate is NOT trusted. The certificate chain uses expired certificate.  Could not handshake: Error in the certificate verification.

Certificate details:

$ openssl s_client -connect apt.fullstaqruby.org:443 -servername apt.fullstaqruby.org </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates
subject=CN = apt.fullstaqruby.org
issuer=C = US, O = Let's Encrypt, CN = YE1
notBefore=Jul 14 02:22:07 2026 GMT
notAfter=Oct 12 02:22:06 2026 GMT

Expected behavior

apt update succeeds with a valid certificate. It looks like the automatic Let's Encrypt renewal didn't run or failed.

Additional context

System clock is NTP-synchronized and the CA store is up to date, so this appears to be server-side.

Activity

  1. trumbaut commented on Oct 12, 2026

    @trumbaut

    Similar issue for https://yum.fullstaqruby.org, used by RPM based distributions:

    $ openssl s_client -connect yum.fullstaqruby.org:443 </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates
    subject=CN=yum.fullstaqruby.org
    issuer=C=US, O=Let's Encrypt, CN=YE1
    notBefore=Jul 13 19:02:07 2026 GMT
    notAfter=Oct 11 19:02:06 2026 GMT
    
  2. self-assigned this
    on Oct 12, 2026
  3. abtreece commented on Oct 12, 2026

    @abtreece
    Collaborator

    Status update: root cause found, fix pending on someone with the right Azure access.

    Root cause. Caddy on the repo server obtains these certificates via ACME DNS-01 against Azure DNS, authenticating with an Entra ID service principal secret. That secret was created 2024-07-26 with Entra's default 2-year lifetime and expired on 2026-07-26. Caddy's journal shows every renewal attempt since 2026-09-11 failing with:

    AADSTS7000222: The provided client secret keys for app '...' are expired.
    

    The last successful renewals were 2026-07-13 (yum) and 2026-07-14 (apt), so the certs ran out their full 90 days and expired on Oct 11 (yum) and Oct 12 (apt). Caddy itself is up and still serving the repo redirects; only certificate renewal is broken. Nothing is wrong on the client side.

    Fix. fullstaq-ruby/infra#64 replaces the expired secret and adds yearly rotation so this cannot recur silently. The Terraform plan is reviewed and CI passes, but applying it requires owner rights on the Entra app that only one maintainer currently holds. I've asked them to apply it. Once applied, the server needs one Ansible run and Caddy will renew both certs within about 10 minutes.

    I'll update here when the certs are renewed. Separately, there's no cert-expiry alerting on this host, which is why a month of failed renewals went unnoticed; that will get its own issue.

  4. trumbaut commented on Oct 14, 2026

    @trumbaut

    @abtreece , certificates still not renewed?

  5. jperville commented on Oct 14, 2026

    @jperville
    Author

    As a short term workaround, we can use https://storage.googleapis.com/fsruby-server-edition-apt-repo/versions/50/public in the source.list file, e.g.:

    # /etc/apt/sources.list.d/fullstaq-ruby.list
    deb [signed-by=/etc/apt/fullstaq-ruby.asc arch=amd64] https://storage.googleapis.com/fsruby-server-edition-apt-repo/versions/50/public ubuntu-24.04 main
    
    
  6. FooBarWidget commented on Oct 15, 2026

    @FooBarWidget
    Member

    Certificates have been renewed now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions