• Https请求被中止: 未能创建 SSL/TLS 安全通道


    可以参考https://www.cnblogs.com/ccsharp/p/3270344.html

    和https://blog.csdn.net/baidu_27474941/article/details/52484395

    public static bool CheckValidationResult(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)

    { return true; }

    //通过https协议上传数据,url为接口地址,str为要上传的数据

    public static string HttpPost(string url,string str)

    {

    string result="";

    try

    {

    ServicePointManager.Expect100Continue = false;

    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11|SecurityProtocolType.Tls12|SecurityProtocolType.Tls|SecurityProtocolType.Ssl3;// 只有.net4.5以上才有Tls11,Tls12,建立通道

    ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);

    HttpWebRequest req=(HttpWebRequest )WebRequest.Create(url) ;

    //读取本地计算机证书

    X509Store certStore = new X509Store(StoreName.My, StoreLocation.LocalMachine);
    certStore.Open(OpenFlags.ReadOnly);
    X509Certificate2Collection certCollection = certStore.Certificates.Find(X509FindType.FindBySubjectName, "安装的证书名字", false);
    req.ClientCertificates.Add(certCollection[0]));

    //传输数据

    req.Method = "POST";
    req.ContentType = "application/json";//根据编码格式进行选择
    req.ContentLength = data.Length;

    byte[] data=Encoding.UTF8.GetBytes(str);//数据类型转换
    using (var reqStream = request.GetRequestStream())
    {
    reqStream .Write(data, 0, data.Length);

    reqStream .Close();
    }

    HttpWebResponse response = (HttpWebResponse)request.GetResponse();

    Stream stream=response.GetResponseStream();
    using(Stream reader=new StreamReader(stream,Encoding.UTF8))

    {

    result=reader.ReadToEnd();

    }

    }

    catch

    {

    throw;

    }

    return result;

    }

     

    Https传输证书授权问题

    一、导入证书 

    1. 单击 开始 ,单击 运行 ,键入 mmc ,然后单击 确定 。

    2. 在 文件 菜单上单击 添加/删除管理单元 。

    3. 在 可用的管理单元 列表中选择 证书 ,点击 添加 。

    4. 在 证书管理 对话框中选择 计算机账户 ,然后单击 下一步

    5. 在 选择计算机 对话框中,单击 完成 。

    6. 在 添加或删除管理单元 对话框单击 确定 。

    7. 展开 证书 (本地计算机) ,展开 个人 ,然后单击 证书

    8. 右键 -》 所有任务-》导入 选择你的证书导入

    9.展开“受信任的根证书颁发机构”,选择证书--所有任务--导入

    . 修改IIS上对应项目的程序池标识(如果是服务端,客户端的不用此步骤)

    1. 打开IIS -> 选择[应用程序池] -> 选中对应的项目 -> 选择右侧的[高级设置]

    2. 找到[进程模型] -> 修改[标识]属性值

    3. ApplicationPoolIdentity 修改为 NetworkService

    、安装授权工具

     1.下载 winhttpcertcfg.exe 安装

     附下载地址:1.https://www.microsoft.com/en-us/download/confirmation.aspx?id=19801

     2.https://www.microsoft.com/en-us/download/details.aspx?id=19801

     3.安装完  用命令窗口  跳转到 C:Program Files (x86)Windows Resource KitsTools(安装的路径) 执行

    winhttpcertcfg -g -c LOCAL_MACHINEMY -s "test" -a "NetworkService"

    test是证书名,不带后缀,替换成你的证书名字就行

    详细信息可以参考https://www.cnblogs.com/ccsharp/p/3270344.html

    https://www.cnblogs.com/similar/p/6831899.html

     

    四、设置网站SSL

    选中网站,点击 SSL设置 ,选择要求SSL,选择必须,点击应用

     

  • 相关阅读:
    Struts2 MVC基础介绍
    【转载】Linux下安装、配置、启动Apache
    网易校招编程题
    libevent中evmap实现(哈希表)
    libevent源码阅读笔记(一):libevent对epoll的封装
    Linux进程间通信总结
    【转载】Ubuntu 12.04 LTS 中文输入法的安装
    转载 正则表达式30分钟入门教程
    简明Vim练级攻略
    【转载】C++基本功和 Design Pattern系列 ctor & dtor
  • 原文地址:https://www.cnblogs.com/huodige/p/11177381.html
Copyright © 2020-2023  润新知