使用ssl在Erlang中以deru bin()的形式传递证书和密钥
我从PEM文件中取出证书和密钥,将base64解码为二进制,并将它们放入使用ssl在Erlang中以deru bin()的形式传递证书和密钥,ssl,erlang,Ssl,Erlang,我从PEM文件中取出证书和密钥,将base64解码为二进制,并将它们放入Cert和key 然后我有以下代码来打开连接 make_connection(Cert, Key) -> Options = [{cert, Cert}, {key, Key}, {mode, binary}], Timeout = 1000, % {ok, Socket} replaced for debugging... Socket = ssl:connect(?PUSH_SERV
Cert
和key
然后我有以下代码来打开连接
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,}}}
当我将Cert
和Key
替换为PEM文件的路径,以及Options=[{certfile,…keyfile…}]
时,它会按照预期工作并创建SSL套接字
因此,仅使用cert
和key
我是否遗漏了任何内容?查看ssl
应用程序中的文件,似乎您应该使用元组作为密钥,而不是二进制:
validate_option(key, {KeyType, Value}) when is_binary(Value),
KeyType == rsa;
KeyType == dsa ->
{KeyType, Value};
其中指定了密钥的类型。里面似乎有一个bug,它说应该使用二进制文件(deru bin())作为密钥