Передача сертификата и ключа как der_bin () в Erlang с помощью ssl - PullRequest
4 голосов
/ 09 января 2011

Я взял сертификат и ключ из файла 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_SERVER_HOST, ?PUSH_SERVER_PORT,
            Options, Timeout),
    Socket.

Вызов make_connection(Cert, Key) возвращает {error, {eoptions, {key, <<...>>}}}.

Когда я заменяю Cert и Key на путь к файлу PEM и Options = [{certfile, ... keyfile ...}], он работает исоздает сокет SSL по назначению.

Итак, я что-то упустил, используя только cert и key?

1 Ответ

1 голос
/ 09 января 2011

Глядя на файл ssl.erl из приложения ssl, кажется, что вы должны использовать кортеж в качестве Key вместо двоичного:

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

Где указан тип ключа.Кажется, есть ошибка в документации для функции соединения , где говорится, что вы должны использовать двоичный файл (der_bin ()) в качестве вашего ключа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...