使用OpenSSL C库验证SSL证书

作者:佚名 上传时间:2023-03-24 运行软件:C代码 软件版本:OpenSSL 1.1.1 版权申诉

介绍如何使用OpenSSL C库来进行SSL证书验证,防止中间人攻击和伪造证书攻击。通过建立SSL连接并验证证书链来确保通信安全。

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

SSL_CTX *ctx;

//初始化SSL环境
int ssl_init(){
    SSL_load_error_strings();
    OpenSSL_add_ssl_algorithms();
    ctx = SSL_CTX_new(SSLv23_method());
    if (!ctx) {
        ERR_print_errors_fp(stderr);
        return 0;
    }
    return 1;
}

//SSL连接函数
int ssl_connect(int sockfd, const char *hostname){
    SSL *ssl;

    ssl = SSL_new(ctx);
    SSL_set_fd(ssl, sockfd);
    if (SSL_connect(ssl) != 1) {
        ERR_print_errors_fp(stderr);
        return 0;
    }

    //获取证书链
    X509 *cert;
    X509_NAME *cert_name;
    int depth = 0;
    STACK_OF(X509) *chain = SSL_get_peer_cert_chain(ssl);
    while ((cert = sk_X509_shift(chain)) != NULL) {
        depth++;

        if (X509_V_OK != SSL_get_verify_result(ssl)) {
            fprintf(stderr, "certificate verify failed, ssl error: %s\n", ERR_error_string(ERR_get_error(), NULL));
            return 0;
        }
        cert_name = X509_get_subject_name(cert);
        char *cn = X509_NAME_oneline(cert_name, NULL, 0);
        printf("depth:%d,subject name:%s\n", depth, cn); //打印证书链

        OPENSSL_free(cn);
        X509_free(cert);
    }

    //释放SSL
    SSL_shutdown(ssl);
    SSL_free(ssl);
    return 1;
}

//释放SSL环境
void ssl_cleanup(){
    SSL_CTX_free(ctx);
    EVP_cleanup();
}

免责申明:文章和图片全部来源于公开网络,如有侵权,请通知删除 server@dude6.com

用户评论
相关推荐
使用OpenSSL C验证SSL证书
介绍如何使用OpenSSL C库来进行SSL证书验证,防止中间人攻击和伪造证书攻击。通过建立SSL连接并验证证书链来确保通信安全。#include <openssl/ssl.h>#in
OpenSSL 1.1.1
C代码
2023-03-24 08:00
使用openssl验证ssl证书
本示例演示了如何使用openssl库来验证ssl证书,确保对远程服务器的连接是安全的。//创建SSL上下文SSL_CTX *ctx = SSL_CTX_new(TLSv1_2_client_met
openssl 1.1.1
C语言
2023-04-05 10:00
openssl ssl加密证书
在win32平台下利用openssl编写ssl通信程序时需要进行加密证书的验证,本文档是客户端和服务端的证书文件。
RAR
0B
2019-09-03 23:49
使用openssl生成单向ssl证书
使用openssl生成单向ssl证书,此方法生成的证书可以用于基于boost.asio库的SSL通讯测试中。基于基于boost.asio库SSL通讯测试程序可参见本人其他资源。
RAR
0B
2020-05-28 05:13
免费openssl生成ssl证书ssl证书生成
NULL博文链接:https://nassir.iteye.com/blog/1983613
PDF
0B
2020-05-17 19:45
Python中使用OpenSSL验证SSL证书
本示例代码演示了如何使用Python中的OpenSSL库对SSL证书进行验证,包括证书链验证和证书有效期验证。import sslfrom OpenSSL import SSLimport so
Python 3.6
Python
2023-04-29 03:58
OpenSSL生成的ssl证书
通过OpenSSL生成的ssl证书用于windows下用nginx配置https服务器OpenSSL创建证书无需再下载OpenSSL配置OpenSSL相关环境在进行命令生成证书
zip
2.56KB
2023-01-11 20:46
使用Python和OpenSSL证书验证SSL连接
该示例代码演示如何使用Python和OpenSSL证书验证SSL连接,包括如何构建SSL上下文、如何加载证书和如何验证证书。这是一种常见的SSL连接的安全性措施,确保连接的两端都是受信任的。impo
Python 3.6.9,OpenSSL 1.1.1
Python
2023-04-01 18:40
android ssl证书验证
androidssl证书验证
ZIP
0B
2019-09-13 17:55
使用Python和OpenSSL创建和验证SSL证书
本示例展示如何使用Python和OpenSSL创建和验证SSL证书。借助Python的pyopenssl库,可以使用Python脚本快速生成SSL证书,并使用OpenSSL验证服务端响应是否是来自信任
OpenSSL 1.1.1, pyopenssl 19.1.0, Python 3.7.3
Python
2023-03-21 15:55