Сбой рукопожатия TLS v1.2 после изменения клиентом спецификации шифра и сообщения Encrypted Handshake

У меня есть пример сервера и клиента PSK с использованием Open SSL, которые очень хорошо работают друг с другом. Однако, что мне нужно сделать, это заставить моего клиента с помощью PolarSSL/mBedTLS общаться с сервером. Я испытываю сбой рукопожатия, когда клиент отправляет ChangeCipherSpec и EncryptedHandshakeMessage. Есть идеи, что может быть не так?

Я использовал https://bitbucket.org/tiebingzhang/tls-psk-server-client-example/overview качестве ссылки.

Пример кода mBedTLS/PolarSSL приведен ниже:

        static const unsigned char *psk_identity = "Client_identity";
        static const unsigned char *psk_key = "1A1A1A1A1A1A1A1A";

        ssl_set_endpoint(&context,SSL_IS_CLIENT);
        ssl_set_authmode(&context, SSL_VERIFY_NONE );
        ssl_set_rng(&context, random_vector_generate, NULL);
        ssl_set_ciphersuites(&context, default_ciphers);
        ssl_set_bio(&context, transport_read,
                   NULL,
                   transport_write,
                   NULL);
        ssl_set_psk(&context, psk_key, strlen((char *)psk_key), psk_identity, strlen((char *)psk_identity));
        ssl_handshake(&context);

@ Примечание. Единственное изменение в коде сервера состоит в том, что я изменил размер предварительного ключа с 16 на 16.

Также конфигурация, используемая для PolarSSL, приведена ниже:

#define POLARSSL_AES_C
#define POLARSSL_CIPHER_C
#define POLARSSL_CTR_DRBG_C
#define POLARSSL_MD_C
#define POLARSSL_MD5_C
#define POLARSSL_SHA1_C
#define POLARSSL_SSL_CLI_C
#define POLARSSL_SSL_TLS_C
#define POLARSSL_PLATFORM_C
#define POLARSSL_PLATFORM_MEMORY
#define POLARSSL_CIPHER_MODE_CBC
#define POLARSSL_DEBUG_C
#define POLARSSL_BIGNUM_C

#define POLARSSL_AES_ROM_TABLES

#define POLARSSL_PSK_MAX_LEN    32 

0 ответов

Другие вопросы по тегам