• 获取服务端https证书


    最近开发一个需求,涉及获取服务端https证书。一般进行https调用我们都不太关心底层细节,直接使用WebClient或者HttpWebRequest来发送请求,这两种方法都无法获取证书信息,需要用到ServicePoint,这个类用于提供HTTP连接的管理。

    写个Demo,拿新浪首页试一下:

    复制代码
    using System;
    using System.Net;
    using System.Security.Cryptography.X509Certificates;
     
    namespace GetServerCertificateDemo
    {
        class Program
        {
            static void Main(string[] args)
            {
                //用WebClient访问新浪首页
                var http = new WebClient();
                var uri = new Uri("https://www.sina.com.cn");
                http.DownloadString(uri);
                 
                //通过Uri获取ServicePoint
                var servicePoint = ServicePointManager.FindServicePoint(uri);
                 
                //取服务端证书,X509Certificate格式,转一下
                var serverCert = new X509Certificate2(servicePoint.Certificate);
                Console.WriteLine("颁发给:{0}", serverCert.Subject);
                Console.WriteLine("颁发者:{0}", serverCert.Issuer);
                Console.WriteLine("序列号:{0}", serverCert.SerialNumber);
                Console.WriteLine("指  纹:{0}", serverCert.Thumbprint);
                Console.WriteLine("起  始:{0}", serverCert.NotBefore);
                Console.WriteLine("过  期:{0}", serverCert.NotAfter);
            }
        }
    }
    复制代码

    运行看效果:

    上半部分是程序运行结果,下面是用Firefox查看的服务端证书信息,各项信息都能对应上。如果程序中涉及多个不同服务器的访问也没关系,关键在于根据Uri获取ServicePoint,然后取到的证书就是此服务器的了。

  • 相关阅读:
    BZOJ1059|矩阵游戏
    Tyvj3632|超级英雄Hero
    BZOJ1192 鬼谷子的钱袋
    BZOJ1003 ZJOI2006物流运输trans 0'
    BZOJ1008|HNOI2008 越狱
    添加setuptools脚本
    更新linux下python版本
    函数式编程正确姿势
    python 多线程操作数据库
    python with语句
  • 原文地址:https://www.cnblogs.com/zzw4756885/p/9318616.html
Copyright © 2020-2023  润新知