मुझे लगता है कि प्रश्न के दो भाग हैं:
- कैसे आप सर्वर का सुरक्षा प्रमाणपत्र
- पुनः प्राप्त करते हैं आप कैसे पुनः प्राप्त करते प्रमाण पत्र की श्रृंखला
सर्वर का सुरक्षा प्रमाणपत्र आप का उपयोग करने के लिए rertrieve एसएसएलस्ट्रीम जिसका विधियां .NET के अपने SslStream
var serverName = "...;
var client = new TcpClient(serverName, 443);
// Create an SSL stream that will close the client's stream.
using (var sslStream = new SslStream(client.GetStream(),true))
{
sslStream.AuthenticateAsClient(serverName);
var serverCertificate = sslStream.RemoteCertificate;
}
के समान हैं
ऐसा लगता है कि OpenSSL.Net प्रमाणपत्र की श्रृंखला पुनर्प्राप्त नहीं कर सकता है। TheShowcerts पैरामीटर SSL_get_peer_cert_chain फ़ंक्शन का उपयोग करता है जो OpenSSL.NET में लागू नहीं किया गया है।
यदि आप OpenSSL.Net और अंतर्निहित .NET कक्षाओं को मिश्रित करने में कोई फर्क नहीं पड़ता है, तो आप एक OpenSSL.Net प्रमाणपत्र को .NET प्रमाणपत्र में परिवर्तित कर सकते हैं और .NET के X509Chain.Build का उपयोग कर श्रृंखला पुनर्प्राप्त कर सकते हैं। आप .NET प्रमाणपत्रों को .NET प्रमाणपत्र की RawData संपत्ति का उपयोग करके OpenSSL.NET प्रमाणपत्रों में वापस परिवर्तित कर सकते हैं।
var managedCert = new System.Security.Cryptography.X509Certificates.X509Certificate2(serverCertificate.DER);
var chain = new System.Security.Cryptography.X509Certificates.X509Chain();
chain.Build(managedCert);
foreach (var element in chain.ChainElements)
{
var raw = element.Certificate.RawData;
using (var bio = new BIO(raw))
{
var oc = OpenSSL.X509.X509Certificate.FromDER(bio);
}
}
शायद आप क्या आप बिल्कुल OpenSSL.Net का उपयोग किए बिना कच्चे प्रमाणपत्र डेटा का उपयोग कर करना चाहते हैं नेट के SslStream और X509Certificate2 वस्तु का उपयोग कर सकते हैं।
स्रोत
2012-06-06 08:58:28
यह बहुत ही आशाजनक लगता है - धन्यवाद! – KenD
[एसएसएल कनेक्शन के लिए एक विशेष सीए का उपयोग करें] (http://stackoverflow.com/questions/22516450/use-a-particular-ca-for-a-ssl-connection/23180787#23180787) इससे बचेंगे सत्यापन के लिए विंडोज सर्टिफिकेट स्टोर से सीए चिड़ियाघर। हालांकि, श्रृंखला को सत्यापित करने के लिए आपको एक विश्वसनीय सीए प्रदान करना होगा। यदि आप प्रमाण पत्र जारी करने वाले सीए को जानते हैं, तो सैकड़ों के बजाय केवल एक सीए का उपयोग करना सबसे अच्छा है उपलब्ध। – jww
@jww आपका प्रस्ताव एक सुरक्षा जोखिम है जिसे पहले से ही कई बार शोषित किया गया है - हाल ही में हार्टबलेड शोषण के परिणामस्वरूप। सीए प्रमाण पत्र * को पिछले समय समझौता किया गया था और रद्द कर दिया गया था। एक स्थानीय भंडारण का उपयोग सीए के रूप में आपके पास कोई रास्ता नहीं है ओ प्रमाणपत्र प्रमाणित करने या यह जानकर कि इसे निरस्त कर दिया गया है। कोई "सीए चिड़ियाघर" नहीं है, यह प्रमाण पत्र काम करने का तरीका है। –