openssl_csr_sign

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

openssl_csr_sign — 다른 인증서(또는 자체)로 CSR에 서명하고 인증서 생성


설명

openssl_csr_sign(
    OpenSSLCertificateSigningRequest|string $csr,
    OpenSSLCertificate|string|null $ca_certificate,
    OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key,
    int $days,
    ?array $options = null,
    int $serial = 0
): OpenSSLCertificate|false
                

openssl_csr_sign()은 주어진 CSR에서 x509 인증서를 생성합니다.

참고: 이 함수가 올바르게 작동하려면 유효한 openssl.cnf가 설치되어 있어야 합니다. 자세한 내용은 설치 섹션 아래의 참고 사항을 참조하십시오.


매개변수

csr
이전에 openssl_csr_new()에 의해 생성된 CSR입니다. file://path/to/csr 또는 openssl_csr_export()에 의해 생성된 내보낸 문자열로 지정된 경우 PEM으로 인코딩된 CSR의 경로일 수도 있습니다.
ca_certificate
생성된 인증서는 ca_certificate에서 서명합니다. ca_certificatenull이면 생성된 인증서는 자체 서명된 인증서가 됩니다.
private_key
private_keyca_certificate에 해당하는 개인 키입니다.
days
days specifies the length of time for which the generated certificate will be valid, in days.
options
options으로 CSR 서명을 미세 조정할 수 있습니다. options에 대한 자세한 내용은 openssl_csr_new()를 참조하십시오.
serial
발급된 인증서의 선택적 일련 번호입니다. 지정하지 않으면 기본값은 0입니다.

반환 값

성공하면 OpenSSLCertificate를, 실패하면 false를 반환합니다.


변경 로그

버전 설명
8.0.0 성공하면 이 함수는 이제 OpenSSLCertificate 인스턴스를 반환합니다. 이전에는 OpenSSL X.509 CSR 유형의 resource가 반환되었습니다.
8.0.0 csr은 이제 OpenSSLCertificateSigningRequest 인스턴스를 허용합니다. 이전에는 OpenSSL X.509 CSR 유형의 resource가 허용되었습니다.
8.0.0 ca_certificate는 이제 OpenSSLCertificate 인스턴스를 허용합니다. 이전에는 OpenSSL X.509 CSR 유형의 resource가 허용되었습니다.
8.0.0 private_key는 이제 OpenSSLAsymmetricKey 또는 OpenSSLCertificate 인스턴스를 허용합니다. 이전에는 OpenSSL key 또는 OpenSSL X.509 유형의 resource가 허용되었습니다.

Examples

예제 #1 openssl_csr_sign() example - signing a CSR (how to implement your own CA)

                  
<?php
// Let's assume that this script is set to receive a CSR that has
// been pasted into a textarea from another page
$csrdata = $_POST["CSR"];

// We will sign the request using our own "certificate authority"
// certificate.  You can use any certificate to sign another, but
// the process is worthless unless the signing certificate is trusted
// by the software/users that will deal with the newly signed certificate

// We need our CA cert and its private key
$cacert = "file://path/to/ca.crt";
$privkey = array("file://path/to/ca.key", "your_ca_key_passphrase");

$usercert = openssl_csr_sign($csrdata, $cacert, $privkey, 365, array('digest_alg'=>'sha256') );

// Now display the generated certificate so that the user can
// copy and paste it into their local configuration (such as a file
// to hold the certificate for their SSL server)
openssl_x509_export($usercert, $certout);
echo $certout;

// Show any errors that occurred here
while (($e = openssl_error_string()) !== false) {
    echo $e . "\n";
}
?>