如何将颁发者名称设置为x509_req类型对象
How to set issuer name to x509_req type object
我正在尝试使用 CA 证书的私钥对现有 csr 进行签名。所以我打算使用X509_req_sign()
API。我通过读取 csr 文件创建了一个x509_req
对象。我还从 CA 证书中提取了使用者名称。
但是我不明白如何将颁发者名称设置为x509_req
对象。我发现存在一个 API x509_set_issuer_name()
但它适用于类型 X509
的对象。x509_Req
类型也有类似的 API 吗?使用 CA 证书私钥签署现有 CSR 的简单方法是什么?我必须仅使用C++代码来完成所有这些操作。
有什么建议吗?
颁发者名称和信息应由颁发 CA 填写,而不是由主题填写。请参阅 https://www.rfc-editor.org/rfc/rfc2986#page-5 的CSR结构。
由于结构中不存在颁发者名称,因此无法设置。您可以在 https://github.com/openssl/openssl/blob/b69ae442a3b3e168d73c53dcd04bacf33eee8569/crypto/include/internal/x509_int.h
/* PKCS#10 certificate request */
struct X509_req_info_st {
ASN1_ENCODING enc; /* cached encoding of signed part */
ASN1_INTEGER *version; /* version, defaults to v1(0) so can be NULL */
X509_NAME *subject; /* certificate request DN */
X509_PUBKEY *pubkey; /* public key of request */
/*
* Zero or more attributes.
* NB: although attributes is a mandatory field some broken
* encodings omit it so this may be NULL in that case.
*/
STACK_OF(X509_ATTRIBUTE) *attributes;
};
struct X509_req_st {
X509_REQ_INFO req_info; /* signed certificate request data */
X509_ALGOR sig_alg; /* signature algorithm */
ASN1_BIT_STRING *signature; /* signature */
CRYPTO_REF_COUNT references;
CRYPTO_RWLOCK *lock;
};
如您所见,请求结构中没有颁发者名称,因此无法设置它。
相关文章:
- 如何在C++中使用X509证书模在令牌中查找私钥
- 将 boost 序列化对象的 asio::streambuf 表示转换为 Beast 的 DynamicBody req.body()
- "Body requirements not met"将 req 传递给 c++ 中的方法(Boost Beast 库)
- C++/OpenSSL 将 PEM 加载到 STACK_OF(X509) 中
- 使用 zmq::p roxy 和 REQ/REP 模式
- 为什么 zmq REQ-REP 不起作用?
- 如何在 C++ 中将 X509 证书转换为公钥字符串
- RSA公共加密使用X509证书C 的公钥
- 如何使用相应的 X509 证书验证专用 RSA 签名签名
- EAGAIN 在 zeromq REQ/REP 上收到,没有阻塞套接字
- 使用公钥 X509 V3 (PKCS7) 使用 AES 128 模式 cbc 加密文件
- 获取X509代码签名证书的序列号,以不受管理的C/C 签名
- 为什么ZeroMQ req rep在C++和Python之间给我一个空响应
- 如何使用openssl解析带有奇怪OID的x509证书
- ZeroMQ REQ/REP如何处理多个客户端
- OpenSSL - 通过内存将 X509* x509 转换为 file-BIO*
- OpenSSL X509证书获得弦乐人类可读
- 将DER编码的X509证书缓冲区转换为Windows cert_context结构
- 读取X509认证以对其进行处理
- 在C或C 中解析X509