2011-01-09 1 views
3

J'ai pris le certificat et la clé du fichier PEM et décodé le base64 en binaire et les ai mis en Cert et Key.Passer le certificat et la clé en tant que der_bin() dans Erlang avec ssl

Ensuite, j'ai le code suivant pour ouvrir une connexion.

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. 

appel make_connection(Cert, Key) retours {error, {eoptions, {key, <<...>>}}}.

Lorsque je remplace Cert et Key avec le chemin d'accès au fichier PEM, et Options = [{certfile, ... keyfile ...}], cela fonctionne et crée le socket SSL comme prévu.

Alors, est-ce que je manque quelque chose avec l'utilisation de cert et key seul?

Répondre

1

En regardant le fichier ssl.erl de l'application ssl, il semble que vous êtes censé utiliser un tuple comme Key, plutôt que le binaire:

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

Où est spécifié le type de la clé. Il semble qu'il y ait un bug dans the documentation for the connect function, où il est dit que vous êtes censé utiliser un binaire (der_bin()) comme clé.

Questions connexes