资源简介
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++
相关资源
- 百度OCR文字识别依赖库-libcurl、opens
- vc6_tls1.2Demo with openssl
- C++使用Openssl进行RSA加密解密及签名验
- 支持国密的OpenSSL 2.0
- OpenSSLx86 & x64开发库
- rabbitmq的C++客户端SimpleAmqpClient编译库
- openssl c语言应用
- openssl加解密C语言代码
- 国密算法--Openssl 实现国密算法加密和
- OpenSSL+VC6.0 实现的安全Web Server 客户端
- 纯C语言实现https的post和get不依赖任何
- sm2加密,解密,签名,验签sm3哈希基
- C语言https POST提交openSSL的应用可作为
- rsa基于openssl1.1 实现签名(rsasign.cpp)
- OPENSSL加解密
评论
共有 条评论