English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP 기본 강의

PHP 고급 강의

PHP & MySQL

PHP 참조 설명서

PHP openssl_pkey_export_to_file() 함수 사용법 및 예제

PHP OpenSSL 함수 설명서

openssl_pkey_export_to_file() 함수는 키를 파일로 내보내기 위해 사용됩니다.

정의와 사용법

openssl_pkey_export_to_file()함수는 키를 파일로 내보내기 때문에 사용됩니다.

openssl_pkey_export_to_file() 함수는 PEM 형식으로 키를 저장합니다. PEM은 Privacy를 의미합니다.-Enhanced Mail은 주로 암호화된 키와 인증서를 저장합니다.

문법

openssl_pkey_export_to_file ( mixed $key , string $outfilename [, string $passphrase [, array $configargs ]] ) : bool

매개변수

순번매개변수설명
1

key

파일로 출력할 키입니다.

2

outfilename

outfilename은 .pem 파일을 저장할 경로입니다.

3

passphrase

파일을 보호할 수 있는 암호입니다.

4

configargs

configargs는 함수에 비밀키를 생성하기 위해 제공해야 하는 매개변수입니다./공개 키 쌍의 설정 세부 정보는 다음과 같습니다.

설정 매개변수

openssl_pkey_new()는 기본적으로 openssl.cnf에 존재하는 설정 세부 정보를 사용하지만, configargs를 사용하여 그들을 대체할 수 있습니다. 설정 세부 정보는 다음과 같습니다:

configargs유형openssl.conf에서 사용하는 키설명
digest_alg문자열default_mdopenssl_get_md_methods()에서 얻은 요약 메서드입니다.
x509_extensions문자열x509_extensionsx509证书에 사용할 확장자입니다.
req_extensions문자열req_extensionsCSR을 생성할 때 사용할 확장자입니다.
private_key_bits정수default_bits비밀키 생성 시 사용할 비트수를 지정합니다.
private_key_type정수none생성할 비밀키 유형을 지정합니다. OPENSSL_KEYTYPE_DSA, OPENSSL_KEYTYPE_DH, OPENSSL_KEYTYPE_RSA 또는 OPENSSL_KEYTYPE_EC 중 하나일 수 있습니다. 기본 값은 OPENSSL_KEYTYPE_RSA입니다.
encrypt_key부울값encrypt_key인출된 키가 암호화되었는지 여부를 알고 싶으신가요?
encrypt_key_cipher정수none암호 상수 예를 들어 OPENSSL_CIPHER_RC2_40(정수), OPENSSL_CIPHER_RC2_128(정수), OPENSSL_CIPHER_RC2_64(정수), OPENSSL_CIPHER_DES(정수), OPENSSL_CIPHER_3DES(정수) 등입니다.
curve_name문자열noneopenssl_get_curve_names() 함수가 반환하는 곡선 이름 중 하나입니다.
config문자열N/Aopenssl.conf 파일에서 필요한 경우 설정을 변경하고 여기에 경로를 제공할 수 있습니다.

返回值

PHP openssl_pkey_export_to_file()函数如果成功则返回true,否则返回false。

PHP版本

此函数将从大于5.0.0的PHP版本开始工作。

인스턴스1

openssl_pkey_export_to_file()的工作-

<?php
        //private key 생성
	$privkey = openssl_pkey_new();
	openssl_pkey_export_to_file($privkey, 'C:/xampp/htdocs/modules/openssl/keytest.pem');
?>

存储在文件keytest.pem中的详细信息如下-

