gpt4 book ai didi

c# - 在 Windows 8 应用程序中以编程方式使用 SSL 证书

转载 作者:太空狗 更新时间:2023-10-30 01:04:55 24 4
gpt4 key购买 nike

我需要这方面的帮助:

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

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

async public static Task<string> 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);


}

我们还尝试在 list 中这样做:

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

</Certificates>
</Extension>

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

最佳答案

我已经设法让它工作了:

我在 packagemanifest 中添加了这个:

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

但是我没有使用 DER(或类似的东西)导出我的证书,而是作为 base64 并且它有效。但是所有的教程都说需要导出为DER...

关于c# - 在 Windows 8 应用程序中以编程方式使用 SSL 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21041207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com