在Windows 8应用程序中使用SSL证书编程

 choojo深呼吸 发布于 2023-02-04 17:16

我需要帮助:

我们的后端由自签名证书保护.让我们称之为:OurMegaCoolCertificate.cer

因此,我们使用certmgr.msc将此证书导入我们的开发人员计算机.现在我们可以使用以下代码从后端检索数据:

async public static Task getData(string Id, string Type)
    {
        String url = "https://BACKEND/API/?Id=" + Id + "&Type=" + Type;
        HttpClientHandler aHandler = new HttpClientHandler();
        aHandler.ClientCertificateOptions = ClientCertificateOption.Automatic;
        HttpClient aClient = new HttpClient(aHandler);
        aClient.DefaultRequestHeaders.ExpectContinue = false;

        aClient.DefaultRequestHeaders.MaxForwards = 3;
        Uri requestUri = new Uri(url);
        HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUri);
        //request.Headers.ExpectContinue = false;
        var result = await aClient.GetAsync(requestUri, HttpCompletionOption.ResponseContentRead);

        var responseHeader = result.Headers;
        //Debug.WriteLine(responseHeader.WwwAuthenticate);

        var responseBody = await result.Content.ReadAsStringAsync();

        return responseBody;
    }

但是当然我们不能告诉用户我们的应用程序,手动安装证书,有没有办法将这个证书添加到项目并使用它?或者导入到用户机程序?请指导我,我是SSL安全新手

我已设法做到这一点,没有错误,但请求失败,看起来像请求找不到证书:

private async void GetOverHere()
    {
        //await Windows.Security.Cryptography.Certificates.CertificateEnrollmentManager.InstallCertificateAsync("",InstallOptions.None);
        StorageFolder packageLocation = Windows.ApplicationModel.Package.Current.InstalledLocation;
        StorageFolder certificateFolder = await packageLocation.GetFolderAsync("Certificates");
        StorageFile certificate = await certificateFolder.GetFileAsync("OurMegaCoolCertificate.cer");

        IBuffer buffer = await Windows.Storage.FileIO.ReadBufferAsync(certificate);
        string encodedString = Windows.Security.Cryptography.CryptographicBuffer.EncodeToBase64String(buffer);

        await Windows.Security.Cryptography.Certificates.CertificateEnrollmentManager.InstallCertificateAsync(encodedString, InstallOptions.None);


    }

我们也尝试在清单中执行此操作:




 
  
    

  

再次,当我们使用certmgr.msc导入受信任的根证书时 - 一切正常

1 个回答
  • 我设法让这个工作:

    我在packagemanifest中添加了这个:

    </Capabilities>
    <Extensions>
    <!--Certificates Extension-->
    <Extension Category="windows.certificates">
       <Certificates>
           <Certificate StoreName="Root" Content="Assets\OurMegaCoolCertificate.cer" />
       </Certificates>
    </Extension>
    

    但我已经导出我的证书不使用DER(或类似的东西),但作为base64,它工作.但所有教程都说需要导出为DER ...

    2023-02-04 17:19 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有