2017-11-09 23 views
-1

리소스 파일 (Resources.resx)에 CA 인증서를 포함하고 X509Certificate 생성자 클래스에 바이트 스트림을 제공하면이를 읽습니다. CA 인증서는 .der 형식입니다. .der 파일을 프로젝트의 Resources 폴더에 추가했습니다. 다른 클래스에서 어떻게 액세스하여 X509Certificate 생성자에 전달할 수 있습니까?C# 코드에 CA 인증서 포함

나는이 링크의 하단에 주어진 C# 코드를 다음되었다 [http://www.embedded101.com/Blogs/PaoloPatierno/entryid/366/mqtt-over-ssl-tls-with-the-m2mqtt-library-and-the-mosquitto-broker]

업데이트 :이 클라이언트 측에서 내가 해냈어 한 방법입니다.

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); 

그러나 서버 측에서 난 오류 얻을 : 당신이에 인증서를 포함하는 경우

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

+0

페이지의 다른 클래스의 인증서를 사용하는 예 - 구체적으로 어떤 문제가 있습니까? – BugFinder

+0

이렇게하면 m2mqtt_ca.der 인증서에 액세스 할 수 없었습니다. ---> new X509Certificate (Resources.m2mqtt_ca)) – Spark

+0

@Oliver : 잠깐, 뭐라 구요 ?? 이 질문은 PDF 파일과 관련이 없습니다. 우연히 잘못된 속임수 표적을 골랐습니까? –

답변

0

을 assemblly 자체 (파일을 마우스 오른쪽 버튼으로 클릭하여 '포함 리소스'가 있는지 확인 Build Action = 'Embedded Resource'를 선택하면 다음과 같이 진행할 수 있습니다.

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... 
}