Вы можете проверить, что сертификат правильно подписан с помощью openssl, но это зависит от формата сертификата. Если я «предполагаю», что сертификат имеет формат PEM .
например,
openssl x509 -in cert.pem -noout -text
сбросит информацию, хранящуюся в сертификате. Если что-либо неверно, оно «изменится».
Вы можете проверить, не истек ли срок действия сертификата:
openssl x509 -enddate -checkend 0 -noout -in cert.pem
Будет отображаться дата окончания (в формате utc) и, если срок действия сертификата истек.
Вы также можете проверить правильность "цепочки" сертификатов с помощью команды verify openssl.
например,
openssl verify cert.pem
хотя вам может потребоваться включить промежуточные сертификаты и Calist, если требуется.
например Это пример проверки цепочки сертификатов, подписанных GoDady:
openssl verify -CAfile .\gdroot-g2.crt -untrusted .\gdig2.crt.pem -show_chain .\server.pem
.\server.pem: OK
Chain:
depth=0: OU = Domain Control Validated, CN = *.XXXX.XXX (untrusted)
depth=1: C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", OU = http://certs.godaddy.com/repository/, CN = Go Daddy Secure Certificate Authority - G2 (untrusted)
depth=2: C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", CN = Go Daddy Root Certificate Authority - G2
Большая часть этого делается для вас, когда вы устанавливаете соединение SslStream .
Что касается попыток сделать все это с помощью кода (например, C #), вам нужно быть более конкретным в отношении того, что вы хотите сделать. Если вы просто хотите узнать, может ли C # «загрузить» сертификат, вы можете использовать метод X509Certificate2Collection Import для импорта цепочки сертификатов в формате PFX.
После импорта вы можете извлечь любые атрибуты, которые хотите посмотреть.
Вы можете проверить цепочку, используя X509Certificate2 Verify mathod.