linux - SSL/TLS 原始字节转储

标签 linux ssl openssl

有谁知道我如何轻松获取原始字节并输出关联的 OpenSSL SSL/TLS 协议(protocol)信息?例如,如果我只是将字节与 .bin 文件中的服务器问候消息相关联,是否有 Linux 命令或工具可用于获取字节并以某种方式显示它,以便每个字段都是结构化的,类似于您在 wireshark 中看到的内容。下图仅显示了我希望如何使用 Linux 工具从包含相关信息的 bin 文件中输出您将在 Wireshark 中看到的类似信息。唯一已知的信息是bin文件包含TLS协议(protocol)相关消息信息。

TLS image

最佳答案

有一些注意事项,一个简单的 C 程序就可以做到这一点。注意事项:

  • 您需要有一个自定义编译版本的 OpenSSL 1.1.0。构建 OpenSSL 时,您需要使用“enable-ssl-trace”选项运行“config”
  • 您将无法以这种方式处理任何加密记录,因为您无权访问 key

话虽如此,这个程序应该做你想做的事。该程序假定您拥有的字节由单个记录组成。如果您有多个记录,则必须将其拆分。

#include <stdio.h>
#include <openssl/ssl.h>
#include <openssl/bio.h>

int main(void)
{
    /* Insert your raw data here. Assumes that you have a single record */
    unsigned char data[] = {
        0x16, 0x03, 0x02, 0x00, 0x04, 0x0e, 0x00, 0x00, 0x00
    };
    BIO *bio_out = BIO_new_fp(stdout, BIO_NOCLOSE | BIO_FP_TEXT);
    SSL_CTX *ctx;
    SSL *ssl;
    int ret = 1;

    if (bio_out == NULL)
        return 1;

    ctx = SSL_CTX_new(TLS_method());
    if (ctx == NULL)
        goto err;
    ssl = SSL_new(ctx);
    if (ssl == NULL)
        goto err;

    SSL_trace(0, 0, SSL3_RT_HEADER, data, SSL3_RT_HEADER_LENGTH, ssl,
             (void *)bio_out);
    SSL_trace(0, TLS1_2_VERSION, SSL3_RT_HANDSHAKE,
              data + SSL3_RT_HEADER_LENGTH,
              sizeof(data) - SSL3_RT_HEADER_LENGTH, ssl,
              (void *)bio_out);

    ret = 0;

 err:
    BIO_free(bio_out);
    SSL_free(ssl);
    SSL_CTX_free(ctx);

    return ret;
}

关于linux - SSL/TLS 原始字节转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43878186/

相关文章:

c# - 错误返回 "No job functions found. Try making your job classes and methods public"后,尝试在 Linux 中构建 Azure 函数应用程序

html - 用静态 HTML 网站替换 Tomcat 服务器上的网站

linux - Varnishncsa 截断引用

linux - APT 无法识别选项 --install-recommends

c++ - boost asio ssl async_write 向我发送 moSTLy 乱码

javascript - BxSlider 无法在 IE 中通过 https 工作(混合内容警告)

.net - .NET 框架中的传输层安全性

docker - 将 ca 证书添加到以指定用户运行的 Tomcat Docker 容器

Ruby OpenSSL AES 生成随 secret 钥

ssl - openssl s_client 未在握手中提供指定的协议(protocol)版本