使用cc++ Openssl库,建立安全连接流程?

使用cc++ Openssl库,建立安全连接流程?,第1张

建议看这本书《Network Security with OpenSSL》O'Reilly 2002.7出版的,网上有电子版,在这本书的第五章有客户端和服务器端的实例代码,并有详细的说明。

服务器端主要流程为:

1. 加载SSL库

SSL_load_error_strings()

SSLeay_add_ssl_algorithms()

2. 加载CA证书和私钥文件

SSL_CTX* ctx = SSL_CTX_new(SSLv23_server_method())

SSL_CTX_use_certificate_file(ctx, CA_CERT, SSL_FILETYPE_PEM)

SSL_CTX_set_default_passwd_cb_userdata(ctx, PASSWORD)

SSL_CTX_use_PrivateKey_file(ctx, PRVTKEY, SSL_FILETYPE_PEM)

SSL_CTX_check_private_key(ctx)

3. 建立TCP连接并监听

4. 接收客户端请求并建立SSL连接

SSL*ssl = SSL_new(ctx)

SSL_set_fd(ssl, fd_accept)

SSL_accept(ssl)

5. 获取客户端证书信息

SSL_get_peer_certificate(ssl)

X509_NAME_oneline(X509_get_subject_name(cli_cert), NULL, 0)

X509_NAME_oneline(X509_get_issuer_name(cli_cert), NULL, 0)

X509_free(cli_cert)

6. 接收和发送数据

SSL_write

SSL_read

7. 释放套接字和SSL

SSL_CTX_free(ctx)

SSL_free(ssl)

客户端主要流程:

1. 加载SSL库

SSL_load_error_strings()

SSLeay_add_ssl_algorithms()

2. 如果需要验证服务器端的信息的话步骤同服务器的步骤2一样

3. 创建套接字连接到服务器

4. 创建SSL连接

SSL_CTX* ctx = SSL_CTX_new(SSLv23_client_method())

5. 基于套接字建立SSL连接

SSL* ssl = SSL_new(ctx)

SSL_set_fd(ssl, fd_connect)

SSL_connect(ssl)

6. 收发数据

SSL_write

SSL_read

7. 释放连接和SSL

SSL_CTX_free(ctx)

SSL_free(ssl)

windows api是基于WINDOWS *** 作系统框架下做应用软件的一种函数调用方式,也就是说你只能看到它的函数名和参数,但是看不到函数内部的程序。你根据MSDN上的描述去调用相应功能的API函数来完成你的相关应用函数。当然,在使用VC++时有比调用API更方便的方法,那就是使用相关的类。具体的方式,楼上给出了一个最好的学习方案:孙鑫VC++视频和书,只要有一定的C语言基础就能够理解如何进行应用软件的编写。视频和书在网上都能够下的到。当然,你说的再学校学习的那些C语言基础是非常有用的,当你进行深入的编程时就能够体会的到,我们经常戏称谭浩强为强哥,就是因为即使是编程老手,有的时候都不得不去翻阅一下强哥的书,里面的内容虽然平实,但却非常基础和关键!


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9525761.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存