diff --git a/src/WireMock.Net.Abstractions/Admin/Settings/SettingsModel.cs b/src/WireMock.Net.Abstractions/Admin/Settings/SettingsModel.cs
index ea5e628e..7c08512e 100644
--- a/src/WireMock.Net.Abstractions/Admin/Settings/SettingsModel.cs
+++ b/src/WireMock.Net.Abstractions/Admin/Settings/SettingsModel.cs
@@ -96,4 +96,16 @@ public class SettingsModel
/// Default value = "All".
///
public QueryParameterMultipleValueSupport? QueryParameterMultipleValueSupport { get; set; }
+
+#if NETSTANDARD1_3_OR_GREATER || NET461
+ ///
+ /// Server client certificate mode
+ ///
+ public ClientCertificateMode ClientCertificateMode { get; set; }
+
+ ///
+ /// Whether to accept any client certificate
+ ///
+ public bool AcceptAnyClientCertificate { get; set; }
+#endif
}
\ No newline at end of file
diff --git a/src/WireMock.Net.Abstractions/IRequestMessage.cs b/src/WireMock.Net.Abstractions/IRequestMessage.cs
index f747f7c5..87905071 100644
--- a/src/WireMock.Net.Abstractions/IRequestMessage.cs
+++ b/src/WireMock.Net.Abstractions/IRequestMessage.cs
@@ -1,5 +1,8 @@
using System;
using System.Collections.Generic;
+#if NETSTANDARD1_3_OR_GREATER || NET461
+using System.Security.Cryptography.X509Certificates;
+#endif
using WireMock.Types;
using WireMock.Util;
@@ -134,4 +137,11 @@ public interface IRequestMessage
/// Gets the origin
///
string Origin { get; }
+
+#if NETSTANDARD1_3_OR_GREATER || NET461
+ ///
+ /// Gets the connection's client certificate
+ ///
+ X509Certificate2? ClientCertificate { get; }
+#endif
}
\ No newline at end of file
diff --git a/src/WireMock.Net.Abstractions/Types/ClientCertificateMode.cs b/src/WireMock.Net.Abstractions/Types/ClientCertificateMode.cs
new file mode 100644
index 00000000..26e772db
--- /dev/null
+++ b/src/WireMock.Net.Abstractions/Types/ClientCertificateMode.cs
@@ -0,0 +1,31 @@
+namespace WireMock.Types;
+
+#if NETSTANDARD1_3_OR_GREATER || NET461
+///
+/// Describes the client certificate requirements for a HTTPS connection.
+/// This enum is the same as https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.server.kestrel.https.clientcertificatemode
+///
+public enum ClientCertificateMode
+{
+ ///
+ /// A client certificate is not required and will not be requested from clients.
+ ///
+ NoCertificate,
+
+ ///
+ /// A client certificate will be requested; however, authentication will not fail if a certificate is not provided by the client.
+ ///
+ AllowCertificate,
+
+ ///
+ /// A client certificate will be requested, and the client must provide a valid certificate for authentication to succeed.
+ ///
+ RequireCertificate,
+
+ ///
+ /// A client certificate is not required and will not be requested from clients at the start of the connection.
+ /// It may be requested by the application later.
+ ///
+ DelayCertificate,
+}
+#endif
\ No newline at end of file
diff --git a/src/WireMock.Net.Abstractions/WireMock.Net.Abstractions.csproj b/src/WireMock.Net.Abstractions/WireMock.Net.Abstractions.csproj
index 38515aff..59af0817 100644
--- a/src/WireMock.Net.Abstractions/WireMock.Net.Abstractions.csproj
+++ b/src/WireMock.Net.Abstractions/WireMock.Net.Abstractions.csproj
@@ -4,7 +4,7 @@
Commonly used models, enumerations and types.
WireMock.Net.Abstractions
Stef Heyenrath
- net45;net451;netstandard1.0;netstandard2.0;netstandard2.1
+ net45;net451;net461;netstandard1.0;netstandard1.3;netstandard2.0;netstandard2.1
true
$(NoWarn);1591;8603
WireMock.Net.Abstractions
@@ -41,6 +41,16 @@
+
+
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+