public CertificateValidationClientServer() { _serverCertificateCollection = CertificateConfiguration.GetServerCertificateCollection(); _serverCertificate = CertificateConfiguration.GetServerCertificate(); _clientCertificateCollection = CertificateConfiguration.GetClientCertificateCollection(); _clientCertificate = CertificateConfiguration.GetClientCertificate(); }
public async Task Manual_CertificateSentMatchesCertificateReceived_Success( int numberOfRequests, bool reuseClient) // validate behavior with and without connection pooling, which impacts client cert usage { var options = new LoopbackServer.Options { UseSsl = true }; using (var cert = CertificateConfiguration.GetClientCertificate()) { Func <HttpClient> createClient = () => { var handler = new HttpClientHandler() { ServerCertificateCustomValidationCallback = delegate { return(true); } }; handler.ClientCertificates.Add(cert); return(new HttpClient(handler)); }; Func <HttpClient, Socket, Uri, Task> makeAndValidateRequest = async(client, server, url) => { await TestHelper.WhenAllCompletedOrAnyFailed( client.GetStringAsync(url), LoopbackServer.AcceptSocketAsync(server, async(socket, stream, reader, writer) => { SslStream sslStream = Assert.IsType <SslStream>(stream); Assert.Equal(cert, sslStream.RemoteCertificate); await LoopbackServer.ReadWriteAcceptedAsync(socket, reader, writer); }, options)); }; await LoopbackServer.CreateServerAsync(async (server, url) => { if (reuseClient) { using (var client = createClient()) { for (int i = 0; i < numberOfRequests; i++) { await makeAndValidateRequest(client, server, url); } } } else { for (int i = 0; i < numberOfRequests; i++) { using (var client = createClient()) { await makeAndValidateRequest(client, server, url); } } } }, options); } }
public async Task Manual_SSLBackendNotSupported_ThrowsPlatformNotSupportedException() { var handler = new HttpClientHandler(); handler.ClientCertificates.Add(CertificateConfiguration.GetClientCertificate()); using (var client = new HttpClient(handler)) { await Assert.ThrowsAsync <PlatformNotSupportedException>(() => client.GetAsync(HttpTestServers.SecureRemoteEchoServer)); } }