为什么连接不到https?

thisworld 2005-08-31 04:01:51
我要程序与一个https的网站通信,准备用openssl库,但程序一开始就遇到问题了,
我建了个socket,能够与http的网站相连,却connet不上https的那个网站,不知道是什么原因?(这里还没有用到openssl)

大家有没有相关的源代码或资料,请发到8_88_888@163.com,谢谢了!
...全文
204 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
thisworld 2005-09-05
  • 打赏
  • 举报
回复
SSL_get_peer_certificate是干什么用的?

是openssl包中的函数,得到安全证书信息什么的
thisworld 2005-09-01
  • 打赏
  • 举报
回复
自己找到原因了,原来是端口设置不对,https的端口是443
但是还有好多些问题:
server_cert = SSL_get_peer_certificate (ssl);
CHK_NULL(server_cert); //得不到server_cert,在这里就退出了,
softrain 2005-09-01
  • 打赏
  • 举报
回复
mark
SSL_get_peer_certificate是干什么用的?
thisworld 2005-08-31
  • 打赏
  • 举报
回复
程序在显示:connect failed!之后便退出了,
而我在ie中可以访问https://172.168.126.58
thisworld 2005-08-31
  • 打赏
  • 举报
回复
代码如下,
#include <iostream.h>
#include <winsock2.h>

#include <openssl/crypto.h>
#include <openssl/x509.h>
#include <openssl/pem.h>
#include <openssl/ssl.h>
#include <openssl/err.h>


#define CHK_NULL(x) if ((x)==NULL) exit (1)
#define CHK_ERR(err,s) if ((err)==-1) { perror(s); exit(1); }
#define CHK_SSL(err) if ((err)==-1) { ERR_print_errors_fp(stderr); exit(2); }


void main()
{

WSADATA wsaData;
if (WSAStartup(MAKEWORD(2,2),&wsaData))
{
cout<<"init winsock failed!"<<endl;
return;
}

SOCKET s;
SOCKADDR_IN addr;
int len=sizeof(addr);
s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if (s==INVALID_SOCKET)
{
cout<<"create socket failed!"<<endl;
return;
}
addr.sin_port=htons(80);
addr.sin_family=AF_INET;
addr.sin_addr.s_addr=inet_addr("172.168.126.58");
if (connect(s,(sockaddr *)&addr,len)==SOCKET_ERROR)
{
cout<<"connect failed!"<<endl;
return;
}
else
{
cout<<"connect success!"<<endl;
}

int err;
SSL_CTX* ctx;
SSL* ssl;
X509* server_cert;
char* str;
//char buf [4096];
SSL_METHOD *meth;

SSLeay_add_ssl_algorithms();
meth = SSLv2_client_method();
SSL_load_error_strings();
ctx = SSL_CTX_new (meth);
CHK_NULL(ctx);

ssl = SSL_new (ctx);
CHK_NULL(ssl);

SSL_set_fd (ssl, s);
err = SSL_connect (ssl);
CHK_SSL(err);

cout<<"SSL connection using "<<endl<<SSL_get_cipher (ssl)<<endl;
server_cert = SSL_get_peer_certificate (ssl);
CHK_NULL(server_cert);
cout<<"Server certificate: "<<endl;

str = X509_NAME_oneline (X509_get_subject_name (server_cert),0,0);
CHK_NULL(str);
cout<<"\t subject: "<<endl<<str<<endl;
OPENSSL_free (str);

str = X509_NAME_oneline (X509_get_issuer_name (server_cert),0,0);
CHK_NULL(str);
cout<<"\t issuer: "<<endl<<str<<endl;
OPENSSL_free (str);
X509_free (server_cert);

SSL_shutdown (ssl);

closesocket(s);
SSL_free (ssl);
SSL_CTX_free (ctx);

WSACleanup();
}
VCSQLVB 2005-08-31
  • 打赏
  • 举报
回复
帖出代码

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