私はサービスとモバイルとデスクトップの間で通信する同様のプロジェクトを持っています。
EXEのAuthenticode証明書を使用して、リクエストを実行しているバイナリであることを確認します。
リクエスト側(投稿は簡略化)。私はその後、私たちはというし、不正な要求を取得するためのURLをしようとしているものを好きなように我々はむしろ404 500より提供要求
X509Certificate2 clientCertInRequest = Request.HttpContext.Connection.ClientCertificate;
if (!clientCertInRequest.Verify() || !AllowedCerialNumbers(clientCertInRequest.SerialNumber))
{
Response.StatusCode = 404;
return null;
}
を取得し、アクションに以下のコードを使用し
Module m = Assembly.GetEntryAssembly().GetModules()[0];
using (var cert = m.GetSignerCertificate())
using (var cert2 = new X509Certificate2(cert))
{
var _clientHandler = new HttpClientHandler();
_clientHandler.ClientCertificates.Add(cert2);
_clientHandler.ClientCertificateOptions = ClientCertificateOption.Manual;
var myModel = new Dictionary<string, string>
{
{ "property1","value" },
{ "property2","value" },
};
using (var content = new FormUrlEncodedContent(myModel))
using (var _client = new HttpClient(_clientHandler))
using (HttpResponseMessage response = _client.PostAsync($"{url}/{controler}/{action}", content).Result)
{
response.EnsureSuccessStatusCode();
string jsonString = response.Content.ReadAsStringAsync().Result;
var json = new Newtonsoft.Json.JsonSerializer();
var myClass = JsonConvert.DeserializeObject<MyClass>(json);
}
}
彼らは彼らが "正しい軌道にある"ことを知らせてください
wohaそれは仲間に働いてくれました。ありがとうございました。最近、私は休暇中だった。 –
私は不思議です。あなたはこれをLinuxマシンやWindows上で動作させるようにしましたか? – Steven
私はWindows(10)とLinux(Mint 17.3、18、18.1)の両方で動作しています。プライベートキーなしで証明書を使用しようとすると、「SSL接続エラー」(CURLE_SSL_CONNECT_ERROR 35)が表示されました。 – yfisaqt