Ich verwende x/crypto/pkcs12, um eine DER-formatierte * .p12-Datei zu laden. Es gibt an example in the documentation, das tls.X509KeyPair
verwendet, um einen tls.Certificate
zu erstellen, der für einen HTTP-Client verwandt werden kann.Wie man ein x509.Certificate in ein tls.Certificate in Go verwandelt?
Das ist perfekt und funktioniert gut. Aber ich möchte auch überprüfen, dass das Zertifikat nicht abgelaufen ist. Die pkcs12
Bibliothek hat auch eine Decode function, die ein x509-Zertifikat zurückgibt, dass ich als Methode verwenden kann. Das funktioniert auch gut.
Es scheint mir nur merkwürdig, dass ich die DER zweimal dekodiere. Einmal für eine x509.Certificate
zu verifizieren, und wieder eine tls.Certificate
zu bekommen. Ich kenne die Beziehung zwischen diesen beiden Certificate-Strukturen nicht, aber da das tls-Paket eine Funktion namens tls.X509KeyPair hat, die einige Bytes benötigt, sollte es nicht auch einen offensichtlichen Weg geben, ein tls.Certificate von einem x509 zu erhalten. Zertifikat oder umgekehrt? Was vermisse ich?
Danke Matt. Ich werde es versuchen. Muss ich irgendetwas mit den anderen Feldern von tls.Certificate machen oder irgendwelche Funktionen aufrufen, oder soll es "einfach funktionieren"? Ich bemerkte, dass x509.Certificate.Verify() auch Ketten zurückgibt. – nathany
TLS-Server benötigen das Feld PrivateKey, um den Handshake erfolgreich abzuschließen. Ich denke, der Rest ist optional. – Matt
Sieht so aus, als brauche ich einen PrivateKey für Clients. Etwas nachgehen. Tls: Client-Zertifikat privaten Schlüssel des Typs implementiert nicht Crypto.Signer –
nathany