C# 使用.NET WebBrowser控件显示需要X509证书的HTML内容

C# 使用.NET WebBrowser控件显示需要X509证书的HTML内容,c#,wpf,webbrowser-control,x509certificate,C#,Wpf,Webbrowser Control,X509certificate,我们正在尝试在使用System.Windows.Controls.WebBrowser的WPF应用程序中显示HTML内容,该内容需要X509证书 下面是一个简单的XAML示例 <WebBrowser Source="https://server.com/Welcome.html" /> 如果有两个或多个X509证书的KeyUsages==X509KeyUsageFlags.DigitalSignature,浏览器控件将提示用户选择应使用的证书。我们希望阻止显示此对话框 通过代码,我

我们正在尝试在使用System.Windows.Controls.WebBrowser的WPF应用程序中显示HTML内容,该内容需要X509证书

下面是一个简单的XAML示例

<WebBrowser Source="https://server.com/Welcome.html" />
如果有两个或多个X509证书的KeyUsages==X509KeyUsageFlags.DigitalSignature,浏览器控件将提示用户选择应使用的证书。我们希望阻止显示此对话框

通过代码,我们可以知道应该使用哪个证书,但我们看不到将此信息发送到浏览器控件的方法。起初,我们希望WebBrowser会像HttpWebRequest一样有一个ClientCertificate或ClientCertificates属性,我们可以用它来设置证书,但似乎没有这样的属性

我们意识到WebBrowser控件实际上是一个带有WPF包装的Win32控件,所以可能有一个旧的Win32 API调用可用于设置证书


其他建议是使用具有不同web浏览器控件的第三方库。在尝试这种方法之前,我们希望确保没有办法使用c web浏览器控件。

webbrowser控件调用主机的实现来通知错误\u INTERNET\u客户端\u AUTH\u CERT\u所需的错误,但是这里有两个障碍:

WPF允许您将任何webbrowser主机接口添加到ActiveX主机。这个,或者说

要以WinInet方式选择证书,您需要。然而,webbrowser控件并没有真正公开任何API来为您提供WinInet句柄

我建议您找到或编写一个可编程代理来在代理端执行此身份验证,然后在您的过程中使用该代理。我不确定是否合适,但你可以试一试

也许能帮上忙