首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >安全SSL连接错误:未知协议|错误的主机名查找

安全SSL连接错误:未知协议|错误的主机名查找
EN

Stack Overflow用户
提问于 2018-09-28 00:00:55
回答 1查看 86关注 0票数 0

Iam正在下载RSS源文件(例如,https://tools.ietf.org/dailydose/dailydose_atom.xml)从服务器通过HTTP.

首先,如here所述,我必须通过OpenSSL连接到远程服务器。

不安全的版本工作得很好,我可以连接并接收带有提要的HTTP答案:

代码语言:javascript
复制
bio = BIO_new_connect("www.tools.ietf.org:80");
if(bio == NULL)
{
    /* Handle the failure */
}

if(BIO_do_connect(bio) <= 0)
{
    /* Handle failed connection */
}

安全版本:

代码语言:javascript
复制
BIO                 * m_bio;
SSL_CTX             * m_ctx;
SSL                 * m_ssl;

SSL_library_init(); 

m_ctx = SSL_CTX_new(SSLv23_client_method());

SSL_load_error_strings();
ERR_load_BIO_strings();
OpenSSL_add_all_algorithms();

SSL_CTX_set_default_verify_paths(m_ctx);

m_bio = BIO_new_ssl_connect(m_ctx);
BIO_get_ssl(m_bio, &m_ssl);
SSL_set_mode(m_ssl, SSL_MODE_AUTO_RETRY);

BIO_set_conn_hostname(m_bio, "www.tools.ietf.org:80");


if (BIO_do_connect(m_bio) <= 0)
{
    printf("Error: %s\n", ERR_reason_error_string(ERR_get_error()));
    throw std::runtime_error("FEEDREADER: Connection failed.");
}

if(SSL_get_verify_result(m_ssl) != X509_V_OK)
{
    throw std::runtime_error("FEEDREADER: Verification failed.");
}

其中do_connect失败,并显示以下错误:

错误:未知协议

当我用http(s)://www.tools.ietf.org替换www.tools.ietf.org

出现另一个错误:

错误:主机名查找错误

但是主机名和dns在不安全的版本中工作得很好,所以有人可以帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-28 03:33:06

80是默认的HTTP端口。443是默认的HTTPS端口。

代码语言:javascript
复制
bio = BIO_new_connect("www.tools.ietf.org:443");

代码语言:javascript
复制
BIO_set_conn_hostname(m_bio, "www.tools.ietf.org:443");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52540961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档