
openssl_csr_new 함수는 RSA 키와 CSR 생성을 위한 옵션을 사용하여 CSR를 생성하는 함수입니다. 이 함수는 RSA 키를 생성하고 CSR에 포함될 정보를 설정하는 역할을 합니다.
openssl_csr_new 함수는 다음과 같은 옵션을 사용할 수 있습니다.
- key: RSA 키를 생성하는 옵션입니다. 이 옵션은 RSA 키의 비트 수를 지정합니다.
- digest: CSR의 해시 알고리즘을 지정하는 옵션입니다. 예를 들어, SHA-256을 사용하려면 "sha256"를 지정합니다.
- pub_key: CSR에 포함될 공개 키를 지정하는 옵션입니다.
- attributes: CSR에 포함될 속성을 지정하는 옵션입니다. 예를 들어, countryName, organizationName, emailAddress 등이 있습니다.
- ext: CSR에 포함될 확장 속성을 지정하는 옵션입니다.
예를 들어, openssl_csr_new 함수를 사용하여 RSA 키와 CSR를 생성하는 코드는 다음과 같습니다.
#hostingforum.kr
c
#include
#include
#include
int main() {
// RSA 키 생성
RSA *rsa = RSA_new();
BIGNUM *bne = BN_new();
BN_set_word(bne, 65537);
RSA_generate_key_ex(rsa, 2048, bne, NULL);
// CSR 생성 옵션
X509_NAME *subject = X509_NAME_new();
X509_NAME_add_entry_by_txt(subject, "C", MBSTRING_ASC, (const unsigned char *)"KR", -1, -1, 0);
X509_NAME_add_entry_by_txt(subject, "O", MBSTRING_ASC, (const unsigned char *)"example.com", -1, -1, 0);
X509_NAME_add_entry_by_txt(subject, "CN", MBSTRING_ASC, (const unsigned char *)"example.com", -1, -1, 0);
// CSR 생성
X509_REQ *req = X509_REQ_new();
X509_NAME_set(req->subject, subject);
X509_REQ_set_version(req, 0);
X509_REQ_set_pubkey(req, rsa);
X509_REQ_set_issuer_name(req, subject);
X509_REQ_set_subject_name(req, subject);
// CSR 생성 옵션
X509_REQ_set_key_usage(req, X509_KEYUSAGE_DIGITAL_SIGNATURE | X509_KEYUSAGE_NON_REPUDIATION);
X509_REQ_set_extended_key_usage(req, X509_EXTKEYUSAGE_SERVER_AUTH | X509_EXTKEYUSAGE_CLIENT_AUTH);
// CSR 생성
X509_REQ_sign(req, rsa, EVP_sha256());
// CSR 저장
BIO *bio = BIO_new(BIO_s_mem());
PEM_write_bio_X509_REQ(bio, req);
char *csr = NULL;
long len = BIO_get_mem_data(bio, &csr);
printf("%sn", csr);
// CSR 삭제
X509_REQ_free(req);
RSA_free(rsa);
X509_NAME_free(subject);
BIO_free(bio);
return 0;
}
이 코드는 RSA 키를 생성하고 CSR에 포함될 정보를 설정한 후 CSR를 생성하고 저장합니다. CSR 생성 옵션은 countryName, organizationName, emailAddress, key usage, extended key usage 등이 있습니다.
2025-03-28 21:29