diff --git a/crl/updater/continuous.go b/crl/updater/continuous.go
index 4597fd60a..5ee00d765 100644
--- a/crl/updater/continuous.go
+++ b/crl/updater/continuous.go
@@ -3,6 +3,7 @@ package updater
 import (
 	"context"
 	"math/rand/v2"
+	"os"
 	"sync"
 	"time"
 
@@ -16,6 +17,29 @@ import (
 func (cu *crlUpdater) Run(ctx context.Context) error {
 	var wg sync.WaitGroup
 
+	// If there is no .crl file yet, generate one (after a delay to let all other
+	// components start up fully).
+	// Dirty hack to check filesystem directly instead of using the crl-storer...
+	files, err := os.ReadDir("/var/www/html/crl/")
+	if err != nil {
+		return err
+	}
+	present := false
+	for _, file := range files {
+		if file.Name() != "root-ca.crl" {
+			present = true
+		}
+	}
+	if !present {
+		select {
+		case <-ctx.Done():
+			return ctx.Err()
+		case <-time.After(2 * time.Minute):
+		}
+
+		cu.RunOnce(ctx)
+	}
+
 	shardWorker := func(issuerNameID issuance.NameID, shardIdx int) {
 		defer wg.Done()
 
