簡體   English   中英

Mono HttpListener客戶端證書

[英]Mono HttpListener client certificate

我使用HttpListener創建了一個服務器。 它在沒有SSL的情況下工作得很好,但是使用SSL時會出現奇怪

我已經使用httpcfg安裝了證書,甚至使用我自己的程序,它安裝正確,監聽器啟動並提供HTTPS請求,但始終要求提供客戶端證書。

它不會發生在Windows / .net上,只有Linux / mono(我使用的是ver 3.4.0)並且非常煩人,我不希望每次嘗試登錄客戶端時都會詢問用戶證書。

這是單聲道錯誤還是有任何方法可以禁用客戶端證書協商?

謝謝。

我遇到了同樣的問題。 我發現這是在Mono中硬編碼的。 mcs / class / System / System.Net / HttpConnection.cs中 ,當調用SslServerStream構造函數時 ,您會注意到requestClientCertificate被硬編碼為true

我遇到了這個試圖將這個硬編碼值改為false PR ,但由於“我寧願不為另一個硬編碼值更改一個硬編碼值”,因此它目前被半拒絕。

[更新]我剛剛意識到 (OP)是PR的作者:)

[更新9/21/2016]看起來這個問題仍然受到歡迎。 如果它對任何人都有幫助,我們很久以前就用nginx作為反向代理,當時我們無法解決這個問題。 我很高興我們做到了,而且應該早點完成。 它比Mono更快地處理SSL / TLS,並允許我們更加謹慎地控制加密套件並及時更新安全補丁。

我一直在關注尚未發布的Mono 4.6 通過對TLS的徹底檢查以及在運行時插入備用實現的能力,這可以為我們提供一條前進的道路,而無需使用nginx反向代理。

唯一的選擇(仍然......)有:

如果使用最新的Mono版本的源代碼,請使用Gusman的pull請求#1#2 (取決於您的Mono版本)作為解決方法,對於高效環境應該是正常的。

Mono v4.2.3.4的示例:

echo -e -n "83c83\n< \t\t\t\tSslServerStream ssl_stream = new SslServerStream (new NetworkStream (sock, false), cert, false, true, false);\n---\n> \t\t\t\tSslServerStream ssl_stream = new SslServerStream (new NetworkStream (sock, false), cert, false, false, false);\n" > nocerts.diff
tar xvjf mono-4.2.3.4.tar.bz2
cd mono-4.2.3.4 
patch ./mcs/class/System/System.Net/HttpConnection.cs ../nocerts.diff
./configure --prefix=/usr
make
make install

或者使用沒有客戶端證書(即v3.10.0)的最新Mono版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM