Как я могу убедиться, что удаленный сертификат (открытый ключ) выдан/подписан моим корневым ЦС?

На стороне сервера у меня есть самозаверяющий ЦС (сертификат и закрытый ключ). Я использую их для выдачи сертификата своего устройства и хочу убедиться, что если удаленный сертификат не подписан ЦС, будет исключение.

Я имею в виду ссылки ниже, но мне кажется, что они не работают, пожалуйста, помогите:

C# Как я могу проверить Цепочка сертификатов Root-CA-Cert (x509)?

Проверьте X509Certificate удаленного сервера с помощью файла сертификата CA


person fanyangxi    schedule 06.06.2012    source источник


Ответы (2)


Когда вы получаете сертификат устройства, вы проверяете его подпись с помощью сертификата ЦС. Это все, что вам нужно (однако вы должны помнить, что когда срок действия сертификата ЦС истекает и вы перевыпускаете его, вам придется либо заменить сертификаты устройства, либо проверить сертификат устройства в нескольких ЦС, чтобы убедиться, что вы разрешаете сертификат устройства, подписанный предыдущим ЦС). сертификат.

person Eugene Mayevski 'Callback    schedule 06.06.2012
comment
Да, я пытаюсь проверить подпись сертификата устройства, используя сертификаты ЦС. Я использую C#, выполняя проверку в функции SslSteam RemoteCertificateValidationCallback. Я могу получить сертификат устройства и сертификаты CA, и мне нужен код, чтобы убедиться, что сертификат устройства подписан сертификатом CA. - person fanyangxi; 07.06.2012
comment
Это одна из ссылок, которые я имел в виду. но я проверю это еще раз, должно быть что-то я пропустил. - person fanyangxi; 07.06.2012

Я перехожу по ссылке ниже, используя для этого BouncyCastle, все работает нормально.

C# Как я могу проверить Цепочка сертификатов Root-CA-Cert (x509)?

Org.BouncyCastle.X509.X509Certificate caCert =
new X509CertificateParser().ReadCertificate(CaCertBytes[]); Org.BouncyCastle.X509.X509Certificate remoteCert =
new X509CertificateParser().ReadCertificate(remoteCertBytes[]);
try
{
remoteCert.Verify(caCert.GetPublicKey());
результат = true;
}
catch (Exception ex)
{
result = false;
}

Если remoteCert не подписан caCert, будет исключение.

person fanyangxi    schedule 08.06.2012