c++ openssl关闭https证书验证
时间: 2023-07-05 08:20:23 浏览: 92
在使用 OpenSSL 进行 HTTPS 请求时关闭证书验证可以通过以下步骤实现:
1. 创建 SSL 上下文对象
```
SSL_CTX* ctx = SSL_CTX_new(TLS_client_method());
```
2. 设置 SSL 上下文对象的验证模式为不验证
```
SSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, nullptr);
```
3. 创建 SSL 连接对象
```
SSL* ssl = SSL_new(ctx);
```
4. 在 SSL 连接对象上执行 SSL 握手操作
```
SSL_set_fd(ssl, socket_fd);
SSL_connect(ssl);
```
需要注意的是,关闭证书验证会使通信过程变得不安全,因此应该仅在开发和测试过程中使用。在正式环境中,一定要确保证书验证被启用。
相关问题
openssl 生成 https证书
要使用 OpenSSL 生成 HTTPS 证书,可以按照以下步骤操作:
1. 打开终端或命令提示符窗口。
2. 生成私钥:
```
openssl genpkey -algorithm RSA -out server.key
```
这将生成一个未加密的 RSA 私钥,并将其保存到名为 `server.key` 的文件中。
3. 生成证书签名请求 (CSR):
```
openssl req -new -key server.key -out server.csr
```
在这一步中,您需要输入一些证书信息,例如组织名称、国家、地区等。请根据您的实际情况输入正确的信息。
4. 使用 CSR 文件和私钥文件生成自签名证书:
```
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
```
这将使用 CSR 文件和私钥文件生成一个有效期为 365 天的自签名证书,并将其保存到名为 `server.crt` 的文件中。
现在您已经生成了一个 HTTPS 证书,其中 `server.key` 包含私钥,而 `server.crt` 包含公钥。
c++ openssl生成证书
在 C++ 中使用 OpenSSL 生成证书可以分为以下几个步骤:
1. 初始化 OpenSSL 库:
```c++
#include <openssl/ssl.h>
#include <openssl/err.h>
// 初始化 OpenSSL 库
SSL_library_init();
SSL_load_error_strings();
OpenSSL_add_all_algorithms();
```
2. 生成证书请求:
```c++
// 创建 X509_REQ 对象
X509_REQ* req = X509_REQ_new();
// 添加公钥到证书请求
EVP_PKEY* pkey = EVP_PKEY_new();
RSA* rsa = RSA_generate_key(2048, RSA_F4, NULL, NULL);
EVP_PKEY_assign_RSA(pkey, rsa);
X509_REQ_set_pubkey(req, pkey);
// 添加主题信息
X509_NAME* name = X509_NAME_new();
X509_NAME_add_entry_by_NID(name, NID_commonName, MBSTRING_UTF8, (unsigned char*)"example.com", -1, -1, 0);
X509_REQ_set_subject_name(req, name);
// 生成证书请求
X509_REQ_sign(req, pkey, EVP_sha256());
```
3. 生成自签名证书:
```c++
// 创建 X509 对象
X509* cert = X509_new();
// 设置证书版本和序列号
ASN1_INTEGER_set(X509_get_serialNumber(cert), 1);
X509_gmtime_adj(X509_get_notBefore(cert), 0);
X509_gmtime_adj(X509_get_notAfter(cert), 31536000L);
// 设置证书请求信息
X509_set_subject_name(cert, X509_REQ_get_subject_name(req));
X509_set_issuer_name(cert, X509_REQ_get_subject_name(req));
X509_set_pubkey(cert, X509_REQ_get_pubkey(req));
// 签名证书
X509_sign(cert, pkey, EVP_sha256());
```
4. 保存证书和私钥:
```c++
// 保存证书
FILE* fp = fopen("cert.pem", "w");
PEM_write_X509(fp, cert);
fclose(fp);
// 保存私钥
fp = fopen("key.pem", "w");
PEM_write_PrivateKey(fp, pkey, NULL, NULL, 0, NULL, NULL);
fclose(fp);
```
注意:在实际使用中,应该对私钥文件进行保护,例如设置只有 root 用户可读写。