我需要帮助来缩短检索 SSL 证书的执行时间
I need help to improve the execution time of retrieving SSL certificates
>我正在从事一个从站点获取SSL证书并提取CName字段的项目。我目前的执行速度低至 0.435 秒,但我确信它可以得到更多改进,所以我想利用 stackoverflow 社区来找到我浪费周期的所有地方,或者可以更快地完成它。以下是到目前为止我检索SSL证书并提取CName字段的代码。
int main(int argc, char **argv) {
struct sockaddr_in sa;
SSL* ssl;
X509* server_cert;
SSLeay_add_ssl_algorithms();
SSL_load_error_strings();
SSL_CTX* ctx = SSL_CTX_new (SSLv23_method());
int sd = ::socket (AF_INET, SOCK_STREAM, 0);//create socket
if (sd!=-1 && ctx!=NULL)
{
memset (&sa, ' ', sizeof(sa));
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = inet_addr ("SOME IP"); /* Server IP */
sa.sin_port = htons (443); /* Server Port number */
int err = ::connect(sd, (struct sockaddr*) &sa, sizeof(sa));
if (err!=-1)
{
ssl = SSL_new (ctx);
if (ssl!=NULL)
{
SSL_set_fd(ssl, sd);
err = SSL_connect(ssl);
if (err!=-1)
{
server_cert = SSL_get_peer_certificate(ssl);
if (server_cert!=NULL)
{
printf("%sn", strrchr(X509_NAME_oneline(X509_get_subject_name(server_cert), 0, 0),'=')+1);
X509_free (server_cert);
}
}
SSL_free (ssl);
}
::close(sd);//close socket
}
}
SSL_CTX_free (ctx);
}
我似乎可以减少一些 CPU 周期的两个区域是 ::connect 我猜它可能比我需要的做更多的工作,以及在 printf 行,我正在提取 cn = 字段在 SSL 主题的末尾。
我很可能处于尽可能低的水平,任何进一步的优化都不值得花时间,但我期待在这一点上被证明是错误的。
我的猜测是有一种方法可以更深入地实现SSL/TLS握手过程的前2个步骤,这是获取服务器证书所需的全部内容,但是几个小时的谷歌搜索还没有显示出一种方法可以做到这一点,尽管这可能是由于我的Google-Fu技能。在这方面,我期待着学习一些优化技巧,或者发现我的性能和我将要得到的一样!
正如评论中提到的,互联网延迟似乎是我最大的时间槽。我针对地理上靠近代码主机与县另一侧的主机运行上面的代码,并从 0.429 变为 0.172!
相关文章:
- SSL上的`curl_easy_send`和`curl_asy_recv`:如何处理`CURLE_AGAIN`
- 使用VerQueryValue检索应用程序的文件描述
- 是否可以从格式字符串中检索"width"
- 使用 pqxx 将 std::vector 存储在 postgresql 中,并从数据库中检索它
- 如何在QByteArray中放置和检索位字段而不会感到痛苦?
- 如何在Qt中从数据库中检索二进制数据?
- 使用 OpenSSL 从内存中读取原始 SSL/TLS 证书
- 如何从C++代码中检索 QML 的文本字段中的文本?
- Mongocxx无法使用SSL连接到mongoDB
- 从 opencv c++ 中的矢量中检索固定的帧数
- 如何在不等待检索的情况下获取C++中的内存位置?
- 如何在 QTreeWidget 中检索特定项目的 mimeData?
- C++从字符串中检索几行
- 在数据库中插入和检索矩阵
- 两个垫子的 OpenCV 数据是相同的,但使用 Mat::at 检索时的值已损坏
- 使用 const char* 键映射 C++ 检索空值
- 打印从SQLite3数据库检索的数据C++与命令行中相同的方式
- 如何检索指向在单独线程上运行的函数的移动指针?
- 我需要帮助来缩短检索 SSL 证书的执行时间
- 在GRPC服务器端呼叫时检索SSL证书