Windows 인증 기관 (AD CS)을 사용하여 RabbitMQ Windows 서비스와 클라이언트 간의 보안 연결에서 참가자의 인증서를 발급합니다.이 erlang 코드가 예외를 throw하고 이유를 모르겠습니다.
내 클라이언트 인증서의 주제는 내 고유 이름 (DN) LDAP에 있습니다 은 "CN = 존 루이즈는, CN 사용자, DC는 = devexample을 = DC = COM"
나는이 연결을 설정하려고 시도 서버에서 예외가 발생하고 연결을 닫 나는 토끼 로그에서이 얼랑 스택 추적을 참조하십시오 스택 추적의 마지막 두 줄을 통해 찾고
=ERROR REPORT==== 30-Dec-2011::10:33:24 ===
exception on TCP connection <0.331.0> from 10.1.30.70:52269
{channel0_error,starting,
{error,{case_clause,[{printableString,"Users"},
{printableString,"John Ruiz"}]},
'connection.start_ok',
[{rabbit_ssl,find_by_type,2,[]},
{rabbit_auth_mechanism_ssl,init,1,[]},
{rabbit_reader,handle_method0,2,[]},
{rabbit_reader,handle_method0,3,[]},
{rabbit_reader,handle_input,3,[]},
{rabbit_reader,recvloop,2,[]},
{rabbit_reader,start_connection,7,[]},
{proc_lib,init_p_do_apply,3,
[{file,"proc_lib.erl"},{line,227}]}]}}
을, 나는 두 개의 파일이 포함 된 발견
문제내가 읽어도 전에 얼랑를 작성하지도했습니다 없다는 것입니다, 그래서 find_by_type 예외를 던지는 이유를 알 수 없습니다. 필자의 가장 좋은 추측은 상대 DN (RDN) 목록에 두 개의 CN = * 요소가 있기 때문에 목록 호출의 결과입니다. flatten은 배열이고 예상 결과는 스칼라입니다.
에를랭에 익숙한 사람이라면 제 가정을 확인하거나 수정할 수 있습니까? 예외를 던지는 대신 방금 설명한 경우이 코드를 개선하기 위해이 코드를 개선 할 수있는 방법을 본다면 RabbitMQ 메일 링리스트에서 제안 할 수 있도록 정말 감사하겠습니다.
2 개의 CN을 갖는 것이 의미가 없다는 것에 동의하지만, 그것이 Windows에서 작동하는 방식입니다. 도메인 사용자는 CN = Users, DC = domain, DC = tld에서 만들어 지므로 사용자는 두 개의 CN 요소가 포함 된 DN을 갖게됩니다. –
흠, 이상합니다. 첫 번째 CN을 무시하려는 경우 find_by_type의 [CN] 대신 [_, CN]을 사례에 추가 할 수 있습니다. 그러나 생산에 필요한 것보다 더 많은 임시 수정이 필요합니다. – Lukas
나는 그것을 무시하려고하지 않을 것입니다. openssl 기반 certs에는 하나의 CN 요소 만 있습니다. 임시 수정으로 배열에 둘 이상의 요소가 있는지 먼저 확인한 후 첫 번째 요소를 사용하는 것이 좋습니다. 그 코드는 어떻게 생겼을까요? –