参考源码路径  demos\ssl

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <Winsock2.h> #include <openssl/crypto.h>
#include <openssl/x509.h>
#include <openssl/pem.h>
#include <openssl/ssl.h>
#include <openssl/err.h> #pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "libeay32.lib")
#pragma comment(lib, "ssleay32.lib") #define HTTP_REQUEST "GET /index.html HTTP/1.1\r\nHost: 172.28.250.184:1443\r\nUser-Agent: Mozilla/5.0 (Windows NT 5.1; rv:30.0) Gecko/20100101 Firefox/30.0\r\n\r\n" int main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 ); SSL_CTX* ctx;
SSL* ssl;
X509* server_cert;
const SSL_METHOD *meth; int ret;
char *info; SSLeay_add_ssl_algorithms();//初始化
SSL_load_error_strings();//错误信息初始化
//meth = SSLv2_client_method(); 用这个协议连接nginx的时候 SSL_connect 返回 -1 并且没有任何错误打印出来。
meth = TLSv1_client_method();//指定协议 ctx = SSL_CTX_new (meth); err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return 0;
} if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return 0;
}
SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr("172.28.250.184");
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(1443);
ret=connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); ssl = SSL_new (ctx);
ret = SSL_set_fd (ssl, sockClient);
ret = SSL_connect (ssl);
if(ret == -1){
ERR_print_errors_fp(stderr);
return -1;
}
//成功连接后的服务器证书信息
printf ("使用的加密算法 %s\n", SSL_get_cipher (ssl));
server_cert = SSL_get_peer_certificate (ssl);
info = X509_NAME_oneline (X509_get_subject_name (server_cert),0,0);
printf ("Server certificate: subject: %s\n", info);
if(!info) free(info);
info = X509_NAME_oneline (X509_get_issuer_name (server_cert),0,0);
printf ("Server certificate: issuer: %s\n", info);
if(!info) free(info);
X509_free (server_cert); //数据传输
ret = SSL_write (ssl, HTTP_REQUEST, strlen(HTTP_REQUEST));
char buf[1500];
memset(buf,0,sizeof(buf));
ret = SSL_read (ssl, buf, 1500);
printf("%s",buf);
SSL_shutdown (ssl);
shutdown (sockClient,2);
SSL_free (ssl);
SSL_CTX_free (ctx); closesocket(sockClient);
WSACleanup();
return 0;
}

openssl 连接 https(nginx)的更多相关文章

  1. 基于OpenSSL的HTTPS通信C++实现

      HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL.Nebula是一个为开发者提供一个快速开发 ...

  2. php soap连接https的wsdl报错SOAP-ERROR: Parsing WSDL:Couldn't load from

    转发:https://blog.csdn.net/keyunq/article/details/51804728 SOAP-ERROR: Parsing WSDL:Couldn’t load from ...

  3. 搭建https+nginx服务器

    搭建https+nginx的服务器,主要是安装ngnix和使用openssl生成自签证书,并在nginx中配置的过程   一.安装环境 1.安装opnssl(ssl支持) https://www.op ...

  4. Nginx安装配置|Nginx反向代理|Nginx支持HTTPS|Nginx重定向

    Nginx安装配置 可以直接看到最下面的HTTPS. Nginx安装 我的系统如下: No LSB modules are available. Distributor ID: Ubuntu Desc ...

  5. 阿里云openssl升级,实现nginx主动推送,nginx主动推送能够有效减少不必要的报文传输,减少用户请求次数,以达到更快访问速度

    现有版本检查 [root@node3 ~]# openssl version               #这个版本是无法支持http2.0主动推送功能.需要升级为2019版本. OpenSSL 1. ...

  6. nginx 为什么要反向代理 影藏后端 高效连接(给nginx,他自己返回) 端口冲突解决 多个服务

    nginx 为什么要反向代理  影藏后端   高效连接(给nginx,他自己返回)  端口冲突解决  多个服务 单机使用反向代理可以根据不同url匹配到不同站点   rsync 的工作原理和应用实例 ...

  7. 记Outlook插件与Web页面交互的各种坑 (含c# HttpWebRequest 连接https 的完美解决方法)

    1) 方案一,  使用Web Service  基础功能没问题, 只是在连接https (ssh) 网站时, 需要针对https进行开发 (即http 和https 生成两套接口, 不太容易统一 ). ...

  8. openssl生成https证书

    openssl生成https证书 分类: 其它2009-09-03 16:20 452人阅读 评论(0) 收藏 举报 includemoduleaccessapachessl服务器 openssl生成 ...

  9. https://nginx.org/en/docs/http/request_processing.html

    https://nginx.org/en/docs/http/request_processing.html

随机推荐

  1. web 浏览器窗口

    1.窗口位置: 取得浏览器窗口左边和上边距屏幕左边和上边的位置 var leftPos = (typeof window.screenLeft == "number")? wind ...

  2. 使用FFMPEG类库分离出多媒体文件中的H.264码流

    在使用FFMPEG的类库进行编程的过程中,可以直接输出解复用之后的的视频数据码流.只需要在每次调用av_read_frame()之后将得到的视频的AVPacket存为本地文件即可. 经试验,在分离MP ...

  3. Vue之组件

    Vue之全局组件 全局组件可以被任何局部组件调用 <div id="app"> <!--这里是组件的使用--> <global-component&g ...

  4. 事务、cookie、session操作

    事务 import os if __name__ == '__main__': os.environ.setdefault('DJANGO_SETTINGS_MODULE','BMS.settings ...

  5. 我的图片爬虫demo

    本来是根据scrapy教程写了一个下载图片的简易爬虫,但是搞了一天,死活下载不了图片. 然后换了一个网站,用原生的库写了一个图片爬虫. import urllib.requestimport osde ...

  6. jQuery MD5 加密

    一 MD5 概述 MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value) ...

  7. 数据库(mysql)

    一.left join  right join  inner join left join(左连接),在两张表进行连接查询时,会返回左表所有的行,即使在右表中没有匹配的记录. right join(右 ...

  8. Windows Server RRAS 配置

    在Windows Server上,RRAS 是 Rounting and Remote Access Service 的简称. 通过 RRAS UI 管理器可实现 VPN 和 NAT 的配置. RRA ...

  9. ubuntu系统ssh遇到port 22:No route to host问题

    ssh遇到这个port 22:No route to host这个问题 检查防火墙状态 (iptables -L) 检查ssh状态 (ps -elf |grep ssh) 检查网络状态(换根网线)

  10. ubuntu 安装Pangolin 过程

    Pangolin 是一款开源的OPENGL显示库,可以用来视频显示.而且开发容易. 代码我们可以从Github 进行下载:https://github.com/zzx2GH/Pangolin.git ...