2017-11-09 6 views
-1

Ich möchte ein CA-Zertifikat in eine Ressourcendatei (Resources.resx) aufnehmen und nach dem Lesen als Byte-Stream der X509Certificate-Konstruktorklasse bereitstellen. CA-Zertifikat ist im .der-Format. Ich habe die Datei .der dem Ordner Resources des Projekts hinzugefügt. Wie kann ich darauf in einer anderen Klasse zugreifen und sie an X509Certificate-Konstruktor übergeben?CA-Zertifikat in C# -Code einschließen

Ich war nach dem C# Code unten in diesem Link gegeben [http://www.embedded101.com/Blogs/PaoloPatierno/entryid/366/mqtt-over-ssl-tls-with-the-m2mqtt-library-and-the-mosquitto-broker]

Update: Das ist die Art, wie ich es auf Client-Seite musste.

client = new MqttClient(ddlServerIP.Text, MqttSettings.MQTT_BROKER_DEFAULT_SSL_PORT, true, new X509Certificate(Properties.Resources.ca) 
      , new X509Certificate(Properties.Resources.client2), MqttSslProtocols.TLSv1_2); 
     String clientId= Guid.NewGuid().ToString(); 
     byte code = client.Connect(clientId); 

Doch der auf der Server-Seite bekomme ich einen Fehler:

OpenSSL Error: error:140890C7:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:peer did not return a certificate

+0

Theres ein Beispiel für das cERT von einer anderen Klasse auf der Seite mit - welche Probleme haben Sie speziell – BugFinder

+0

Ich konnte auf diese Weise nicht auf das Zertifikat m2mqtt_ca.der zugreifen ---> neues X509Certificate (Resources.m2mqtt_ca)) – Spark

+0

@Oliver: Warte, was ?? Diese Frage hat nichts mit PDF-Dateien zu tun. Hast du versehentlich das falsche Ziel ausgewählt? –

Antwort

0

Wenn Sie Ihr Zertifikat in die assemblly selbst (stellen Sie sicher einzubetten, dass die Datei ein ‚Eingebettete Ressource‘ durch einen Rechtsklick es und baut Aktion auswählen = ‚Eingebettete Ressource‘ unter seinen Eigenschaften), dann können Sie wie folgt vorgehen:

using (Stream cs = Assembly.GetExecutingAssembly().GetManifestResourceStream("MyProj.MyCert.cer")) 
{ 
    Byte[] raw = new Bbyte[cs.Length]; 

    for (Int32 i = 0; i < cs.Length; ++i) 
     raw[i] = (Byte)cs.ReadByte(); 

    X509Certificate2 cert = new X509Certificate2(); 
    cert.Import(raw); 

    // Do whatever you need... 
} 
Verwandte Themen