函式名稱:openssl_get_publickey()
適用版本:PHP 4 >= 4.0.6, PHP 5, PHP 7
函式描述:openssl_get_publickey() 函式從證書中獲取公鑰,並返回一個可用於其他 OpenSSL 函式的公鑰資源。
語法:resource openssl_get_publickey ( mixed $cert )
引數:
- $cert:必需,證書路徑或者證書字串。
返回值:返回一個公鑰資源,如果失敗則返回 FALSE。
示例:
- 從證書檔案中獲取公鑰:
$certFile = 'path/to/certificate.crt';
$publicKey = openssl_get_publickey(file_get_contents($certFile));
if ($publicKey === false) {
echo "Failed to get public key from certificate.";
} else {
echo "Public key obtained successfully.";
// 使用 $publicKey 進行其他操作
openssl_free_key($publicKey); // 記得釋放資源
}
- 從證書字串中獲取公鑰:
$certString = '-----BEGIN CERTIFICATE-----
MIIC+zCCAeOgAwIBAgIJALpXgTt+4RkGMA0GCSqGSIb3DQEBCwUAMDMxMTAvBgNV
BAMTKHRlc3QgY2VydGlmaWNhdGUgYXV0aG9yaXR5IGtleSBkZXBsb3ltZW50IGlu
Zm9ybWF0aW9uIFNlcnZlciBDQTAeFw0xOTA2MjMxNjI2NTlaFw0yOTA2MjAxNjI2
NTlaMDMxMTAvBgNVBAMTKHRlc3QgY2VydGlmaWNhdGUgYXV0aG9yaXR5IGtleSBk
ZXBsb3ltZW50IGluZm9ybWF0aW9uIFNlcnZlciBDQTCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBAM7FQW7s9T0iKvVum1BtKqXgBc8qG5wK9g9jv0xU1bZ9
7YrLlK2sH5gOqDz9q9HxVnL5rVUoZ0n8oJqRt2jv6LOnV4bKp4P4qD7hE3a9f3Gd
6B4I+LXpX4ZV1KJkD7Hj4cmYj8sNpTcB6t7g7pMfVJXc1Z8WnFf9GpUWwH4DpLsE
WqR+eK7H0KUe3q5r9hQhIe1d9Y5DhA2y7qfHkm+Y6WYt8fF4v3t3T5V8w6vXU9vF
L9M1zg0j3Fz5W5KX9T6RnUdQ5L8eXxkR2DdP3DQZqM7W5ZwR5z7wYjWbT3rZfW6H
QyY4sJ4x3J+7uXr9Ea6P6U2LMR5/5X5rJQgq0UZQVZ1pQ3GJ3XbN0Y8W4ND/d0hG
6wP1gPLkYqsCAwEAAaMhMB8wHQYDVR0OBBYEFKi8cLhB5Kk2a4iB3f1HJ5h6p3h0
MBIGA1UdEwEB/wQIMAYBAf8CAQEwDQYJKoZIhvcNAQELBQADggEBAH0zHr7D1d+Y
Fz8hjAzxw7xw58XUOJm9K0hB8T5vB8b5Km7obwX2Z8zjCpY5zFjDgQfVh7P9F8gO
4C3O9lHf6N8KbZ/4e3WwC5L3Bj1e7X8FQl5iG0F6EazS+V7Kd7Y6N9a4R9i+3QK7
2tjIcJWm3QhA1Xo5P2bYjg5iLZxUd7b5z8uI7rOYf5aW5A5BvBMJs1Q8Lbq6qzF6
G0pBDr79tXsJqG1f9u9B5pOvUZ4aXlQn8Vn3GnWQ2oQW3U0v2h0MvT7jB4OaZo3A
QDQeOgUZiC4R0Qf8aU6Jl2E9DxK+2K8XZwNn4W2Pf0iRqkZT9eP7bA9K0G0fG9zX
Czj1+2y7WIZgZg0Xk9FyDk0=
-----END CERTIFICATE-----';
$publicKey = openssl_get_publickey($certString);
if ($publicKey === false) {
echo "Failed to get public key from certificate string.";
} else {
echo "Public key obtained successfully.";
// 使用 $publicKey 進行其他操作
openssl_free_key($publicKey); // 記得釋放資源
}
以上示例演示瞭如何使用 openssl_get_publickey() 函式從證書中獲取公鑰。請注意,獲取到的公鑰資源必須在使用完畢後使用 openssl_free_key() 函式釋放,以避免資源洩露。