簡體   English   中英

Equalivent for openssl s_client-連接 <hostname> : <port> 在C#中

[英]Equalivent for openssl s_client -connect <hostname>:<port> in C#

當我執行openssl命令以連接特定服務器[myadda.tie.fire.glass ....啞服務器名稱]時,它會提供一些輸出。

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

它給了我一些包含如下信息的輸出

  • 服務器證書
  • 發行人信息

另一個命令需要上述命令中的證書來向我提供有關證書的詳細信息。

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

它給我輸出有關證書的信息

  • 為服務器發行
  • 合法性

我想要使​​用某些C#類進行類似的輸出。 我不確定如何解決此查詢。 誰能幫我嗎?

下面的代碼可以幫助我檢索所需的信息。

            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給我其他必需的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM