資源簡介
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\appli
?????文件???????????0??2012-02-24?14:25??SSLserver\SSLServer\Debug\appli
?????文件?????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個文件信息
- 上一篇:k-means的C++代碼vs
- 下一篇:MFC局域網聊天室C++
評論
共有 條評論