zoukankan      html  css  js  c++  java
  • iis https 客户端证书

    1、自建根证书

    makecert -r -pe -n "CN=WebSSLTestRoot" -b 12/22/2013 -e 12/23/2024 -ss root -sr localmachine -len 2048

    2、建网站用的证书

    makecert -pe -n "CN=www.aaa.com" -b 12/22/2013 -e 12/23/2024 -eku 1.3.6.1.5.5.7.3.1 -is root -ir localmachine -in WebSSLTestRoot -len 2048 -ss WebHosting -sr localmachine

    cn是网站对应的域名

    3、建客户端证书

    makecert -pe -n "CN=czcz1024" -eku 1.3.6.1.5.5.7.3.2 -is root -ir localmachine -in WebSSLTestRoot -ss my -sr currentuser -len 2048

    cn可以是用户名

    根证书在 本地计算机-受信任的根证书颁发机构

    网站证书在 本地计算机-Web宿主

    客户端证书在 当前用户-个人

    iis中,建立网站用web宿主的

    使用ie,访问,当客户端有证书试,会要求选择证书

    image

    string r;
    HttpClientCertificate cert = Request.ClientCertificate;
    if (cert.IsPresent)
        r = cert.ServerSubject + "---" + cert.Subject;
    else
        r = "No certificate was found.";
    return Content(r);

    我们可以通过代码来获取证书信息

    image

    4、程序自动创建用户客户端证书

    var path = @"…makecert.exe";
    var cmd = " -pe -n "CN=czcz1024" -eku 1.3.6.1.5.5.7.3.2 -is root -ir localmachine -in WebSSLTestRoot -ss my -sr currentuser -len 2048";
    var p = Process.Start(path, cmd);
    p.WaitForExit();            
    p.Close();

    调用cmd去执行,需要iis已administrator身份运行

    image

    5、导出,并提供客户下载

    X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
    store.Open(OpenFlags.MaxAllowed);
    foreach (X509Certificate2 myX509Certificate2 in store.Certificates)
    {
        if (myX509Certificate2.Subject == "CN=czcz1024")
        {
            byte[] CertByte = myX509Certificate2.Export(X509ContentType.Pfx,"123456");
            return File(CertByte, "application/octet-stream", "cert.pfx");
        }
    }
    
    return Content("not found");

    同样,这个也需要administrator才能获取到

    需要导出成pfx,客户端才可以导入,导入的时候,需要密码,密码为代码中的“123456”那部分

    6、iis的ssl设置

    image

    如果是必需,当客户端没有证书时

    image

    当选择

    image

    没有证书则显示

    image

    对应上面代码的else分支

    选择 忽略 则不会要求客户端提供证书了

    自建根,当客户端访问时,需要导入根证书到受信任的根

  • 相关阅读:
    struts 2.1.8.1的sx:datetimepicker标签出现NaN错误的原因和解决办法
    php windows与linux下的路径区别
    php递归删除文件夹
    php ffmpeg截取视频第一帧保存为图片的方法
    mysql group by使用方法注意
    PHP更新用户微信信息的方法
    PHP file_get_contents 读取js脚本的问题
    javascript采用Broadway实现安卓视频自动播放的方法(这种坑比较多 不建议使用)
    html5 textarea 写入换行的方法
    jquery swiper3自定义切换效果的方法
  • 原文地址:https://www.cnblogs.com/czcz1024/p/5695842.html
Copyright © 2011-2022 走看看