【问题标题】:Get the public key of a website's SSL certificate获取网站 SSL 证书的公钥
【发布时间】:2013-03-05 04:00:57
【问题描述】:

我不确定以下是否可行,因为我绝不是该主题(安全、证书等)方面的专家。

无论如何,我想做的是使用 C# 代码获取网站 SSL 证书的公钥。有没有办法使用 HTTP 请求或其他方式从网站查询该信息?

为了让你们理解我为什么真的想这样做,我将简要解释一下我想要实现的场景。基本上,我有很多网站使用 OAuth 2.0 来实现彼此之间的信任状态。因此,假设Site1Site2 发出了一个请求,并向其发送了一个令牌,该令牌应该来自受信任的授权服务器。 Site2 应该可以验证这个令牌的真实性。

我希望这已经足够清楚了。

【问题讨论】:

  • 看到这个问题:stackoverflow.com/questions/2768670/…。它的答案显示了如何执行自定义验证,并且在验证处理程序中,您可以选择证书并提取其私钥。
  • @EugeneMayevski'EldoSCorp 感谢您的链接,但这并不是我所需要的。我真正需要的是能够查询 facebook.com 以获取其证书信息。实际上我只需要公钥。

标签: c# asp.net oauth certificate ssl-certificate


【解决方案1】:

我将以下代码块用于类似目的。希望对你有帮助!!!

        Uri u = new Uri(url);
        ServicePoint sp = ServicePointManager.FindServicePoint(u);

        string groupName = Guid.NewGuid().ToString();
        HttpWebRequest req = HttpWebRequest.Create(u) as HttpWebRequest;
        req.ConnectionGroupName = groupName;

        using (WebResponse resp = req.GetResponse())
        {

        }
        sp.CloseConnectionGroup(groupName);
        byte[] key = sp.Certificate.GetPublicKey();

        return key;

【讨论】:

  • 是的,这正是我所需要的。如果您能评论您的代码 sn-p 以突出显示重要部分正在做什么,我将不胜感激。还是非常感谢你:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-19
  • 2020-08-06
  • 2020-07-13
相关资源
最近更新 更多