Also ich habe da bei dem, was ich gelesen habe, direkt meine Bauchschmerzen muss ich gestehen...
Aber gehen wir das einmal im Detail durch:
a) Direkte Erwiderung (könnte man evtl. weglassen, rein technisch möglich, aber nein, würde ich nicht machen!)
Ein Zertifikat muss aber irgend wann einmal erneuert werden
Ja, aber das kannst Du ja beliebig festlegen, wenn Du das Zertifikat erstellst. Du kannst also hin gehen und ein Zertifikat erstellen, das in 100 Jahren abläuft. Hier ist aber die verwendete Software zu prüfen - nicht dass es da feste Grenzen gibt und z.B. Zertifikate pauschal abgelehnt werden, wenn diese in mehr als 368 Tagen ablaufen. (RFC 5280 gibt aber keine Grenzen und spricht nur von angemessener Dauer.)
Dieses Zertifikat muss dann auf beiden Seiten hinterlegt werden.
Aber natürlich kann man den Prozess auch automatisieren. Da es um ein einfaches selbsterstelltes Zertifikat gehen soll, brauchst Du dazu keine weiteren Tools als eben z.B. openssl. Mit einem Aufruf erzeugst Du dann das Zertifikat und legst es dann bei Client und Server ab.
(Also sowas wie
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 36500 wobei man noch weitere Argumente bräuchte um dann keine Eingaben mehr zu haben ...)
Aber auch hier ist es dann so: Du musst dann das Zertifikat überall hinterlegen. Da es keinen Trust gibt, hast du da kein automatischen Trust für ein erstelltes Zertifikat.
b) Was ich erwarten würde
Generell wäre da immer meine erste Frage: Hat die Firma keine PKI Infrastruktur? Das ist etwas, das ich eigentlich kenne von den meisten Kunden (Du scheinst da ja einen größeren Kunden zu haben, der mehrere sichere Netze hat mit Firewalls abgetrennt und so ...so klang es für mich). Daraus würde dann folgen:
a) Es gibt ein root Zertifikat und alle Systeme sollten diesem vertrauen.
b) Es gibt eine Infrastruktur, um Zertifikate zu beantragen, zu verlängern und und und ...
Zu dem Punkt b gehören dann in der Regel auch Automatismen (Irgendwie hatten Firmen, die ich so erlebt habe, immer certbot im Einsatz) für sowas.
Generell würde ich da immer Rücksprache mit den Verantwortlichen dort halten, denn ich habe da schon die Erfahrung gemacht, dass diese Gespräche sonst bei einem Security Audit eh automatisch kommen sobald da irgendwas mit Zertifikaten aufschlägt ... Aber das kann natürlich einfach nur mein subjektives Empfinden sein denn das sind natürlich Einzelfälle die ich mitbekommen habe.
c) Eigene Lösung, die ich evtl. bauen würde
Aber wenn es keine entsprechende Infrastruktur gibt, dann baut man sich diese einfach. Das bedeutet einfach, dass man eine CA aufbaut. Hört sich wild an - sind einfach nur openssl Aufrufe um Zertifikate zu erstellen.
Das gibt einem dann sozusagen ein root Zertifikat und der Server kann dann dem Zertifikat vertrauen. Bzw. den Clients, die da mit einem Client-Zertifikat ankommen.
Und dann kannst Du natürlich Zertifikate ausstellen. Die haben dann eine gewisse Laufzeit. Da diese von der ca ausgestellt wurden, traut der Server diesen. ==> Du musst da nichts weiter auf dem Server machen.
Damit baust Du da also ins Deployment einfach den entsprechenden Aufruf für ein aktualisiertes Zertifikat ein. Ist relativ unproblematisch und nur ein Aufruf.
Wenn man da ganz neu ist: Da findet sich sehr viel zu. Ich hatte das mal für ein VPN gemacht (OpenVPN und alle Systeme hatten sich mit Client Zertifikaten autorisiert) und damals hatte ich sogar eine Art "CA Baukasten" gehabt. Das war dann schon alles zusammen - man hatte da dann nur ein Archiv entpackt und dann gab es paar Skripte zur Initialisierung und so ... Aber das ist kein Hexenwerk.)
Aber wichtig: Der Part mit der CA ist dann sicherheitsrelevant. Da sollte man sich also paar Gedanken machen, wer da Zugriff hat, wo man das ablegt u.s.w..
Das wären so meine paar Cent. Aber ganz wichtig der Hinweis: Ich bin kein Security Experte. Ich bin auch nur ein dummer Backend Entwickler der bei sowas nach
Mami dem Security Experten schreit (weil das halt nicht mein Job ist - ich kann etwas mitreden und so aber ich werde mir den Hut nicht aufziehen...)