라이브러리
[PHP] openssl_spki_new - 새로 서명된 공개 키와 챌린지 생성
openssl_spki_new 함수
`openssl_spki_new` 함수는 OpenSSL 라이브러리에 포함된 함수로, 공개 키 인프라 (Public Key Infrastructure, PKI) 인증서를 생성하는 데 사용됩니다. 이 함수는 공개 키와 개인 키를 기반으로 인증서를 생성하고, 인증서에 포함될 정보를 지정할 수 있습니다.
함수 구조
`openssl_spki_new` 함수의 구조는 다음과 같습니다.
#hostingforum.kr
php
openssl_spki_new ( string $key , array $info [, int $options ] ) : resource
* `$key`: 개인 키를 포함하는 공개 키 인프라 (PKI) 인증서를 생성하기 위한 개인 키입니다.
* `$info`: 인증서에 포함될 정보를 지정하는 배열입니다. 이 배열에는 다음 키가 포함될 수 있습니다.
+ `subject`: 인증서의 주체 이름입니다.
+ `issuer`: 인증서의 발급자 이름입니다.
+ `notBefore`: 인증서의 유효 시작 날짜입니다.
+ `notAfter`: 인증서의 유효 종료 날짜입니다.
+ `serialNumber`: 인증서의 시리얼 번호입니다.
+ `publicKeyAlgorithm`: 인증서의 공개 키 알고리즘입니다.
+ `publicKey`: 인증서의 공개 키입니다.
* `$options`: 인증서 생성 옵션입니다. 이 옵션은 인증서의 생성 방법을 지정합니다.
예제
다음 예제에서는 `openssl_spki_new` 함수를 사용하여 공개 키 인프라 (PKI) 인증서를 생성하는 방법을 보여줍니다.
#hostingforum.kr
php
<?php
// 개인 키 생성
$privateKey = openssl_pkey_new();
openssl_pkey_export($privateKey, $privateKeyString);
// 인증서 정보 생성
$info = array(
'subject' => 'example.com',
'issuer' => 'example.com',
'notBefore' => '2022-01-01 00:00:00',
'notAfter' => '2023-01-01 00:00:00',
'serialNumber' => '1234567890',
'publicKeyAlgorithm' => 'RSA',
'publicKey' => $privateKeyString
);
// 인증서 생성
$spki = openssl_spki_new($privateKey, $info);
// 인증서 정보 출력
echo "인증서 정보:
";
echo " 주체 이름: " . $info['subject'] . "
";
echo " 발급자 이름: " . $info['issuer'] . "
";
echo " 유효 시작 날짜: " . $info['notBefore'] . "
";
echo " 유효 종료 날짜: " . $info['notAfter'] . "
";
echo " 시리얼 번호: " . $info['serialNumber'] . "
";
echo " 공개 키 알고리즘: " . $info['publicKeyAlgorithm'] . "
";
echo " 공개 키: " . $info['publicKey'] . "
";
// 인증서 파일로 저장
$spkiFile = 'example.com.spki';
file_put_contents($spkiFile, $spki);
echo "인증서 파일이 생성되었습니다.
";
?>
이 예제에서는 개인 키를 생성하고, 인증서 정보를 지정한 다음 `openssl_spki_new` 함수를 사용하여 인증서를 생성합니다. 생성된 인증서는 `example.com.spki` 파일로 저장됩니다.
참고
* `openssl_spki_new` 함수는 OpenSSL 라이브러리에 포함된 함수로, PHP 7.2 이상에서 사용할 수 있습니다.
* 인증서 생성 옵션 (`$options`)은 인증서의 생성 방법을 지정합니다. 예를 들어, `OPENSSL_SPKI_OPTIONS_NO_ENCRYPT` 옵션을 사용하면 인증서를 암호화하지 않습니다.
* 인증서 정보 (`$info`) 배열에는 인증서에 포함될 정보를 지정하는 키가 포함됩니다. 예를 들어, `subject` 키는 인증서의 주체 이름을 지정합니다.
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.