HttpClient passer un certificat et une private key
Bonjour,
j'essaye de transformer une requête curl en c#, voici la requête fonctionnel :
Code:
curl --insecure --cert C:/Users/Eddy/.chia/mainnet/config/ssl/full_node/private_full_node.crt --key C:/Users/Eddy/.chia/mainnet/config/ssl/full_node/private_full_node.key -d '{}' -H "Content-Type: application/json" -X POST https://localhost:8555/get_blockchain_state | python -m json.tool
et voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| string certificateFile = @"C:\Users\Eddy\.chia\mainnet\config\ssl\full_node\private_full_node.crt";
string keyFile = @"C:\Users\Eddy\.chia\mainnet\config\ssl\full_node\private_full_node.key";
string cert = File.ReadAllText(certificateFile);
string key = File.ReadAllText(keyFile);
var handler = new HttpClientHandler();
//handler.ClientCertificateOptions = ClientCertificateOption.Manual;
//handler.SslProtocols = SslProtocols.Tls12;
handler.ServerCertificateCustomValidationCallback = (requestMessage, certificate, chain, policyErrors) => true;
handler.ClientCertificates.Add(new X509Certificate2(certificateFile, key));
using (var httpClient = new HttpClient(handler))
{
using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://localhost:8555/get_blockchain_state"))
{
request.Content = new StringContent("{}");
request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
var response = await httpClient.SendAsync(request);
}
} |
Je reçois cette erreur : ' Received an unexpected EOF or 0 bytes from the transport stream.'
Je ne sais pas si je transmet le certificat de la bonne façon, idéalement j'aimerai sinon attaqué cette url par un websocket (j'ai tenté d'utiliser le client websocket mais j'ai la même erreur retourné).
Voici la doc de l'api que j'essaye d'interroger https://github.com/Chia-Network/chia...RPC-Interfaces
Merci pour vos réponses.