-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDaqNK97A+mL9Xu
IDt3rz9yfFUvrLcDEvsDa9JsjQByJVbdRtaNl6nfg91/LfKO8zAeG8srd292jcYk
9MgBhkpMCHvF/QhWjA4IdPLdWHCbYfjF/LHmo/z022/FqTnjQtFws992/ClhZdo6
kpDlU/H2lmbnCwrsqHlqcQ7bzBgC5U5SW0t3A03PSqxQTIFPOHi1Yx1Il5jH/H11
6UXDKogAWsseRpdwVdsCy6Wj3rkybr1pr7CDkHSS49MAvJ4e6xhs+je12lrtyChR
ZTIYLICzEG7a1n0BPGAI1bQcivHXNipUkAYFn221gKRuB+9SQvC3VKbNXy8Oc7N9
HEahD8S3AgMBAAECggEBAKzEU68og7zlcvzxjsskNtd4kb5Xk0rkhlzPprWKO131
TssLm57IxLoMcMh6P3rff5dqkn9HoVRk9LhiiF1cA/xLf7CSGzJ2+ueHsBVgOaks
IeodnVsFG2tEru3YphqAwwdvuBNFblS8q084WzA3waj6cVgAi6MuArEtn3XfruEp
Yryc4Y1I1SB92x4y85tZ/PcomumPH0djKQeuhzy7f7GloJRfdshNENRbkdLc65N5
j8hy7WxMSa0dpJ3ZJMmgNfek9nALntSZfOsHGMZ/Wog8eV6+HzCwqqrMkR15pZI1
HqvVszU1iwoUJvlGoxInJOqJ2c6lBSBOBBR8DuuQixECgYEA+8RKXcw0U3VU8zJO
NTFzSDEtFYKZ5Bg4IPaYSTSo/ojiL3VrLeocRq3/2zdeCw8wx9eNZbcBW93lWVxK
q2G0X4XgonorEEONBvL9aE/D7wBCMYPWDXd/KQVZW8CPwcy10g2oIi3SqbcTQ/gT
fcmcHAQD2wVgo9XBlg24ESAP01MCgYEA3lYGasOvDweca5GCiP4m1oOH605haIUU
f5CDWXbZ6QjcoUQQB0CoDtTl3QpBd3KGbd+PbqU8xb44+LhrVIsjUyZs6k+eLACe
Dufzq00mIRSl/TZ0R3q17lAMmxId9QramDScpmqqqXonpOpdEoonThynhLyANgX3
eYGLXeqaII0CgYBPVi/JFwx2MEcwy+1xPcACQ9zdJmawRiGJ4atjhkCq1R/RrMK1
mUyHyVUTE4ODIKpSj05zexPmiyo22qp9DzDz2RBMowrm+SJ7yh6ovFoV+pLhX5YY
cEuV9aWPEEM84vF42+zbuGzmJlbf2FDsFpgnC+zbG/q0Jiv2ySPz4ZKbGQKBgQDM
ek9ih1+LshNAts1Xkm5DoSoy1Z4uUx48B7tVX0If2N+YjRE0qlklctWIiXMWGMTb
bdzrBJq0vjKFRI6pbWFqio9mmxy8GUFEMjzekZB8ohHao+cjCg8iAorlXy8f+wB5
NQHQ547XWRn2yPgaIebuJtpF8Fr11Fz6aZK0KBvhzQKBgGRwuxq6IhIROupoDRpU
RHuqICeQQYcf7Cfk7+ZyYJnA1fbOowj4Q5zvbWa6N2Ygyq2KIl0P5YL4Atb7aRKS
e6ol8lIKZM9ysbS+wR0OhhTJs/9CqpgvDbYNQFiaVZtGRpSNCxHkhn0cAR7lzK4P
ROQC7p9zXJhAmzE8/hTD9eaH
-----END PRIVATE KEY-----

인스턴스2

PEM 파일에서 키를 가져옵니다-

<?php
        //private key 생성
	$privkey = openssl_pkey_new();
	openssl_pkey_export_to_file($privkey, 'C:/xampp/htdocs/modules/openssl/keytest.pem');
	//private key를 포함한 .pem 파일을 사용합니다.
	$testprivatekey = openssl_get_privatekey(file_get_contents('C:/xampp/htdocs/modules/openssl/keytest.pem'));
	if ($testprivatekey === false) {
		var_dump(openssl_error_string());
	} else {
		//var_dump($testprivatekey);
		$key_details = openssl_pkey_get_details($testprivatekey);
		print_r($key_details["key"]);	
	}
?>

저장된 파일 test-csr1의 .pem 파일의 상세 정보는 다음과 같습니다-

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnbGAblUCP6sZvbi2JM4G
PcLmKK9flGQq6EE+yvMWrEUnIPGOLJUEB06dE8inIMQTYDmdmjn7HgUAlIDaViw+
aSv3XBZJqBTm7xtW4488oKuCzdBuJbnomtGttFWOk4cjb8kG+Kza6v0AB+P0eUru
cPkwnJF4F1pGY1pszSMsL3/s7OcIzjiKUKu5vHJxUWO7baVovq+gv9+O24Pd0GhB
t6RC/pgK/42YqZ2YW5V+JiuCFFkTVPusviunAOLLpDwoyPIROvXdML2TKopiowOd
nmOkNRrW81duRF8Z4dcn7jnf2sKExpLBgAtcV05OufZIv3VeeTD0ISbCJhn0zmx/
SQIDAQAB
-----END PUBLIC KEY-----

PHP OpenSSL 함수 설명서