• 大小: 21.42MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-07-03
  • 语言: 其他
  • 标签: windows  SSL  openssl  VS  

资源简介

Windows下用SSL实现加密通讯Demo。内含win32 realease版本的openssl-1.1.0f静态库,及用其生成的加密数字证书文件。可参见:http://blog.csdn.net/ljttianqin/article/details/73498453

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 

#include 
#include 
#include 
#include 

#pragma comment(lib “WS2_32.lib“)

#define MAXBUF 1024

void ShowCerts(SSL * ssl)
{
X509 *cert;
char *line;

cert = SSL_get_peer_certificate(ssl);
if (cert != NULL) {
printf(“数字证书信息:\n“);
line = X509_NAME_oneline(X509_get_subject_name(cert) 0 0);
printf(“证书: %s\n“ line);
free(line);
line = X509_NAME_oneline(X509_get_issuer_name(cert) 0 0);
printf(“颁发者: %s\n“ line);
free(line);
X509_free(cert);
}
else
printf(“无证书信息!\n“);
}

int main(int argc char **argv)
{
int sockfd len;
struct sockaddr_in dest;
char buffer[MAXBUF + 1] = { 0 };
SSL_CTX *ctx;
SSL *ssl;


/* SSL 库初始化,参看 ssl-server.c 代码 */
SSL_library_init();
OpenSSL_add_all_algorithms();
SSL_load_error_strings();
ctx = SSL_CTX_new(SSLv23_client_method());
if (ctx == NULL) {
ERR_print_errors_fp(stdout);
exit(1);
}

/* 创建一个 socket 用于 tcp 通信 */
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD(2 2);
err = WSAStartup(wVersionRequested &wsaData);

if (err != 0)//返回0表示成功
{
return 0;
}
if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
{
WSACleanup();
return 0;
}

if ((sockfd = socket(AF_INET SOCK_STREAM 0)) < 0) {
perror(“Socket“);
exit(errno);
}
printf(“socket created\n“);

/* 初始化服务器端(对方)的地址和端口信息 */
dest.sin_family = AF_INET;
dest.sin_addr.s_addr = inet_addr(“127.0.0.1“);
dest.sin_port = htons(60005);

printf(“address created\n“);

/* 连接服务器 */
if (connect(sockfd (struct sockaddr *) &dest sizeof(dest)) != 0) {
perror(“Connect “);
exit(errno);
}
printf(“server connected\n“);

/* 基于 ctx 产生一个新的 SSL */
ssl = SSL_new(ctx);
SSL_set_fd(ssl sockfd);
/* 建立 SSL 连接 */
if (SSL_connect(ssl) == -1)
ERR_print_errors_fp(stderr);
else {
printf(“Connected with %s encryption\n“ SSL_get_cipher(ssl));
ShowCerts(ssl);
}

/* 接收对方发过来的消息,最多接收 MAXBUF 个字节 */
//bzero(buffer MAXBUF + 1);
/* 接收服务器来的消息 */
len = SSL_read(ssl buffer MAXBUF);
if (len > 0)
printf(“接收消息成功:‘%s‘,共%d个字节的数据\n“
buffer len);
else {
printf
(“消息接收失败!错误代码是%d,错误信息是‘%s‘\n“
errno strerror(errno));
goto finish;
}
//bzero(buffer MAXBUF + 1);
memset(buffer 0 MAXBUF);
strcpy(buffer “from client->server“);
/* 发消息给服务器 */
len = SSL_write(ssl buffer strlen(buffer));
if (len < 0)
printf
(“消息‘%s‘发送失败!错误代码是%d,错误信息是‘%s‘\n“
buffer errno strerror(errno));
else
printf(“消息‘%s‘发送成功,共发送了%d个字节!\n“
buffer len);

finish:
/* 关闭连接 */
SSL_shutdown(ssl);
SSL_free(ssl);
closesocket(sockfd);
SSL_CTX_free(ctx);
return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    ..A..H.     30720  2017-06-20 15:25  SSL\.vs\SSL\v14\.suo

     文件       1024  2017-06-11 15:52  SSL\Openssl_Libs\win32-release\bin\.rnd

     文件       1434  2017-06-11 15:51  SSL\Openssl_Libs\win32-release\bin\ca.crt

     文件       1884  2017-06-11 15:50  SSL\Openssl_Libs\win32-release\bin\ca.key

     文件       3926  2017-06-11 15:52  SSL\Openssl_Libs\win32-release\bin\client.crt

     文件        778  2017-06-11 15:46  SSL\Openssl_Libs\win32-release\bin\client.csr

     文件        981  2017-06-11 15:45  SSL\Openssl_Libs\win32-release\bin\client.key

     文件       6474  2017-06-08 10:08  SSL\Openssl_Libs\win32-release\bin\c_rehash.pl

     文件        224  2017-06-11 15:52  SSL\Openssl_Libs\win32-release\bin\demoCA\index.txt

     文件         22  2017-06-11 15:52  SSL\Openssl_Libs\win32-release\bin\demoCA\index.txt.attr

     文件         22  2017-06-11 15:51  SSL\Openssl_Libs\win32-release\bin\demoCA\index.txt.attr.old

     文件        112  2017-06-11 15:51  SSL\Openssl_Libs\win32-release\bin\demoCA\index.txt.old

     文件       3926  2017-06-11 15:51  SSL\Openssl_Libs\win32-release\bin\demoCA\newcerts\01.pem

     文件       3926  2017-06-11 15:52  SSL\Openssl_Libs\win32-release\bin\demoCA\newcerts\02.pem

     文件          4  2017-06-11 15:52  SSL\Openssl_Libs\win32-release\bin\demoCA\serial

     文件          4  2017-06-11 15:51  SSL\Openssl_Libs\win32-release\bin\demoCA\serial.old

     文件    1933312  2017-06-08 10:08  SSL\Openssl_Libs\win32-release\bin\openssl.exe

     文件       3926  2017-06-11 15:51  SSL\Openssl_Libs\win32-release\bin\server.crt

     文件        778  2017-06-11 15:44  SSL\Openssl_Libs\win32-release\bin\server.csr

     文件        981  2017-06-11 15:42  SSL\Openssl_Libs\win32-release\bin\server.key

     文件       8331  2017-06-08 10:08  SSL\Openssl_Libs\win32-release\html\man1\asn1parse.html

     文件       8939  2017-06-08 10:08  SSL\Openssl_Libs\win32-release\html\man1\blake2b.html

     文件       8939  2017-06-08 10:08  SSL\Openssl_Libs\win32-release\html\man1\blake2s.html

     文件      29952  2017-06-08 10:08  SSL\Openssl_Libs\win32-release\html\man1\ca.html

     文件       9725  2017-06-08 10:08  SSL\Openssl_Libs\win32-release\html\man1\CA.pl.html

     文件      33540  2017-06-08 10:08  SSL\Openssl_Libs\win32-release\html\man1\ciphers.html

     文件      30881  2017-06-08 10:08  SSL\Openssl_Libs\win32-release\html\man1\cms.html

     文件       4895  2017-06-08 10:08  SSL\Openssl_Libs\win32-release\html\man1\crl.html

     文件       4308  2017-06-08 10:08  SSL\Openssl_Libs\win32-release\html\man1\crl2pkcs7.html

     文件       5650  2017-06-08 10:08  SSL\Openssl_Libs\win32-release\html\man1\c_rehash.html

............此处省略3322个文件信息

评论

共有 条评论