Heim >Backend-Entwicklung >Golang >Holen Sie sich TLS-Informationen vom Client

Holen Sie sich TLS-Informationen vom Client

WBOY
WBOYnach vorne
2024-02-09 12:27:091252Durchsuche

从客户端获取 TLS 信息

php-Editor Baicao stellt Ihnen vor, wie Sie TLS-Informationen vom Client erhalten. Während des Website-Entwicklungsprozesses ist es sehr wichtig, die TLS-Informationen des Clients zu erhalten, um einige sicherheitsrelevante Funktionen zu implementieren. TLS ist ein Verschlüsselungsprotokoll zur Sicherung der Netzwerkkommunikation. Durch den Erhalt der TLS-Informationen des Kunden können wir die Zertifikatsinformationen, den Verschlüsselungsalgorithmus, die Schlüssellänge und andere zugehörige Informationen des Kunden erhalten und so die Sicherheit der Website verbessern. In den folgenden Artikeln erklären wir ausführlich, wie Sie TLS-Informationen vom Client erhalten und wie Sie diese Informationen verwenden, um die Sicherheit der Website zu erhöhen.

Frageninhalt

net/http go-Paket verfügt über eine Typanforderung, die ein Speichern definiert ConnectionState 的字段 TLS。不过,描述中的最后一条语句表示它被 HTTP 客户端忽略。我在调试时也检查过,它是 nil.

Ich muss den Wert TLSUnique von diesem Verbindungsstatus (oder anderswo) erhalten, damit ich ihn in meine Zertifikatsanforderung (auch CSR genannt) aufnehmen kann, bevor ich ihn registrieren/an den Server senden kann.

Der Server geht über den Rahmen meiner Frage hinaus. Was mir am Herzen liegt, ist der Kunde.

Der Server empfängt dann die Anfrage und prüft die Signatur der CSR sowie den TLS-Eindeutigkeitswert. Dadurch wird bewiesen, dass der Client, der die TLS-Verbindung herstellt, derselbe Client ist, der die CSR signiert hat.

Dies ist aus RFC 7030 – Abschnitt 3.5 (EST-Protokoll)

[Was ich verwende]

Ich experimentiere mit den GlobalSign EST Go-Paketen, aber sie scheinen diese Funktionalität nicht zu enthalten.

Ihr EST-Client scheint für jeden EST-Vorgang einen http-Client zu erstellen. Ich dachte, ich könnte dieses Verhalten ändern und einen Client haben, an den alle Anfragen gesendet werden können.

Da der Client jedoch die RoundTripper-Schnittstelle akzeptiert, kann ich die Informationen der zugrunde liegenden Verbindung nicht außerhalb der Implementierung verwenden.

Problemumgehung

Ein Ansatz erfordert die Durchführung einiger kleiner Änderungen am Global-Symbol-EST-Paket.

Wie ich bereits sagte, erstellt die aktuelle Implementierung einen neuen http-Client für jeden EST-Vorgang (CACerts, CSRAttrs, Enroll usw.)

1- Lassen Sie uns einen http-Client für alle EST-Vorgänge verwenden.
2- In jedem Fall müssen wir anrufen, um das CA-Zertifikat zu erhalten, bevor wir den CSR registrieren.
3- Die HTTP-Antwort auf jede Client-Anfrage legt Felder offen http.Response.TLS.TLSUnique.
4- Bitten Sie den Kunden, es in die Zertifikatsanforderung aufzunehmen, es zu signieren und zu registrieren.

Wenn ich über das Global Symbol EST-Paket nachdenke und warum sie sich dafür entscheiden, jedes Mal einen neuen http-Client zu erstellen.
(Es sei denn, man wartet nur darauf, dass Beispiele entsprechend den Wünschen des Benutzers verwendet werden)

Das obige ist der detaillierte Inhalt vonHolen Sie sich TLS-Informationen vom Client. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen