2011-01-09 9 views
3

私はPEMファイルから証明書とキーを取り出し、base64をバイナリにデコードしてCertKeyに入れました。Erlangでsslを使ってcertとkeyをderlbinに渡す

次に、私は接続を開くために次のコードを持っています。

make_connection(Cert, Key) -> 
    Options = [{cert, Cert}, {key, Key}, {mode, binary}], 
    Timeout = 1000, 
    % {ok, Socket} replaced for debugging... 
    Socket = ssl:connect(?PUSH_SERVER_HOST, ?PUSH_SERVER_PORT, 
      Options, Timeout), 
    Socket. 

make_connection(Cert, Key)戻り{error, {eoptions, {key, <<...>>}}}を呼び出します。

CertKeyをPEMファイルのパスに置き換えて、Options = [{certfile, ... keyfile ...}]とすると、意図した通りに動作してSSLソケットが作成されます。

certkeyの単独での使用に何か不足していますか?あなたはむしろバイナリよりも、あなたのKeyとしてタプルを使用することになっているよう

答えて

1

sslアプリケーションからssl.erlファイルを見ると、それはそうです:キーの種類が指定されている

validate_option(key, {KeyType, Value}) when is_binary(Value), 
         KeyType == rsa; 
         KeyType == dsa -> 
    {KeyType, Value}; 

the documentation for the connect functionにバグがあり、キーとしてバイナリ(der_bin())を使用するはずだと言われています。

関連する問題