Windows認証局(AD CS)を使用して、RabbitMQWindowsサービスとクライアント間の安全な接続の参加者に証明書を発行しています。
クライアント証明書の件名は、LDAPの識別名(DN)です: "CN = John Ruiz、CN = Users、DC = devexample、DC = com"
この接続を確立しようとすると、サーバーは例外をスローして接続を閉じ、ウサギのログに次のerlangスタックトレースが表示されます。
=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}]}]}}
スタックトレースの最後の2行を見ると、次の2つのファイルが関係していることがわかりました。
問題は、私が以前にerlangを読んだり書いたりしたことがないので、find_by_typeが例外をスローしている理由がわかりません。私の推測では、相対DN(RDN)のリストには2つのCN = *要素があるため、lists:flattenの呼び出しの結果は配列ですが、期待される結果はスカラーです。
erlangに精通している人が私の仮定を確認または修正できますか?(例外をスローするのではなく)今説明したケースを処理するためにこのコードを改善できる方法を見つけたら、RabbitMQメーリングリストで提案できるように本当に感謝しています。