• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • openssl_pkey_get_private()

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

    获取私钥

    说明

    openssl_pkey_get_private(mixed $key[,string $passphrase= ""]): resource

    openssl_get_privatekey()解析$key供其他函数使用。

    参数

    $key

    $key可以是如下密钥之一:

    1. 如下格式的字符串file://path/to/file.pem。该文件必须包含 PEM 编码的证书或者私钥(可能都包含了).
    2. 一个PEM格式的私钥。

    $passphrase

    如果指定的密钥已被加密了(受密码保护),可选参数$passphrase是必须要的。

    返回值

    成功,返回真实的密钥资源标识符,失败,返回FALSE.

    It's actually "file://key.pem" when you want to give a relative path using unix systems. It will be three '/' in case of absolute path (e.g "file:///home/username/..."). But this path consists of two '/' originated from "file://" and one '/' from the fact that home is a subfolder of the unix filesystem's root directory ("/home/username/..."). This two part will be concatenated and you will get three '/' characters following each other.
    So you only have to concatenate "file://" with an existing path string in every case.
    Please note that "file://path/to/file.pem" in documentation means file protocol + file path. In UNIX like OS, that is something like file:///rsa_private_key.pem. There is THREE slashes in the path string, not TWO.
    Since this function can be used to load a PEM encoded string also, those that are using it relying on user input should be sure to check that the passed data is indeed a PEM encoded string and not a malicious file path.
    The following should be sufficient.
    <?PHP
     $private = trim($_POST['private']);
     if (strpos($private, '-----') !== 0) return false;
    ?>