FreeBSD下使用OpenSSL验证SSL证书的示例代码

作者:佚名 上传时间:2023-03-20 运行软件:C语言 软件版本:OpenSSL 1.1.1k 25 Mar 2021 版权申诉

本示例代码介绍在FreeBSD下如何使用OpenSSL库进行SSL证书验证。使用了OpenSSL的证书链和证书验证函数来检查证书和颁发者是否可信,同时验证了证书中的公钥是否能够对应私钥。

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

int main()
{
    SSL_CTX *ssl_ctx;
    SSL *ssl;
    X509 *cert;
    BIO *bio;
    int ret;

    SSL_library_init();

    ssl_ctx = SSL_CTX_new(TLS_method());
    SSL_CTX_set_verify(ssl_ctx, SSL_VERIFY_PEER, NULL);
    SSL_CTX_load_verify_locations(ssl_ctx, "root.pem", NULL);

    bio = BIO_new_ssl_connect(ssl_ctx);
    SSL_set_cipher_list(ssl, "DEFAULT");
    BIO_get_ssl(bio, &ssl);
    SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY);
    BIO_set_conn_hostname(bio, "www.example.com:443");

    if (BIO_do_connect(bio) <= 0) {
        fprintf(stderr, "Error: failed to connect to server.\n");
        ERR_print_errors_fp(stderr);
        return 1;
    }

    if (SSL_get_verify_result(ssl) != X509_V_OK) {
        fprintf(stderr, "Error: verify result is not X509_V_OK.\n");
        ERR_print_errors_fp(stderr);
        return 1;
    }

    cert = SSL_get_peer_certificate(ssl);
    if (cert == NULL) {
        fprintf(stderr, "Error: certificate not found.\n");
        return 1;
    }

    /* 验证公钥是否对应私钥 */
    ret = X509_verify(cert, X509_get_pubkey(cert));
    if (ret != 1) {
      fprintf(stderr, "Error: X509_verify error.\n");
      return 1;
    }

    printf("Certificate is trusted and the public key matches the private key.\n");

    BIO_free_all(bio);
    SSL_CTX_free(ssl_ctx);

    return 0;
}

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

用户评论
相关推荐
FreeBSD使用OpenSSL验证SSL证书示例代码
本示例代码介绍在FreeBSD下如何使用OpenSSL库进行SSL证书验证。使用了OpenSSL的证书链和证书验证函数来检查证书和颁发者是否可信,同时验证了证书中的公钥是否能够对应私钥。#inclu
OpenSSL 1.1.1k 25 Mar 2021
C语言
2023-03-20 20:39
OpenSSL生成ssl证书
通过OpenSSL生成的ssl证书用于windows下用nginx配置https服务器OpenSSL创建证书无需再下载OpenSSL配置OpenSSL相关环境在进行命令生成证书
zip
2.56KB
2023-01-11 20:46
openssl ssl加密证书
在win32平台下利用openssl编写ssl通信程序时需要进行加密证书的验证,本文档是客户端和服务端的证书文件。
RAR
0B
2019-09-03 23:49
使用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证书
使用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
使用OpenSSL C库验证SSL证书
介绍如何使用OpenSSL C库来进行SSL证书验证,防止中间人攻击和伪造证书攻击。通过建立SSL连接并验证证书链来确保通信安全。#include <openssl/ssl.h>#in
OpenSSL 1.1.1
C代码
2023-03-24 08:00
Python中使用OpenSSL验证SSL证书
本示例代码演示了如何使用Python中的OpenSSL库对SSL证书进行验证,包括证书链验证和证书有效期验证。import sslfrom OpenSSL import SSLimport so
Python 3.6
Python
2023-04-29 03:58
FreeBSD利用OpenSSL构建TLS/SSL连接示例代码
介绍如何在FreeBSD操作系统下使用OpenSSL构建TLS/SSL连接的示例代码。通过此示例代码,用户可以了解如何使用OpenSSL库提供的API建立安全连接。该示例代码可适用于其他的FreeBS
OpenSSL 1.1.1
FreeBSD操作系统
2023-05-30 09:50
使用Python和OpenSSL证书验证SSL连接
该示例代码演示如何使用Python和OpenSSL证书验证SSL连接,包括如何构建SSL上下文、如何加载证书和如何验证证书。这是一种常见的SSL连接的安全性措施,确保连接的两端都是受信任的。impo
Python 3.6.9,OpenSSL 1.1.1
Python
2023-04-01 18:40