Certifikat Gennemsigtighed (CT) Logs

Seneste opdatering: | Se al dokumentation

Certifikat gennemsigtighed (CT) er et system til logning og overvågning af udstedelsen af TLS-certifikater. CT forbedrer i høj grad alles evne til at overvåge og studere udstedelse af certifikater, og disse evner har ført til talrige forbedringer af CA-økosystemet og websikkerhed. Som følge heraf er CT hurtigt ved at blive kritisk infrastruktur.

Let's Encrypt indsender alle certifikater, vi udsteder til CT-logs. Vi driver også to årligt splittede CT-logfiler med navnet Oak og Sapling. Alle offentligt betroede certifikatmyndigheder er velkomne til at indsende til vores logs. Mange rod-certifikater fra certifikatmyndigheder er allerede inkluderet i vores CT-logs. Hvis du driver en Certifikatmyndighed og din udsteder ikke er på vores liste over godkendte udstedere, bedes du indsende et problem her.

Tilmeld dig for meddelelser i kategorien CT annonceringer i vores community forum for at se større meddelelser om vores CT-logs.

Finansiering

Hvis din organisation gerne vil hjælpe os med at fortsætte dette arbejde, så overvej venligst sponsorering eller donering.

Arkitektur

Tjek vores blog for at se Hvordan Let's Encrypt driver CT Logs!

Log Overvågning

Let's Encrypt har oprettet et open source CT-logovervågningsværktøj kaldet CT Woodpecker. Vi anvender dette værktøj til at overvåge stabiliteten og overholdelsen af vores egne logs, og vi håber, at andre også vil finde det nyttigt.

CT Logs

Oplysninger om de forskellige livscyklusser tilstande, som en CT log går gennem kan findes her.

Produktion

Test

Sunlight


Log Handlinger

For at opliste de medfølgende roots for en bestemt CT-log, kan du køre følgende kommando i en terminal efter eget valg:

$ for i in $(curl -s https://oak.ct.letsencrypt.org/2020/ct/v1/get-roots | jq -r '.certificates[]'); do
    echo '------'; base64 -d <<< "${i}" | openssl x509 -inform der -noout -issuer -serial
done

Indsendelse af certifikater til en CT-log håndteres typisk af certifikatmyndigheder. Hvis du gerne vil eksperimentere med dette, så begynd med at hente et vilkårligt PEM-kodet certifikat fra vores foretrukne hjemmeside. Kopier og indsæt følgende blok i din terminal.

$ echo | \
openssl s_client \
    -connect "letsencrypt.org":443 \
    -servername "letsencrypt.org" \
    -verify_hostname "letsencrypt.org" 2>/dev/null | \
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > example.crt

Før et certifikat kan indsendes, skal det være JSON kodet i en speciel struktur. Du kan bruge JSON generatoren fra https://crt.sh/gen-add-chain til at udføre denne opgave. Crt.sh værktøjet vil returnere en JSON bundle. Download pakken til din computer, omdøb filen, hvis du skal og udstede følgende kommando til udførelse af add-chain operation (RFC 6962 afsnit 4.) at indsende certifikatet til en CT-log. Outputtet vil indeholde en signatur, som faktisk er en SCT. Mere om underskriften om et øjeblik.

$ curl \
    -X POST \
   --data @example-json-bundle.json \
    -H "Content-Type: application/json" \
    -H "User-Agent: lets-encrypt-ct-log-example-1.0" \
   https://oak.ct.letsencrypt.org/2020/ct/v1/add-chain
{"sct_version":0,"id":"5xLysDd+GmL7jskMYYTx6ns3y1YdESZb8+DzS/JBVG4=","timestamp":1576689972016,"extensions":"","signature":"BAMARzBFAiEA4OmuTcft9Jq3XLtcdZz9XinXCvYEY1RdSQICXayMJ+0CIHuujkKBLmQz5Cl/VG6C354cP9gxW0dfgMWB+A2yHi+E"}

For at bekræfte, at CT-loggen blev underskrevet af Oak 2020 shard — bruger vi id feltet fra kommandoen ovenfor og køre det gennem følgende kommando. Resultatet af dette vil udskrive log-ID'et for CT-loggen.

$ base64 -d <<< "5xLysDd+GmL7jskMYYTx6ns3y1YdESZb8+DzS/JBVG4=" | xxd -p -c 64 | sed -e 's/../&:/g' -e 's/:$//' | tr '[:lower:]' '[:upper:]'
E7:12:F2:B0:37:7E:1A:62:FB:8E:C9:0C:61:84:F1:EA:7B:37:CB:56:1D:11:26:5B:F3:E0:F3:4B:F2:41:54:6E

Ved brug af signaturfeltet, kan vi verificere at certifikatet blev indsendt til en log. Ved hjælp af vores SCT detaljerede vejledningkan du afkode denne værdi yderligere.

$ base64 -d <<< "BAMARzBFAiEA4OmuTcft9Jq3XLtcdZz9XinXCvYEY1RdSQICXayMJ+0CIHuujkKBLmQz5Cl/VG6C354cP9gxW0dfgMWB+A2yHi+E" | xxd -p -c 16 | sed -e 's/../&:/g' -e 's/:$//' | tr '[:lower:]' '[:upper:]'
04:03:00:47:30:45:02:21:00:E0:E9:AE:4D:C7:ED:F4
9A:B7:5C:BB:5C:75:9C:FD:5E:29:D7:0A:F6:04:63:54
5D:49:02:02:5D:AC:8C:27:ED:02:20:7B:AE:8E:42:81
2E:64:33:E4:29:7F:54:6E:82:DF:9E:1C:3F:D8:31:5B
47:5F:80:C5:81:F8:0D:B2:1E:2F:84