質問

これについての助けが必要です:

私たちのバックエンドは自己署名証明書によって確保されています。電話をかける:OurMegAcoolCertificate.cher

だから、 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);


    }
.

また、マニフェストでこれをやろうとしました:

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

  </Certificates>
</Extension>
.

および再び、certmgr.mscを使用して信頼されたルート証明書を使用してインポートするとき - すべてのWorks

役に立ちましたか?

解決

この作業を手に入れたことがあります:

PackageManifest:

でこれを追加しました
</Capabilities>
<Extensions>
<!--Certificates Extension-->
<Extension Category="windows.certificates">
   <Certificates>
       <Certificate StoreName="Root" Content="Assets\OurMegaCoolCertificate.cer" />
   </Certificates>
</Extension>
.

しかし、私はDER(またはそのようなもの)を使用していないのではなく、Base64として働いていた。しかし、すべてのチュートリアルはderのようにエクスポートする必要があると言っています...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top