我期待着从任何给定的域名SSL证书的数据。例如,我想输入任何网站地址。“http://stackoverflow.com”,我的代码将首先检查是否存在SSL证书。如果是的话,我希望它能把证书的到期日期拉出来。[ i am阅读Domainnames from DB ]示例:http://www.digicert.com/help/
我需要创建一个Web服务来检查到期日期。我怎样才能实施呢??-我查了很多不同的东西,比如RequestCertificateValidationCallback和ClientCertificates等。
我可能完全错了(因此我需要帮助),但我会创建一个HTTPWebRequest,然后以某种方式请求客户端证书和特定元素吗?
我尝试了@SSL certificate pre-fetch .NET提供的示例,但我得到了禁止403错误。
4条答案
按热度按时间tf7tbtn21#
要做到这一点,你的项目需要引用
System.Security
:.NET Core 2.1 - .NET 5
您可以使用HttpClientHandler和ServerCertificateCustomValidationCallback属性。(这个类在.net 4.7.1及更高版本中也可用)。
rekjcdws2#
@cdev的解决方案在.NET Core 2.1上不适用。
HttpWebRequest
在.NET Core上是not completely supported。下面是我在.NET Core**上使用的函数,用于获取任何服务器的X509证书:
ycggw6v23#
需要注意的是,您可能需要设置
request.AllowAutoRedirect = False
。否则,如果服务器将HTTPS重定向到HTTP,您将无法从HttpWebRequest
对象获取证书。nhn9ugyo4#
每次要发出请求时都重新创建
HttpClient
是非常低效的,可能会导致性能问题。最好为所有方法创建一个只读客户端。更多信息请访问here。这是我获取证书信息的解决方案:
构造函数内部代码:
然后可以通过以下方式读取所有变量: