2013-04-15 5 views
1

많은 사람들이보고 한 클라이언트 인증서와 동일한 문제가 있습니다. 그러나 본 솔루션 중 어느 것도 저에게 효과적이지 않습니다. VB.Net (VS 2010 및 .NET Framework 4.0 사용)에서 Apache Tomcat/5.0.27에서 실행되는 웹 서비스에 연결해야하는 클라이언트가 있습니다. 클라이언트 인증서가 필요하지 않지만 클라이언트 인증서가 필요하면 "요청이 취소되었습니다 : SSL/TLS 보안 채널을 만들 수 없습니다"와 함께 실패합니다.SSL/TLS 보안 채널을 생성 할 수 없습니다. 클라이언트 인증서, TomCat 및 .Net

Internet Explorer (8 , 9 및 10, XP 및 Win7x32), SSL을 사용할 때 (system.xml 파일에서 sslProtocol = "TLS"secure = "true"scheme = "https"를 설정하여 Tomcat에 구성) 클라이언트 인증서가 비활성화됩니다 clientAuth = "false"), IE는 CA 인증서와 서버 인증서가 클라이언트 PC에 설치된 후에 만족합니다. IE는 인증서없이 불평하지만 경고를 무시하도록 지정할 수 있습니다. 인증서가 설치되면 경고없이 연결됩니다. 클라이언트 인증서가 필요하면 (clientAuth = "true") IE는 연결되지 않습니다. 클라이언트 인증서 파일을 가져온 후에도 여전히 연결되지 않습니다. IE는 클라이언트 파일이 설치되었음을 보여 주며 CA가 인증서를 확인하고 CA를 신뢰하지만 잘못된 저장소 인 것처럼 보입니다. 즉, 중간 인증 기관 및 클라이언트 인증이 목적 아래에 표시되어 있지 않습니다. MMC 인증서 스냅인은 클라이언트 인증서가 개인 - 현재 사용자 저장소에 있음을 보여줍니다.

인증서가 웹 서비스 소유자에 의해 발행되었으므로 이론적으로 작동해야합니다. 속성은 괜찮아 보이고 목적은 "모든 응용 프로그램 정책"을 보여줍니다.

내 .Net 클라이언트에서 작동하려면이 정보가 필요합니다. 웹 참조를 사용하여 웹 서비스에 대한 연결을 만듭니다. PreaAuthenticate = True로 설정하고 웹 참조에 인증서 파일을 첨부하고 IDE에 첨부 된 것을 볼 수 있습니다. 네트워크 모니터를 사용하면 서버가 두 개의 큰 패킷으로 클라이언트에 인증서를 보내지 만 클라이언트가 서버로 다시 보내지 않는 것처럼 보입니다.

나는 다양한 권장 사항을 시도했다. ServicePointManager.Expect100Continue = true 및 ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3을 설정합니다. 그러나 이는 아무런 차이가 없습니다.

나는 방화벽과 프록시 서버를 사용할 수 없으므로 아무 것도 트래픽을 차단하지 못합니다.

어떤 도움을 주셔서 감사합니다.

답변

1

좋아, 그들이 제공 한 인증서에 문제가 있거나 클라이언트와 어떻게 든 호환되지 않습니다. OpenSsl을 사용하여 인증서를 만드는 방법에 대한 지침을 찾았으며 해당 서버에서 작동합니다. 그들은 java의 keytool을 사용하여 인증서를 작성했기 때문에 호환되지 않는 인증서를 만들거나 올바른 절차를 사용하지 않았으며 OpenSSL과 함께 사용한 절차가 올바른 것입니다.

OpenSsl의 단계는 개인 키 파일 (client.key)을 만들고, 인증서 요청 (client.req)을 만들고, 키 (client.pem)에 서명 한 다음이를 내 보냅니다 (client.pfx).

관련 문제