From bc5dd507e4eade4baae52be762645c2bbb293a6b Mon Sep 17 00:00:00 2001 From: scottmakestech <83726258+scottmakestech@users.noreply.github.com> Date: Mon, 23 Feb 2026 13:40:35 -0600 Subject: [PATCH 1/5] Blog: Shorter Certificate Lifetimes and Rate Limits --- .../en/post/2026-02-24-rate-limits-45-day-certs.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 content/en/post/2026-02-24-rate-limits-45-day-certs.md diff --git a/content/en/post/2026-02-24-rate-limits-45-day-certs.md b/content/en/post/2026-02-24-rate-limits-45-day-certs.md new file mode 100644 index 000000000..61b2f04f6 --- /dev/null +++ b/content/en/post/2026-02-24-rate-limits-45-day-certs.md @@ -0,0 +1,13 @@ +--- +author: Jacob Hoffman-Andrews +date: 2026-02-24T00:00:00Z +slug: rate-limits-45-day-certs +title: "Shorter Certificate Lifetimes and Rate Limits" +excerpt: "Rate limits will be unaffected because renewals do not count toward limits." +display_default_footer: true +display_inline_newsletter_embed: false +--- + +As [previously announced](/2025/12/02/from-90-to-45), over the next two years we will be switching the default certificate lifetime from 90 days to 64 days, and then 45 days. This will ultimately double the number of certificate renewal requests each day: today we expect renewal around day 60 (of a 90-day certificate), while in the future we expect renewal around day 30 (of a 45-day certificate). If you use an ACME client that [supports ARI](/2024/04/25/guide-to-integrating-ari-into-existing-acme-clients), this will happen automatically. + +The good news for subscribers is that you don't need any changes to your rate limits, whether you are [using our default limits](/docs/rate-limits/) or have requested an override. Our rate limits affect issuance for new domain names (or groups of domain names), but [renewals are exempt](/docs/rate-limits/#limit-exemptions-for-renewals). So, for instance, if you are managing a set of 15,000 certificates that you continually renew, and create 250 new certificates (with new domain names) each day, you will be well within our limits both before and after the transition. The 250 new certificates daily will still be well under our [New Orders per Account limit](/docs/rate-limits/#new-orders-per-account) of 300 per day. And the 15,000 existing certificates will continue to be unaffected by rate limits, whether your ACME client is renewing them every sixty days or every thirty. \ No newline at end of file From b9cd331a2522ebd6890c45f6c8117ff901157dd3 Mon Sep 17 00:00:00 2001 From: scottmakestech <83726258+scottmakestech@users.noreply.github.com> Date: Mon, 23 Feb 2026 15:15:43 -0600 Subject: [PATCH 2/5] Support Us Footer --- .../2024-07-23-replacing-OCSP-with-CRLs.md | 2 +- content/en/post/2024-12-05-Ending-OCSP.md | 2 +- content/en/post/2024-12-11-EOY-letter-2024.md | 2 +- content/en/post/2025-01-09-acme-profiles.md | 2 +- .../en/post/2025-01-16-6-day-and-IP-certs.md | 2 +- .../2025-01-22-ending-expiration-emails.md | 2 +- .../en/post/2025-01-30-Scaling-Rate-Limits.md | 2 +- .../2025-02-14-encryption-for-everybody.md | 2 +- ...2025-02-20-first-short-lived-cert-issued.md | 2 +- .../en/post/2025-03-18-community-of-funders.md | 2 +- .../2025-04-30-pebbleacmeimplementation.md | 2 +- ...25-05-14-ending-tls-client-authorization.md | 2 +- .../2025-05-21-power-of-recurring-donations.md | 2 +- ...-we-reduced-the-impact-of-zombie-clients.md | 2 +- ...-06-11-reflections-on-a-year-of-sunlight.md | 2 +- ...xpiration-notification-service-has-ended.md | 2 +- ...issuing-our-first-ip-address-certificate.md | 2 +- ...-06-ocsp-service-has-reached-end-of-life.md | 2 +- .../en/post/2025-08-14-rfc-6962-logs-eol.md | 2 +- .../post/2025-09-11-native-acme-for-nginx.md | 2 +- content/en/post/2025-09-16-ARI-RFC.md | 2 +- .../post/2025-10-07-Ten-yrs-community-forum.md | 2 +- content/en/post/2025-11-24-gen-y-hierarchy.md | 2 +- content/en/post/2025-12-02-from-90-to-45.md | 2 +- content/en/post/2025-12-09-10-years.md | 2 +- content/en/post/2025-12-29-eoy-letter-2025.md | 2 +- ...6-01-15-IP-and-6day-general-availability.md | 2 +- content/en/post/2026-02-05-FOSDEM2026.md | 2 +- content/en/post/2026-02-18-DNS-PERSIST-01.md | 2 +- .../2026-02-24-rate-limits-45-day-certs.md | 2 +- i18n/en.toml | 18 ++++++++++++++++++ .../le-2025/assets/css/le-2025-theme-input.css | 11 +++++++++-- themes/le-2025/layouts/_default/single.html | 9 +++++++++ 33 files changed, 66 insertions(+), 32 deletions(-) diff --git a/content/en/post/2024-07-23-replacing-OCSP-with-CRLs.md b/content/en/post/2024-07-23-replacing-OCSP-with-CRLs.md index 74caaa853..6823afa82 100644 --- a/content/en/post/2024-07-23-replacing-OCSP-with-CRLs.md +++ b/content/en/post/2024-07-23-replacing-OCSP-with-CRLs.md @@ -3,7 +3,7 @@ author: Josh Aas date: 2024-07-23T00:00:00Z excerpt: "Moving to a more privacy-respecting and efficient method of checking certificate revocation." title: "Intent to End OCSP Service" -display_default_footer: false +display_support_us_footer: false slug: replacing-OCSP-with-CRLs --- diff --git a/content/en/post/2024-12-05-Ending-OCSP.md b/content/en/post/2024-12-05-Ending-OCSP.md index 54a3b8449..e27c69cb8 100644 --- a/content/en/post/2024-12-05-Ending-OCSP.md +++ b/content/en/post/2024-12-05-Ending-OCSP.md @@ -3,7 +3,7 @@ author: Josh Aas date: 2024-12-05T00:00:00Z excerpt: "Certificate revocation information will be provided exclusively through CRLs." title: "Ending OCSP Support in 2025" -display_default_footer: false +display_support_us_footer: false slug: Ending-OCSP --- diff --git a/content/en/post/2024-12-11-EOY-letter-2024.md b/content/en/post/2024-12-11-EOY-letter-2024.md index 75e7227c7..933cd0b07 100644 --- a/content/en/post/2024-12-11-EOY-letter-2024.md +++ b/content/en/post/2024-12-11-EOY-letter-2024.md @@ -4,7 +4,7 @@ date: 2024-12-11T00:00:00Z slug: EOY-letter-2024 title: "A Note from our Executive Director" excerpt: "Reflecting on a decade of growth, innovation, and impact at ISRG." -display_default_footer: true +display_support_us_footer: true ---
{{ T "donate_page_funding_details_stat_text" }}
From 3252fd587f401d44ac144edaf42f787c2d7a933e Mon Sep 17 00:00:00 2001 From: scottmakestech <83726258+scottmakestech@users.noreply.github.com> Date: Mon, 23 Feb 2026 16:53:37 -0600 Subject: [PATCH 4/5] Fix p:last-child --- .../assets/css/le-2025-theme-input.css | 85 +++++----- themes/le-2025/layouts/_default/single.html | 151 +++++++----------- 2 files changed, 108 insertions(+), 128 deletions(-) diff --git a/themes/le-2025/assets/css/le-2025-theme-input.css b/themes/le-2025/assets/css/le-2025-theme-input.css index de8058848..ad3eba320 100644 --- a/themes/le-2025/assets/css/le-2025-theme-input.css +++ b/themes/le-2025/assets/css/le-2025-theme-input.css @@ -1,4 +1,4 @@ -@import 'tailwindcss'; +@import "tailwindcss"; @source "../notwatching/hugo_stats.json"; @theme { @@ -188,6 +188,11 @@ @apply bg-gray-200; } } +@utility post-content { + & p:last-child { + @apply mb-0; + } +} @utility prose-content { & h1:not(:first-child) { @apply mt-8; @@ -237,10 +242,6 @@ @apply mt-2 mb-2; } - & p:last-child { - @apply mb-0; - } - & blockquote { @apply pl-4 py-1 my-6 border-l-4 border-gray-300 text-gray-700 italic; } @@ -302,9 +303,9 @@ } & li::before { - content: ''; + content: ""; @apply absolute left-0 top-1/2 transform -translate-y-1/2 w-[40px] h-[43px] bg-no-repeat bg-contain; - background-image: url('/images/le-logo-lockonly-black-cropped.svg'); + background-image: url("/images/le-logo-lockonly-black-cropped.svg"); } } @utility howitworks-figure { @@ -433,7 +434,6 @@ /* Base styles */ @layer base { - body { @apply antialiased; } @@ -456,12 +456,19 @@ .prose a[href]:not(.btn):not(nav a):not(.no-underline) { @apply underline decoration-link hover:decoration-black; } - .bg-le-blue a[href]:not(.btn):not(nav a):not(.no-underline):not(.blog-grid-item) { + .bg-le-blue + a[href]:not(.btn):not(nav a):not(.no-underline):not(.blog-grid-item) { @apply text-link-on-dark hover:text-link-on-dark-hover active:text-link-on-dark-active hover:underline hover:decoration-le-yellow; } - .bg-le-blue p a[href]:not(.btn):not(nav a):not(.no-underline):not(.blog-grid-item), - .bg-le-blue .prose a[href]:not(.btn):not(nav a):not(.no-underline):not(.blog-grid-item), - .bg-le-blue .bg-white a[href]:not(.btn):not(nav a):not(.no-underline):not(.blog-grid-item) { + .bg-le-blue + p + a[href]:not(.btn):not(nav a):not(.no-underline):not(.blog-grid-item), + .bg-le-blue + .prose + a[href]:not(.btn):not(nav a):not(.no-underline):not(.blog-grid-item), + .bg-le-blue + .bg-white + a[href]:not(.btn):not(nav a):not(.no-underline):not(.blog-grid-item) { @apply underline decoration-link-on-dark hover:decoration-le-yellow; } @@ -472,30 +479,30 @@ /* Component styles */ @layer components { - .rss-feed-link .rss-icon { display: inline-block; flex-shrink: 0; width: 14px; height: 14px; background-color: currentColor; - -webkit-mask-image: url('/images/rss-icon.svg'); - mask-image: url('/images/rss-icon.svg'); + -webkit-mask-image: url("/images/rss-icon.svg"); + mask-image: url("/images/rss-icon.svg"); -webkit-mask-size: contain; mask-size: contain; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; } - pre, code { + pre, + code { @apply text-[15px] border border-[#e8e8e8] rounded-[3px] bg-[#eef]; direction: ltr; } pre { - padding: 8px 12px; - overflow-x: auto; - margin-bottom: 1rem; + padding: 8px 12px; + overflow-x: auto; + margin-bottom: 1rem; } pre code { @@ -519,7 +526,8 @@ @apply bg-[#424242] text-white font-semibold normal-case tracking-[.025em]; } - table th, table td { + table th, + table td { @apply px-[15px] py-3 text-left border-b border-[#e8e8e8]; } @@ -548,17 +556,21 @@ /* Glossary */ @keyframes fadeIt { - 0% { background-color: #FFCE00; } - 100% { /* back to normal */ } + 0% { + background-color: #ffce00; + } + 100% { + /* back to normal */ + } } - dfn:target{ + dfn:target { /* highlight for 3 seconds the selected definition target */ animation: fadeIt 3s ease-out; } dfn { font-weight: bold; - padding-right: .25em; /* Prevent italics text from hitting the ":" */ + padding-right: 0.25em; /* Prevent italics text from hitting the ":" */ } /* Hide Netlify preview bar */ @@ -569,68 +581,67 @@ article figure p { margin-bottom: 0; } - } .hero-bg { @apply absolute top-0 left-0 w-full h-full bg-cover opacity-85 z-0; - background-image: url('/images/radiant_london_resized/radiant_london_5_480w.jpg'); + background-image: url("/images/radiant_london_resized/radiant_london_5_480w.jpg"); background-position: top left; } @media (width >= theme(--breakpoint-sm)) { .hero-bg { - background-image: url('/images/radiant_london_resized/radiant_london_5_640w.jpg'); + background-image: url("/images/radiant_london_resized/radiant_london_5_640w.jpg"); background-position: top center; } } @media (width >= theme(--breakpoint-lg)) { .hero-bg { - background-image: url('/images/radiant_london_resized/radiant_london_5_1080w.jpg'); + background-image: url("/images/radiant_london_resized/radiant_london_5_1080w.jpg"); } } @media (width >= theme(--breakpoint-xl)) { .hero-bg { - background-image: url('/images/radiant_london_resized/radiant_london_5_1280w.jpg'); + background-image: url("/images/radiant_london_resized/radiant_london_5_1280w.jpg"); } } @media (width >= theme(--breakpoint-2xl)) { .hero-bg { - background-image: url('/images/radiant_london_resized/radiant_london_5_1920w.jpg'); + background-image: url("/images/radiant_london_resized/radiant_london_5_1920w.jpg"); } } @media (min-width: 480px) and (min-resolution: 2dppx) { .hero-bg { - background-image: url('/images/radiant_london_resized/radiant_london_5_480w@2x.jpg'); + background-image: url("/images/radiant_london_resized/radiant_london_5_480w@2x.jpg"); } } @media (min-width: 640px) and (min-resolution: 2dppx) { .hero-bg { - background-image: url('/images/radiant_london_resized/radiant_london_5_640w@2x.jpg'); + background-image: url("/images/radiant_london_resized/radiant_london_5_640w@2x.jpg"); background-position: top center; } } @media (min-width: 1080px) and (min-resolution: 2dppx) { .hero-bg { - background-image: url('/images/radiant_london_resized/radiant_london_5_1080w@2x.jpg'); + background-image: url("/images/radiant_london_resized/radiant_london_5_1080w@2x.jpg"); } } @media (min-width: 1280px) and (min-resolution: 2dppx) { .hero-bg { - background-image: url('/images/radiant_london_resized/radiant_london_5_1280w@2x.jpg'); + background-image: url("/images/radiant_london_resized/radiant_london_5_1280w@2x.jpg"); } } @media (min-width: 1920px) and (min-resolution: 2dppx) { .hero-bg { - background-image: url('/images/radiant_london_resized/radiant_london_5_1920w@2x.jpg'); + background-image: url("/images/radiant_london_resized/radiant_london_5_1920w@2x.jpg"); } } @@ -640,11 +651,11 @@ .pull-quote-right .quote-text-value { &::before { - content: '\201C'; + content: "\201C"; font-family: inherit; } &::after { - content: '\201D'; + content: "\201D"; font-family: inherit; } } diff --git a/themes/le-2025/layouts/_default/single.html b/themes/le-2025/layouts/_default/single.html index 7c328047c..3b45d6046 100644 --- a/themes/le-2025/layouts/_default/single.html +++ b/themes/le-2025/layouts/_default/single.html @@ -1,91 +1,60 @@ -{{ define "main" }} - {{ $currentPage := . }} - {{ $isUntranslated := false }} - {{ if .Params.untranslated }} - {{ $isUntranslated = true }} - {{ range .Translations }} - {{ if eq .Language.Lang "en" }} - {{ $currentPage = . }} - {{ end }} - {{ end }} - {{/* Fallback if no English translation found? For now, assumes it exists */}} - {{ end }} - - {{ $heroParams := dict "title" $currentPage.Title }} - - {{ if not $isUntranslated }} - {{ $p := . }} - {{ with .Translations }} - {{ $first := index . 0 }} - {{ with $first }} - {{ if eq .Lang "en" }} - {{ if .Lastmod.After $p.Lastmod }} - {{ $heroParams = merge $heroParams (dict "fresherEnglishURL" .RelPermalink) }} - {{ end }} - {{ end }} - {{ end }} - {{ end }} - {{ end }} - - {{ if eq $currentPage.Section "post" }} - {{ $heroParams = merge $heroParams (dict - "breadcrumb" (dict - "text" (i18n "post_hero_breadcrumb_blog") - "href" "/blog/" - ) - "meta" (dict - "date" $currentPage.Date - "author" $currentPage.Params.author - ) - ) }} - {{ end }} - - {{ if not $currentPage.Lastmod.IsZero }} - {{ $heroParams = merge $heroParams (dict "lastUpdated" ($currentPage.Lastmod.Format "January 2, 2006") "section" $currentPage.Section) }} - {{ end }} - - {{ if eq $currentPage.Params.imageHero true }} - {{ partial "components/post-hero-image" $heroParams }} - {{ else }} - {{ partial "components/post-hero" $heroParams }} - {{ end }} - - {{ if and .Params.english_is_canonical (ne .Language.Lang "en") }} -+