Как установить имя эмитента для объекта типа x509_req

Я пытаюсь подписать существующий CSR с помощью закрытого ключа сертификата CA. Так что я планирую использовать X509_req_sign() API. Я создал x509_req Объект, прочитав файл CSR. Я также извлек имя субъекта из сертификата CA.

Но я не понимаю, как я могу установить имя эмитента x509_req объект. Я нашел API x509_set_issuer_name() существует, но это для объекта типа X509, Есть ли подобный API для x509_Req типа тоже? Какой простой способ подписать существующий csr с помощью закрытого ключа сертификатов CA? Я должен сделать все это, используя только код C ++.

Любые предложения, пожалуйста?

0

Решение

Имя и информация эмитента должны быть заполнены выдающим CA, а не субъектом. Пожалуйста, обратитесь к структуре КСО на https://tools.ietf.org/html/rfc2986#page-5.

Поскольку имя эмитента отсутствует в структуре, вы не можете установить. Вы можете увидеть определение структуры на 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;
};

Как вы можете видеть, что в структуре запроса нет имени эмитента, вы не можете установить его.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]