2016-07-23 2 views
2

우리는 잠시 동안 문제를 해결하려고 노력해 왔습니다..net 클라이언트에서 여러 (루트 CA 포함) 인증서를 보내는 방법

우리는 클라이언트 인증서가있는 웹 서비스를 사용합니다.

서비스 소유자가 .p12 파일을 보내면 클라이언트 인증서와 CA 및 개인 키가 포함됩니다.

인증서 자체에서 인증서 경로를 볼 수 있습니다.

SOAP UI를 통해 웹 서비스를 호출하려고하면 문제가 발생합니다. SOAPUI에서는 .p12 파일을 키 스토어로 선택하고 비밀번호를 설정했습니다. 그것은 작동합니다. 우리는 우리의 .NET 클라이언트 애플리케이션을 통해 웹 서비스를 호출 할 때

enter image description here

, 그것은 작동하지 않습니다. 우리 Wireshark는 함께 패키지를 모니터링 할 때 우리가 웹 서비스를

 channelFactory = new ChannelFactory<AcquisitionAutorisationService>(binding, serviceAddress); 
     channelFactory.Credentials.ClientCertificate.Certificate = new X509Certificate2(); 
     channelFactory.Credentials.ClientCertificate.Certificate.Import(@"C:\cert\abc.p12", "password", X509KeyStorageFlags.DefaultKeySet); 

를 호출하는 방법을

--This 우리는 SOAPUI는 두 개의 인증서 요청에 클라이언트 인증서 및 인증 기관 모두를 보내는 것을보고있다.

enter image description here

그러나 닷넷 클라이언트는 캘리포니아 만 클라이언트 인증서를하지 전송 그래서 서버의 방화벽은 우리의 전화를 허용하지 않습니다.

enter image description here

그래서 제 질문은 우리가 닷넷, SOAP UI와 같은 우리의 요청을 CA 루트를 보낼 관리 와서 어떻게?

누구든지 문제에 대한 아이디어를 제공 할 수 있다면 감사하겠습니다.

+0

아직 답변이 없습니까? 해결책을 찾았습니까? 비슷한 문제가 있습니다. –

답변

0

첫 번째 클라이언트 (SOAP UI)가 CA 인증서를 보내는 경우 다른 CA에서 자체 서명 한 중간 CA 인증서 여야합니다. 클라이언트는 루트 CA 인증서를 보낼 이유가 없습니다.

서버에 중간 CA 인증서를 설치하는 것만 큼 간단하므로 두 번째 클라이언트가 서버로 보낼 필요가 없습니다.

또한 클라이언트 인증서 체인을 만들 때 사용할 수 있도록 로컬 컴퓨터 (또는 사용자)의 Windows 인증서 저장소에 중간 CA 인증서를 설치하는 것처럼 간단 할 수도 있습니다.

그렇지 않으면 .NET에서 중간에 중간 인증서를 클라이언트 인증서 체인에 보내도록하는 방법을 찾고 있습니다.

+0

답변 해 주셔서 감사합니다. 중간 CA 인증서는 실제로 클라이언트 윈도우 인증서 저장소에 설치됩니다. 하지만 SOAPUI와 .net 클라이언트의 차이점은 무엇입니까? 두 응용 프로그램이 모두 동일한 .p12 파일을 사용하기 때문입니다. (죄송합니다. 저는이 인증 문제에 대한 전문가가 아니므로, 문제를 잘못 표현하고있을 수도 있습니다.) –

+0

두 특정 클라이언트의 차이는 모르겠지만, 예를 들어 openssl 기반 클라이언트를 작성하는 경우 어떤 API 호출을하면 openssl은 중간 인증서를 체인에 추가하거나 추가하지 않습니다.그것은 모두 API에 달려 있으며, 그 API에 대한 호출은 무엇입니까. –