Mono HttpListener-Clientzertifikat

9

Ich habe einen Server mit HttpListener erstellt. Es funktioniert perfekt ohne SSL, aber mit SSL passiert etwas seltsames.

Ich habe das Zertifikat mit httpcfg installiert und sogar mit meinem eigenen Programm, es installiert korrekt, der Listener startet und bedient HTTPS-Anfragen, fragt aber immer nach einem Client-Zertifikat.

Es passiert nicht unter Windows / .net, nur unter Linux / Mono (ich benutze ver 3.4.0) und ist sehr nervig, ich möchte nicht, dass der Benutzer jedes Mal gefragt wird, wenn er sich anmeldet für ein Client-Zertifikat.

Ist das ein Mono-Bug oder gibt es eine Möglichkeit, die Client-Zertifikat-Verhandlung zu deaktivieren?

Danke.

    
Gusman 06.08.2014, 22:47
quelle

2 Antworten

2

Ich habe das gleiche Problem. Was ich entdeckt habe ist, dass dies in Mono fest codiert ist. In mcs / class / System / System.Net / HttpConnection .cs , wenn die Konstruktor von SslServerStream wird aufgerufen, Sie werden feststellen, dass requestClientCertificate fest auf true codiert ist.

Ich bin auf diese PR gestoßen, die versucht, diesen festcodierten Wert in false zu ändern, wie auch immer es momentan halb ist -rejected wegen "Ich ändere lieber nicht einen fest codierten Wert für einen anderen hartcodierten Wert."

[Update] Und ich habe gerade festgestellt, Sie (OP) sind der Autor der PR:)

[Update 21.09.2016] Es sieht so aus, als ob diese Frage immer noch Treffer bekommt. Wenn es für irgendjemanden hilfreich ist, sind wir vor langer Zeit mit nginx als Reverse Proxy gegangen, als wir dieses Problem nicht lösen konnten. Ich bin froh, dass wir es getan haben, und hätten es früher tun sollen. Es ist viel schneller als Mono für die Handhabung von SSL / TLS und ermöglicht es uns, die Krypto-Suites sorgfältiger zu kontrollieren und mit Sicherheitspatches auf dem neuesten Stand zu bleiben.

Ich behalte Mono 4.6 im Auge noch zu lösen. Mit ihrer Überholung von TLS und der Möglichkeit, alternative Implementierungen zur Laufzeit zu verwenden, könnte dies einen Weg nach vorne bringen, ohne nginx reverse proxy zu verwenden.

    
BrandonLWhite 19.02.2015 15:08
quelle
0

Die einzigen Optionen, die eins (noch ..) hat, sind:

Verwenden Sie die Gusman Pull-Anforderung # 1 oder # 2 (abhängig von deiner Mono-Version) als Workaround sollte für produktive Umgebungen OK sein, wenn der aktuelle Quellcode einer Mono-Version verwendet wird.

Beispiel für Mono v4.2.3.4:

%Vor%

Oder verwenden Sie die letzte Mono-Version, die ohne Client-Zertifikate arbeitet (was v3.10.0 ist).

    
RhinoDevel 19.04.2016 14:32
quelle

Tags und Links