Я хочу проверить сертификат клиента на стороне сервера, который написан на. net core 3.1.
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseContentRoot(Directory.GetCurrentDirectory());
webBuilder.UseIISIntegration();
webBuilder.ConfigureKestrel((context,options) =>
{
var authority = new X509Certificate2("ca-crt.pem", "XXXXXX");
options.ConfigureHttpsDefaults(httpsOptions =>
{
httpsOptions.ServerCertificate = authority;
httpsOptions.ClientCertificateMode = ClientCertificateMode.RequireCertificate;
httpsOptions.SslProtocols = System.Security.Authentication.SslProtocols.Tls12;
httpsOptions.ClientCertificateValidation = (certificate2, chain, policyErrors) =>
{
chain.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck;
chain.ChainPolicy.VerificationFlags = X509VerificationFlags.AllowUnknownCertificateAuthority;
chain.ChainPolicy.ExtraStore.Add(authority);
var valid = chain.Build(certificate2);
if (!valid)
return false;
valid = chain.ChainElements
.Cast<X509ChainElement>()
.Any(x => x.Certificate.Thumbprint == authority.Thumbprint);
return valid;
};
});
});
webBuilder.UseStartup<Startup>();
});
, а мой клиент написан с библиотекой node
.
const optionSecureContext = {
key: fs.readFileSync('client1-key.pem'),
cert: fs.readFileSync('client1-crt.pem'),
ca: fs.readFileSync('ca-crt.pem'),
minVersion: "TLSv1.2",
maxVersion: "TLSv1.2"
}
const secureContext = tls.createSecureContext(optionSecureContext);
const options = {
host: "::1",
port: "44355",
secureContext: secureContext,
rejectUnauthorized: false
};
const socket = tls.connect(options, () => {
console.log('client connected',
socket.authorized ? 'authorized' : 'unauthorized');
process.stdin.pipe(socket);
process.stdin.resume();
});
socket.setEncoding('utf8');
socket.on('data', (data) => {
console.log(data);
});
socket.on('end', () => {
console.log('server ends connection');
с этим кодом, я получаю эту ошибку
![enter image description here](https://i.stack.imgur.com/joR72.png)
и Wireshark отображает мне это:
![enter image description here](https://i.stack.imgur.com/MAOIa.png)
Может ли кто-нибудь направить меня на правильный путь?