
openssl_csr_sign 함수를 사용할 때, CA 인증서를 사용하여 CSR 인증서를 서명하는 과정을 설명드리겠습니다.
CA 인증서를 사용하여 CSR 인증서를 서명하는 과정을 다음과 같이 설명할 수 있습니다.
1. CA 인증서의 경로를 지정해야 합니다. CA 인증서의 경로는 절대 경로 또는 상대 경로로 지정할 수 있습니다. 예를 들어, CA 인증서의 경로는 `/path/to/ca.crt` 또는 `./ca.crt`로 지정할 수 있습니다.
2. CA 인증서의 비밀키를 지정해야 합니다. CA 인증서의 비밀키는 PEM 형식으로 지정해야 합니다. 예를 들어, CA 인증서의 비밀키는 `/path/to/ca.key` 또는 `./ca.key`로 지정할 수 있습니다.
openssl_csr_sign 함수를 사용하여 CSR 인증서를 생성하고 CA 인증서를 사용하여 CSR 인증서를 서명하는 예제를 다음과 같이 설명할 수 있습니다.
#hostingforum.kr
php
// CSR 인증서를 생성하는 함수
function create_csr($common_name, $organization_name, $organization_unit_name, $city, $state, $country) {
$dn = array(
'countryName' => $country,
'stateOrProvinceName' => $state,
'localityName' => $city,
'organizationName' => $organization_name,
'organizationalUnitName' => $organization_unit_name,
'commonName' => $common_name,
);
$key = openssl_pkey_new();
$csr = openssl_csr_new($dn, $key);
openssl_csr_export($csr, $csr_string);
return $csr_string;
}
// CA 인증서를 사용하여 CSR 인증서를 서명하는 함수
function sign_csr($csr_string, $ca_cert_path, $ca_key_path) {
$ca_cert = file_get_contents($ca_cert_path);
$ca_key = file_get_contents($ca_key_path);
$signed_cert = openssl_x509_parse($ca_cert);
$signed_cert['extensions']['subjectAltName'][] = 'DNS:' . 'example.com';
$signed_cert['extensions']['subjectAltName'][] = 'IP:' . '192.168.1.100';
$signed_cert_string = openssl_x509_export($signed_cert, $signed_cert_string);
$signed_cert = openssl_x509_parse($signed_cert_string);
$signed_cert['extensions']['subjectAltName'][] = 'DNS:' . 'example.com';
$signed_cert['extensions']['subjectAltName'][] = 'IP:' . '192.168.1.100';
$signed_cert_string = openssl_x509_export($signed_cert, $signed_cert_string);
return $signed_cert_string;
}
$common_name = 'example.com';
$organization_name = 'Example Organization';
$organization_unit_name = 'Example Unit';
$city = 'Seoul';
$state = 'Seoul';
$country = 'KR';
$csr_string = create_csr($common_name, $organization_name, $organization_unit_name, $city, $state, $country);
$ca_cert_path = '/path/to/ca.crt';
$ca_key_path = '/path/to/ca.key';
$signed_cert_string = sign_csr($csr_string, $ca_cert_path, $ca_key_path);
echo $signed_cert_string;
이 예제에서는 `create_csr` 함수를 사용하여 CSR 인증서를 생성하고 `sign_csr` 함수를 사용하여 CA 인증서를 사용하여 CSR 인증서를 서명합니다. `sign_csr` 함수에서는 CA 인증서의 경로와 비밀키를 지정하고 CSR 인증서를 서명합니다. 서명된 인증서를 생성한 후, 서명된 인증서를 출력합니다.
2025-07-02 12:43