Эквивалентно для openssl s_client -connect <hostname>: <port>в C # - PullRequest
0 голосов
/ 28 ноября 2018

Когда я выполняю команду openssl для подключения к определенному серверу [myadda.tie.fire.glass .... фиктивное имя сервера], он дает мне некоторые выходные данные.

openssl s_client -connect myadda.tie.fire.glass:443

Это дает мне некоторый вывод, который содержит такую ​​информацию, как

  • сертификат сервера
  • информация об эмитенте

И еще одна команда, которая требовала команду сертификата сверху дляпредоставьте мне подробную информацию о сертификате.

openssl x509 -in <Certificate_FileName.crt> -text -nout

Это дает мне вывод в виде информации о сертификате

  • , выданном для сервера
  • Validity

Я хочу подобный вид вывода, используя некоторые классы C #.Я не уверен, как решить этот запрос.Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 07 декабря 2018

Код ниже значительно помогает мне получить необходимую информацию.

            X509Certificate2 cert = null;
            var client = new TcpClient(host, 443);
            var certValidation = new RemoteCertificateValidationCallback(delegate (object snd, X509Certificate certificate, X509Chain chainLocal, SslPolicyErrors sslPolicyErrors)
            {
                //Accept every certificate, even if it's invalid
                return true;
            });

            // Create an SSL stream and takeover client's stream
            using (var sslStream = new SslStream(client.GetStream(), true, certValidation))
            {
                sslStream.AuthenticateAsClient(host);

                var serverCertificate = sslStream.RemoteCertificate;
                cert = new X509Certificate2(serverCertificate);

                //Convert Raw Data to Base64String
                var certBytes = cert.Export(X509ContentType.Cert);

                var certAsString = Convert.ToBase64String(certBytes, Base64FormattingOptions.None);

            }

Здесь vertAsString дает мне сертификат, тогда как cert дает мне другую необходимую информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...