zertifkate enthalten die url des browsers. damit jetzt nicht jeder zertifikate für www.google.com ausstellen kann, was man leicht mit openssl auf der kommandoazeile kann, werden zertifikate von vertrauensvollen stellen unterschrieben.
also du gibt’s bei einer solchen stelle dein selbst erstelltes zertifkat ab und erhälst es unterschrieben zurück. unterschrieben heißt hier “nochmal” verschlüsseln mit dem privaten teil des schlüssels der vertauensvollen stelle. der öffentliche teil dieses schlüssels ist in deinem browser.
letsencrypt ist eine solche vertrauensvolle stelle. deren öffentlicher schlüssel ist in deinem browser.
jetzt kommt der punkt mit dem vertrauen. letsencrypt möchte gerne wissen, ob dir denn auch die domain www.google.com gehört. also schicken sie dir als gegenzug zu deinem “signing request” einen “challenge” zu, mit der bitte den auf deiner web-seite zur verfügung zu stellen. der letsencrypt client (certbot, acme.sh, andere) stellt dieses challenge über einen webserver zur verfügung und letsencrypt ruft den ab. für deine domain kein problem. falls du das mit www.google.com versuchst, wird’s schwierig. ist der abruf erfolgreich, bekommst du ein unterschriebenes zertifkat turück. und dein browser bestätigt dir mit dem schloß, dass du mit deiner seite verbunden bist.
nö. immer wenn du einen letencrypt client beauftragst ein zertifkat zu erstellen/erneuern, wird immer ein neues erstellt und zum unterschreiben geschickt.
p.s.: das mit öffentlichen und privaten teil bezieht sich eher auf asymmetrische kryptographie, wo man öffentliche und private schüssel benutzt. den öffentlichen kann man gefahrlos über unsichere kanäle schicken. der dient aber nur zum verschlüsseln der nachricht. deshalb kann den jeder haben.
p.p.s.: das mit dem challenge über web ist nur eine methode zu prüfen, ob dir die domain gehört. alternativ kann man auch txt einträge im dns vornehmen. die ruft letsencrypt dann mittels “nslookup” ab.
p.p.p.s: ruf mal mit `curl -v https://www.google.com/ die seite auf der commando zeile auf. dann findest oben im header den “inhalt” des zertifikates.
* Server certificate:
* subject: C=US; ST=California; L=Mountain View; O=Google LLC; CN=www.google.com
* start date: Jan 5 12:13:00 2021 GMT
* expire date: Mar 30 12:12:59 2021 GMT
* subjectAltName: host "www.google.com" matched cert's "www.google.com"
* issuer: C=US; O=Google Trust Services; CN=GTS CA 1O1
* SSL certificate verify ok.