• openssl websockets


    1. HTTPS通信的C++实现 - 知乎

    GitHub - Bwar/Nebula: Nebula is a powerful framwork for building highly concurrent, distributed, and resilient message-driven applications for C++.

    SSL_do_handshake()SSL_connect()SSL_accept()SSL_write()时的情况, SSL_read() 或 SSL_shutdown() 返回 0,调用 SSL_get_error() 后返回 SSL_ERROR_SYSCALL 和一个实际的 errno 为 0 表示对端已关闭 TCP 连接,例如通过在没有正确关闭 SSL 的情况下调用 close()。 这是一种完全正常和常见的情况,但就 TLS/SSL 而言,这不是正常的断开连接。因此,违反 SSL 协议(protocol)的是 EOF。

    1. 1初始化 OpenSSL 库:调用 SSL_library_init() 和 SSL_load_error_strings() 来初始化 SSL 库和错误信息。
    2. 2创建 SSL 上下文:使用 SSL_CTX_new() 函数创建 SSL 上下文对象,该对象将保存 SSL 相关的配置信息,如加密算法、证书等。
    3. 3加载证书和私钥:使用 SSL_CTX_use_certificate_file() 和 SSL_CTX_use_PrivateKey_file() 函数加载服务器的证书和私钥。证书用于验证服务器身份,私钥用于进行加密和解密操作。
    4. 4创建监听套接字:创建一个监听套接字,并绑定到服务器的 IP 地址和端口上。
    5. 5等待客户端连接:使用 accept() 函数等待客户端的连接请求,并返回一个新的套接字用于与客户端通信。
    6. 6创建 SSL 对象:使用 SSL_new() 函数创建一个 SSL 对象,并将其与刚刚建立的套接字关联起来。
    7. 7设置 SSL 握手:使用 SSL_set_accept_state() 将 SSL 对象设置为接受状态,表示准备进行 SSL 握手过程。
    8. 8执行 SSL 握手:通过 SSL_accept() 函数执行 SSL 握手过程,该过程涉及到协商加密算法、验证证书等步骤。
    9. 9处理加密通信:一旦握手成功,可以使用 SSL_read() 和 SSL_write() 函数进行加密的读写操作,实现安全的数据传输。
    10. 10关闭 SSL 连接:使用 SSL_shutdown() 函数关闭 SSL 连接,确保安全地关闭连接。
    11. 11清理资源:释放 SSL 对象和 SSL 上下文,并关闭套接字。
    1. 1.初始化 MbedTLS 库:调用 mbedtls_ssl_init() 来初始化 MbedTLS 库,并设置随机数生成器。
    2. 2.创建 SSL 上下文:使用 mbedtls_ssl_config_init() 和 mbedtls_ssl_config_defaults() 函数来创建和配置 SSL 上下文对象,包括选择加密算法、证书验证方式等。
    3. 3.加载证书和私钥:使用 mbedtls_x509_crt_parse_file() 和 mbedtls_pk_parse_keyfile() 函数加载服务器的证书和私钥。
    4. 4.创建监听套接字:创建一个监听套接字,并绑定到服务器的 IP 地址和端口上。
    5. 5.等待客户端连接:使用 accept() 函数等待客户端的连接请求,并返回一个新的套接字用于与客户端通信。
    6. 6.创建 SSL 对象:使用 mbedtls_ssl_init() 函数创建一个 SSL 对象,并将其与刚刚建立的套接字关联起来。
    7. 7.设置 SSL 握手:使用 mbedtls_ssl_setup() 将 SSL 对象与 SSL 上下文关联起来,并设置握手状态为服务器模式。
    8. 8.执行 SSL 握手:通过 mbedtls_ssl_handshake() 函数执行 SSL 握手过程,该过程涉及到协商加密算法、验证证书等步骤。
    9. 9.处理加密通信:一旦握手成功,可以使用 mbedtls_ssl_read() 和 mbedtls_ssl_write() 函数进行加密的读写操作,实现安全的数据传输。
    10. 10关闭 SSL 连接:使用 mbedtls_ssl_close_notify() 函数关闭 SSL 连接,确保安全地关闭连接。
    11. 11 清理资源:释放 SSL 对象和 SSL 上下文,并关闭套接字。

  • 相关阅读:
    Cheat Engine.exe修改植物大战僵尸阳光与冷却
    Ajax实现搜索联想 自动补全
    【QT开发(10)】QT 进程
    PCIe链路训练过程详解
    NR 物理层编码 - slide 3 循环码Cyclic Code
    1Panel 升级 Halo报错
    GCC Rust获批将被纳入主线代码库,或将于GCC 13中与大家见面
    【Bug处理】E0265 函数 “SizeClass::RoundUp“ (已声明 所在行数:62)不可访问
    C++之std::lock_guard和std::unique_lock
    【Linux】:Linux环境与版本
  • 原文地址:https://blog.csdn.net/qixiang2013/article/details/132890018