使用openssl编写服务器和客户端代码实例

使用openssl编写服务器和客户端代码实例

ID:32371823

大小:53.06 KB

页数:5页

时间:2019-02-03

使用openssl编写服务器和客户端代码实例_第1页
使用openssl编写服务器和客户端代码实例_第2页
使用openssl编写服务器和客户端代码实例_第3页
使用openssl编写服务器和客户端代码实例_第4页
使用openssl编写服务器和客户端代码实例_第5页
资源描述:

《使用openssl编写服务器和客户端代码实例》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、使用OPENSSL编写服务器和客户端代码实例使用相同的ca生成两个证书,一个是server.cer,一个是client.cer,注意生成server.cer的时候必须指明证书可以用于服务端的。服务器代码: 1.#include "openssl/bio.h" 2.#include "openssl/ssl.h" 3.#include "openssl/err.h" 4. 5.#include  6. 7.#define EXIT_IF_TRUE(x) if (x)                               

2、8.    do {                                                     9.            fprintf(stderr, "Check '%s' is true", #x);     10.            ERR_print_errors_fp(stderr);                     11.            exit(2);                                         12.    }while(0) 

3、13. 14.int main(int argc, char **argv) 15.{ 16.    SSL_CTX     *ctx; 17.    SSL         *ssl; 18.    X509        *client_cert; 19. 20.    char szBuffer[1024]; 21.    int nLen; 22. 23.    struct sockaddr_in addr; 24.    int len; 25.    int nListenFd, nAcceptFd; 26. 27.    // 

4、初始化 28.    cutil_init(); 29.    cutil_log_set_level(LOG_ALL); 30.    cutil_log_set_stderr(1); 1.    SSLeay_add_ssl_algorithms(); 2.    OpenSSL_add_all_algorithms(); 3.    SSL_load_error_strings(); 4.    ERR_load_BIO_strings(); 5. 6.    // 我们使用SSL V3,V2 7.    EXIT_IF_TRUE((ct

5、x = SSL_CTX_new (SSLv23_method())) == NULL); 8. 9.    // 要求校验对方证书 10.    SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, NULL); 11. 12.    // 加载CA的证书 13.    EXIT_IF_TRUE (!SSL_CTX_load_verify_locations(ctx, "cacert.cer", NULL)); 14. 15.    // 加载自己的证书 16.    EXIT_IF_TRUE (SSL_CTX_us

6、e_certificate_file(ctx, "server.cer", SSL_FILETYPE_PEM) <= 0) ; 17. 18.    // 加载自己的私钥 19.    EXIT_IF_TRUE (SSL_CTX_use_PrivateKey_file(ctx, "server.key", SSL_FILETYPE_PEM) <= 0) ; 20. 21.    // 判定私钥是否正确 22.    EXIT_IF_TRUE (!SSL_CTX_check_private_key(ctx)); 23. 24.    // 创建并

7、等待连接 25.    nListenFd = cutil_socket_new(SOCK_STREAM); 26.    cutil_socket_bind(nListenFd, NULL, 8812, 1); 27. 28.    memset(&addr, 0, sizeof(addr)); 29.    len = sizeof(addr); 30.    nAcceptFd = accept(nListenFd, (struct sockaddr *)&addr, (size_t *)&len); 31.    cutil_log_d

8、ebug("Accept a connect from [%s:%d]",  32.        inet_ntoa(addr.sin_addr

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。