• 大小: 4.53MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-09-19
  • 语言: C/C++
  • 标签: OpenSSL  源码实例  

资源简介

OpenSSL客户端服务器源码实例,本程序基于windows系统,使用Vc6.0开发

资源截图

代码片段和文件信息

#include “SSLClient.h“

int main(int argc _TCHAR* argv[])


int err ;  
int sd;  
struct  sockaddr_in sa;  
SSL_CTX* ctx;  
SSL*    ssl;  
X509* server_cert;  
char*   str;  
char    buf[4096];  
SSL_METHOD  *meth;  
WSADATA     wsaData;  

//初始化 windows socket 环境   
printf(“初始化 windows socket 环境\n“);  
if (WSAStartup(MAKEWORD(11)&wsaData))  
{  
return 0;  
}  
//初始化 openssl 环境   
printf(“初始化 openssl 环境\n“);  
SSL_load_error_strings();  
SSLeay_add_ssl_algorithms();  
    SSL_library_init();   
//ssl协议版本v2v3 自适应   
printf(“ssl协议版本v2v3 自适应\n“);  
meth=SSLv23_client_method();  
/*
#if !defined(OPENSSL_NO_SSL2) && !defined(OPENSSL_NO_SSL3)
meth=SSLv23_server_method();
#elif !defined(OPENSSL_NO_SSL3)
meth=SSLv3_server_method();
#elif !defined(OPENSSL_NO_SSL2)
meth=SSLv2_server_method();
#endif
*/

ctx=SSL_CTX_new(meth);    
if (!SSL_CTX_use_certificate_file(ctx“client.pem“SSL_FILETYPE_PEM)  
|| !SSL_CTX_use_PrivateKey_file(ctx“client.key“SSL_FILETYPE_PEM)  
|| !SSL_CTX_check_private_key(ctx)) {     
printf(“Error setting up SSL_CTX\n“);  
return 0;  
}  

CHK_NULL(ctx);  
//CHK_SSL(err);   

//以常规的socket 编程的方式创建socket 并链接到服务器   
printf(“以常规的socket 编程的方式创建socket 并链接到服务器\n“);  
sd=socket(AF_INETSOCK_STREAM0);  
CHK_ERR(sd“socket“);  
memset(&sa0sizeof(sa));  
sa.sin_family=AF_INET;  
sa.sin_addr.s_addr=inet_addr(“10.0.0.183“);  
sa.sin_port=htons(11110);  
//链接服务器   
printf(“链接服务器\n“);  
err=connect(sd(struct sockaddr*)&sasizeof(sa));  
CHK_ERR(err“connect“);  

//使用现有的tcp链接开启ssl 协议   
printf(“使用现有的tcp链接开启ssl 协议\n“);  
ssl=SSL_new(ctx);  
CHK_NULL(ssl);  
//启动SSL链接   
printf(“启动SSL链接\n“);  
SSL_set_fd (ssl sd);  
err = SSL_connect (ssl);  
CHK_SSL(err);  

//打印ssl 链接的算法   
printf(“打印ssl 链接的算法\n“);  
printf(“SSL connection using %s\n“SSL_get_cipher(ssl));  
//获得服务器证书   
getchar();  
server_cert=SSL_get_peer_certificate(ssl);  
CHK_NULL(server_cert);  
printf(“Server certificate:\n“);  
//获得服务器证书名称   
str=X509_NAME_oneline(X509_get_subject_name(server_cert)00);  
CHK_NULL(str);  
printf(“/t subject:%s\n“str);  
OPENSSL_free(str);  
//获得服务器证书发者的名称;   
str=X509_NAME_oneline(X509_get_issuer_name(server_cert)00);  
CHK_NULL(str);  
printf(“/t issuer: %s\n“str);  
OPENSSL_free(str);  

X509_free(server_cert);  
//发送消息 到服务器端   



err=SSL_write(ssl“Hello World“strlen(“Hello World“));  
CHK_SSL(err);  
//读取服务器端信息   
err=SSL_read(sslbufsizeof(buf)-1);  
CHK_SSL(err);  
buf[err]=‘\0‘;  
printf(“Got %d chars:‘%s‘\n“errbuf);  
getchar();  
    SSL_shutdown(ssl);  

    closesocket(sd);  
    SSL_free(ssl);  
    SSL_CTX_free(ctx);  
    return 0;  
}  

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-02-24 17:50  SSLClient\
     目录           0  2012-02-24 20:10  SSLClient\SSLClient\
     文件         963  2012-02-24 18:21  SSLClient\SSLClient\client.key
     文件        3161  2012-02-24 18:29  SSLClient\SSLClient\client.pem
     目录           0  2012-02-24 20:02  SSLClient\SSLClient\Debug\
     文件      188493  2012-02-24 20:02  SSLClient\SSLClient\Debug\SSLClient.exe
     文件         584  2012-02-24 20:02  SSLClient\SSLClient\Debug\SSLClient.exp
     文件      234612  2012-02-24 20:02  SSLClient\SSLClient\Debug\SSLClient.ilk
     文件        1986  2012-02-24 20:02  SSLClient\SSLClient\Debug\SSLClient.lib
     文件       26054  2012-02-24 20:02  SSLClient\SSLClient\Debug\SSLClient.obj
     文件     3910044  2012-02-24 20:02  SSLClient\SSLClient\Debug\SSLClient.pch
     文件      508928  2012-02-24 20:02  SSLClient\SSLClient\Debug\SSLClient.pdb
     文件       50176  2012-02-24 20:02  SSLClient\SSLClient\Debug\vc60.idb
     文件       94208  2012-02-24 20:02  SSLClient\SSLClient\Debug\vc60.pdb
     文件        3003  2012-02-24 20:02  SSLClient\SSLClient\SSLClient.c
     文件        4448  2012-02-24 19:49  SSLClient\SSLClient\SSLClient.dsp
     文件         541  2012-02-24 17:50  SSLClient\SSLClient\SSLClient.dsw
     文件         789  2012-02-24 19:07  SSLClient\SSLClient\SSLClient.h
     文件       41984  2012-02-24 20:10  SSLClient\SSLClient\SSLClient.ncb
     文件       49664  2012-02-24 20:10  SSLClient\SSLClient\SSLClient.opt
     文件         252  2012-02-24 20:02  SSLClient\SSLClient\SSLClient.plg
     目录           0  2012-02-24 11:51  SSLserver\
     目录           0  2012-02-24 20:10  SSLserver\SSLServer\
     目录           0  2012-02-24 19:52  SSLserver\SSLServer\Debug\
     文件        7921  2012-02-24 14:25  SSLserver\SSLServer\Debug\applink.obj
     文件           0  2012-02-24 14:25  SSLserver\SSLServer\Debug\applink.sbr
     文件     2802688  2012-02-24 19:52  SSLserver\SSLServer\Debug\SSLServer.bsc
     文件      188493  2012-02-24 19:52  SSLserver\SSLServer\Debug\SSLServer.exe
     文件         584  2012-02-24 19:28  SSLserver\SSLServer\Debug\SSLServer.exp
     文件      244160  2012-02-24 19:52  SSLserver\SSLServer\Debug\SSLServer.ilk
     文件        1986  2012-02-24 19:28  SSLserver\SSLServer\Debug\SSLServer.lib
............此处省略15个文件信息

评论

共有 条评论