无需言 做自己 业 ,精于勤 荒于嬉.
- OpenSSL 函数 openssl_x509_checkpurpose 验证是否可以为特定目的使用证书
-
发表日期:2021-07-01 08:55:24 | 来源: | 分类:OpenSSL 函数
-
openssl_x509_checkpurpose
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
openssl_x509_checkpurpose — 验证是否可以为特定目的使用证书
说明
openssl_x509_checkpurpose(
mixed$x509cert,
int$purpose,
array$cainfo= array(),
string$untrustedfile= ?
): intopenssl_x509_checkpurpose() 检查证书以查看它是否可用于指定目的
purpose.参数
-
x509cert -
被检查的证书。
-
purpose -
这些选项不是位字段——您只能指定一个字段!openssl_x509_checkpurpose() 目的 常量名 描述 X509_PURPOSE_SSL_CLIENT 证书是否可以用于SSL连接的客户端? X509_PURPOSE_SSL_SERVER 证书是否可以用于SSL连接的服务器端? X509_PURPOSE_NS_SSL_SERVER 证书是否可以用于Netscape SSL服务器? X509_PURPOSE_SMIME_SIGN 证书是否可以用来签名 S/MIME 邮件? X509_PURPOSE_SMIME_ENCRYPT 正式是否可用用来加密 S/MIME 邮件? X509_PURPOSE_CRL_SIGN 证书是否可以用来签名证书撤销列表(CRL)? X509_PURPOSE_ANY 证书是否可以用于任何目的? -
cainfo -
cainfo应该是一个受信任的 CA 文件/文件夹组成的数组,如Certificate Verification所描述的一样。 -
untrustedfile -
如果指定,这应该是PEM编码文件的名称,该文件持有证书,可以用来帮助验证证书,尽管从该文件中获得的证书不受信任。
返回值
如果证书可以用于预期目的,返回
true,如果不行,则返回false错误便会返回 -1。 -
- OpenSSL 函数 openssl_x509_free 释放证书资源
-
发表日期:2021-07-01 08:55:24 | 来源: | 分类:OpenSSL 函数
-
openssl_x509_free
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
openssl_x509_free — 释放证书资源
说明
openssl_x509_free(resource$x509cert): voidopenssl_x509_free() 从内存中释放和指定
x509cert资源相关联的证书。参数
-
x509cert -
返回值
没有返回值。
-
- OpenSSL 函数 openssl_x509_fingerprint 计算一个给定的x.509证书的指纹或摘要
-
发表日期:2021-07-01 08:55:24 | 来源: | 分类:OpenSSL 函数
-
openssl_x509_fingerprint
(PHP 5 >= 5.6.0, PHP 7, PHP 8)
openssl_x509_fingerprint — 计算一个给定的x.509证书的指纹或摘要
说明
openssl_x509_fingerprint(mixed$x509, string$hash_algorithm= "sha1", bool$raw_output=false): stringopenssl_x509_fingerprint() 返回
x509的字符串类型的摘要。参数
-
x509 -
参见密钥/证书参数以获取有效值列表。
-
hash_algorithm -
使用的摘要方法或散列算法,比如, "sha256", openssl_get_md_methods()摘要算法之一。
-
raw_output -
设置为
true时,输出原始二进制数据。设置为false时,输出小写的16进制字符串。
返回值
将包含计算的证书指纹的字符串返回为小写16进制格式,除非将
raw_output设置为TRUE,在这种情况下会返回消息摘要的原始二进制表示形式。失败则返回
false. -
- OpenSSL 函数 openssl_x509_parse 解析一个X509证书并作为一个数组返回信息
-
发表日期:2021-07-01 08:55:24 | 来源: | 分类:OpenSSL 函数
-
openssl_x509_parse
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
openssl_x509_parse — 解析一个X509证书并作为一个数组返回信息
说明
openssl_x509_parse(mixed$x509cert, bool$shortnames=true): arrayopenssl_x509_parse() 返回提供的
x509cert证书的信息, 包括主题名称、发行方名称、目的、有效日期等字段。参数
-
x509cert -
-
shortnames -
shortnames控制数据在数组中的索引 - 如果shortnames为true(默认) 字段将以短名称的形式被索引, 否则将会使用长名称的形式 - 比如: CN 就是commonName的短名称格式。
返回值
返回的数据的结构是(故意的)还没有文档化,因为它仍然会发生变化。
-
- OpenSSL 函数 openssl_x509_read 解析一个x.509证书并返回一个资源标识符
-
发表日期:2021-07-01 08:55:24 | 来源: | 分类:OpenSSL 函数
-
openssl_x509_read
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
openssl_x509_read — 解析一个x.509证书并返回一个资源标识符
说明
openssl_x509_read(mixed$x509certdata): resourceopenssl_x509_read() 解析
x509certdata提供的证书,并返回一个资源标识符。参数
-
x509certdata -
X509 证书。参见 Key/Certificate parameters 获取可用的值。
返回值
成功,返回一个资源标识符, 或者在失败时返回
false. -
- OpenSSL 函数 openssl_x509_verify Verifies digital signature of x509 certificate against a public key
-
发表日期:2021-07-01 08:55:24 | 来源: | 分类:OpenSSL 函数
-
示例1
<?php $hostname = "news.php.net"; $ssloptions = array( "capture_peer_cert" => true, "capture_peer_cert_chain" => true, "allow_self_signed"=> false, "CN_match" => $hostname, "verify_peer" => true, "SNI_enabled" => true, "SNI_server_name" => $hostname,); $ctx = stream_context_create( array("ssl" => $ssloptions) ); $result = stream_socket_client("ssl://$hostname:443", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $ctx); $cont = stream_context_get_params($result); $x509 = $cont["options"]["ssl"]["peer_certificate"]; $certparsed = openssl_x509_parse($x509); foreach($cont["options"]["ssl"]["peer_certificate_chain"] as $chaincert){ $chainparsed = openssl_x509_parse($chaincert); $chain_public_key = openssl_get_publickey($chaincert); $r = openssl_x509_verify($x509, $chain_public_key); if ($r==1) { echo $certparsed['subject']['CN']; echo " was digitally signed by "; echo $chainparsed['subject']['CN']."\n"; } } ?>
- OpenSSL 函数 openssl_x509_export 以字符串格式导出证书
-
发表日期:2021-07-01 08:55:24 | 来源: | 分类:OpenSSL 函数
-
openssl_x509_export
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
openssl_x509_export — 以字符串格式导出证书
说明
openssl_x509_export(mixed$x509, string&$output, bool$notext=true): boolopenssl_x509_export() 将
x509以PEM编码的格式导出到名为output的字符串类型的变量中。参数
-
x509 -
参见密钥/证书参数以获取有效值列表。
-
output -
成功,将会存储 PEM.
-
notext -
可选参数
notext影响输出的冗余度。如果设为false,输出内容将包含附加的人类可读信息。notext的缺省值为true。
返回值
成功时返回
true, 或者在失败时返回false。 -
- OpenSSL 函数 openssl_pkey_get_public 从证书中解析公钥,以供使用。
-
发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数
-
openssl_pkey_get_public
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
openssl_pkey_get_public — 从证书中解析公钥,以供使用。
说明
openssl_pkey_get_public(mixed$certificate): resourceopenssl_get_publickey() 从
certificate中解析公钥,供其他函数使用。参数
-
certificate -
certificate可以是以下之一:- 一个 X.509 证书资源
- 一个file://path/to/file.pem格式的字符串。文件名必须包含一个PEM编码的证书或者密钥(也许二者都有).
- 一个 PEM 格式的公钥。
返回值
成功,返回真实的密钥资源标识符,错误,则返回
false -
- OpenSSL 函数 openssl_pkey_export_to_file 将密钥导出到文件中
-
发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数
-
openssl_pkey_export_to_file
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
openssl_pkey_export_to_file — 将密钥导出到文件中
说明
openssl_pkey_export_to_file(
mixed$key,
string$outfilename,
string$passphrase= ?,
array$configargs= ?
): boolopenssl_pkey_export_to_file() 将 ascii 格式 (PEM编码)的
key保存到名为outfilename文件中。注意: 必须安装有效的 openssl.cnf 以保证此函数正确运行。参考有关安装的说明以获得更多信息。
参数
-
key -
-
outfilename -
输出文件的路径。
-
passphrase -
密钥可以通过值为
passphrase的密码来保护。 -
configargs -
configargs可以用来调整导出流程,通过指定或者覆盖openssl配置文件选项。参见 openssl_csr_new() 获取更多关于configargs的信息。
返回值
成功时返回
true, 或者在失败时返回false。 -
- OpenSSL 函数 openssl_pkey_get_private 获取私钥
-
发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数
-
openssl_pkey_get_private
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
openssl_pkey_get_private — 获取私钥
说明
openssl_pkey_get_private(mixed$key, string$passphrase= ""): resourceopenssl_get_privatekey() 解析
key供其他函数使用。参数
-
key -
key可以是如下密钥之一:- 如下格式的字符串 file://path/to/file.pem。该文件必须包含 PEM 编码的证书或者私钥 (可能都包含了).
- 一个PEM格式的私钥。
-
passphrase -
如果指定的密钥已被加密了(受密码保护),可选参数
passphrase是必须要的。
返回值
成功,返回真实的密钥资源标识符,失败,返回
false. -
- OpenSSL 函数 openssl_private_encrypt 使用私钥加密数据
-
发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数
-
openssl_private_encrypt
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
openssl_private_encrypt — 使用私钥加密数据
说明
openssl_private_encrypt(
string$data,
string&$crypted,
mixed$key,
int$padding= OPENSSL_PKCS1_PADDING
): boolopenssl_private_encrypt() 使用私钥
key加密数据data并且将结果保存至变量crypted中。加密后的数据可以通过openssl_public_decrypt()函数来解密。该函数用来签名数据(或者哈希)让别人相信数据并不是其他人写的。
参数
-
data -
-
crypted -
-
key -
-
padding -
padding可以是如下之一:OPENSSL_PKCS1_PADDING,OPENSSL_NO_PADDING.
返回值
成功时返回
true, 或者在失败时返回false。 -
- OpenSSL 函数 openssl_private_decrypt 使用私钥解密数据
-
发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数
-
openssl_private_decrypt
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
openssl_private_decrypt — 使用私钥解密数据
说明
openssl_private_decrypt(
string$data,
string&$decrypted,
mixed$key,
int$padding= OPENSSL_PKCS1_PADDING
): bool警告本函数并不会生成安全加密的值,不应用于加密用途。若需要安全加密的值,考虑使用 random_int()、random_bytes() 或 openssl_random_pseudo_bytes() 替代。
openssl_private_decrypt() 解密先前通过 openssl_public_encrypt() 函数加密的
data并将结果保存至decrypted变量中。你可以用该函数来解密只对你可用的数据。
参数
-
data -
-
decrypted -
-
key -
key必须是和用来加密数据所用公钥对应的私钥。 -
padding -
padding可以是如下值:OPENSSL_PKCS1_PADDING,OPENSSL_SSLV23_PADDING,OPENSSL_PKCS1_OAEP_PADDING,OPENSSL_NO_PADDING.
返回值
成功时返回
true, 或者在失败时返回false。 -
- OpenSSL 函数 openssl_public_decrypt 使用公钥解密数据
-
发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数
-
openssl_public_decrypt
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
openssl_public_decrypt — 使用公钥解密数据
说明
openssl_public_decrypt(
string$data,
string&$decrypted,
mixed$key,
int$padding= OPENSSL_PKCS1_PADDING
): boolopenssl_public_decrypt() 解密先前由 openssl_private_encrypt() 加密的数据
data并且将结果保存至变量decrypted中。你可以用该函数来校验消息是否是私钥拥有者写的。
参数
-
data -
-
decrypted -
-
key -
key必须是和用来加密数据的私钥配对的公钥。 -
padding -
padding可以是如下至OPENSSL_PKCS1_PADDING,OPENSSL_NO_PADDING.
返回值
成功时返回
true, 或者在失败时返回false。 -
- OpenSSL 函数 openssl_pkey_new 生成一个新的私钥
-
发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数
-
示例1
<?php $private_key = openssl_pkey_new(); $public_key_pem = openssl_pkey_get_details($private_key)['key']; echo $public_key_pem; $public_key = openssl_pkey_get_public($public_key_pem); var_dump($public_key); ?>
- OpenSSL 函数 openssl_pkey_get_details 返回包含密钥详情的数组
-
发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数
-
openssl_pkey_get_details
(PHP 5 >= 5.2.0, PHP 7, PHP 8)
openssl_pkey_get_details — 返回包含密钥详情的数组
说明
openssl_pkey_get_details(resource$key): array该函数返回密钥详情(位长度,密钥,类型).
参数
-
key -
持有密钥的资源。
返回值
成功,返回包含密钥详情的数组,失败返回
false. 返回的数组中包含了如下索引:bits(位数),key(表示公钥的字符串) 和type(如下密钥类型之一:OPENSSL_KEYTYPE_RSA,OPENSSL_KEYTYPE_DSA,OPENSSL_KEYTYPE_DH,OPENSSL_KEYTYPE_EC或者 未知类型返回1).取决于所使用密钥的类型,可能会返回其他额外的信息。请注意,有些元素可能并不总是可用的。
-
OPENSSL_KEYTYPE_RSA, 一个额外的键名为"rsa"的数组,包含了以下密钥数据:Key 说明 "n"modulus "e"public exponent "d"private exponent "p"prime 1 "q"prime 2 "dmp1"exponent1, d mod (p-1) "dmq1"exponent2, d mod (q-1) "iqmp"coefficient, (inverse of q) mod p -
OPENSSL_KEYTYPE_DSA, 一个额外的键为"dsa"的数组, 包含如下的密钥数据。Key 说明 "p"prime number (public) "q"160-bit subprime, q | p-1 (public) "g"generator of subgroup (public) "priv_key"private key x "pub_key"public key y = g^x -
OPENSSL_KEYTYPE_DH, 一个额外的键为"dh"的数组,包含如下的密钥数据。Key 说明 "p"prime number (shared) "g"generator of Z_p (shared) "priv_key"private DH value x "pub_key"public DH value g^x -
OPENSSL_KEYTYPE_EC, 一个额外的键为"ec"的数组,包含如下的密钥数据。Key 说明 "curve_name"name of curve, see openssl_get_curve_names() "curve_oid"ASN1 Object identifier (OID) for EC curve. "x"x coordinate (public) "y"y coordinate (public) "d"private key
-
- OpenSSL 函数 openssl_public_encrypt 使用公钥加密数据
-
发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数
-
openssl_public_encrypt
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
openssl_public_encrypt — 使用公钥加密数据
说明
openssl_public_encrypt(
string$data,
string&$crypted,
mixed$key,
int$padding= OPENSSL_PKCS1_PADDING
): boolopenssl_public_encrypt() 使用公钥
key解密数据data并且将结果保存到变量crypted中。 加密的数据可以通过openssl_private_decrypt()函数解密。该函数可以用来加密数据,供该公钥匹配的私钥拥有者读取。 它也可以用来在数据库中存储安全数据。
参数
-
data -
-
crypted -
这将保存加密的结果。
-
key -
公钥。
-
padding -
paddingcan be one ofOPENSSL_PKCS1_PADDING,OPENSSL_SSLV23_PADDING,OPENSSL_PKCS1_OAEP_PADDING,OPENSSL_NO_PADDING.
返回值
成功时返回
true, 或者在失败时返回false。 -
- OpenSSL 函数 openssl_random_pseudo_bytes 生成一个伪随机字节串
-
发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数
-
示例1
<?php for ($i = -1; $i <= 4; $i++) { $bytes = openssl_random_pseudo_bytes($i, $cstrong); $hex = bin2hex($bytes); echo "Lengths: Bytes: $i and Hex: " . strlen($hex) . PHP_EOL; var_dump($hex); var_dump($cstrong); echo PHP_EOL; } ?>
- OpenSSL 函数 openssl_seal 密封 (加密) 数据
-
发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数
-
示例1
<?php // $data is assumed to contain the data to be sealed// fetch public keys for our recipients, and ready them$fp = fopen("/src/openssl-0.9.6/demos/maurice/cert.pem", "r"); $cert = fread($fp, 8192); fclose($fp); $pk1 = openssl_get_publickey($cert); // Repeat for second recipient$fp = fopen("/src/openssl-0.9.6/demos/sign/cert.pem", "r"); $cert = fread($fp, 8192); fclose($fp); $pk2 = openssl_get_publickey($cert); // seal message, only owners of $pk1 and $pk2 can decrypt $sealed with keys// $ekeys[0] and $ekeys[1] respectively.openssl_seal($data, $sealed, $ekeys, array($pk1, $pk2)); // free the keys from memoryopenssl_free_key($pk1); openssl_free_key($pk2); ?>
- OpenSSL 函数 openssl_sign Generate signature
-
发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数
-
示例1
<?php // $data is assumed to contain the data to be signed// fetch private key from file and ready it$pkeyid = openssl_pkey_get_private("file://src/openssl-0.9.6/demos/sign/key.pem"); // compute signatureopenssl_sign($data, $signature, $pkeyid); // free the key from memoryopenssl_free_key($pkeyid); ?>示例2
<?php //data you want to sign$data = 'my data'; //create new private and public key$new_key_pair = openssl_pkey_new(array( "private_key_bits" => 2048, "private_key_type" => OPENSSL_KEYTYPE_RSA,)); openssl_pkey_export($new_key_pair, $private_key_pem); $details = openssl_pkey_get_details($new_key_pair); $public_key_pem = $details['key']; //create signatureopenssl_sign($data, $signature, $private_key_pem, OPENSSL_ALGO_SHA256); //save for laterfile_put_contents('private_key.pem', $private_key_pem); file_put_contents('public_key.pem', $public_key_pem); file_put_contents('signature.dat', $signature); //verify signature$r = openssl_verify($data, $signature, $public_key_pem, "sha256WithRSAEncryption"); var_dump($r); ?>
- OpenSSL 函数 openssl_spki_verify 验证签名公钥和挑战。
-
发表日期:2021-07-01 08:55:23 | 来源: | 分类:OpenSSL 函数
-
示例1
<?php $pkey = openssl_pkey_new('secret password'); $spkac = openssl_spki_new($pkey, 'challenge string'); if (openssl_spki_verify(preg_replace('/SPKAC=/', '', $spkac))) { echo $spkac; } else { echo "SPKAC validation failed"; } ?>示例2
<?php if (openssl_spki_verify(preg_replace('/SPKAC=/', '', $_POST['spkac']))) { echo $spkac; } else { echo "SPKAC validation failed"; } ?><keygen name="spkac" challenge="challenge string" keytype="RSA">
- 前端开发(1)
- 数据库(0)
- PHP(0)
- PHP杂项(34)
- PHP基础-李炎恢系列课程(20)
- 中文函数手册(0)
- 错误处理 函数(13)
- OPcache 函数(6)
- PHP 选项/信息 函数(54)
- Zip 函数(10)
- Hash 函数(15)
- OpenSSL 函数(63)
- Date/Time 函数(51)
- 目录函数(9)
- Fileinfo 函数(6)
- iconv 函数(11)
- 文件系统函数(81)
- 多字节字符串 函数(57)
- GD 和图像处理 函数(114)
- 可交换图像信息(5)
- Math 函数(50)
- 程序执行函数(11)
- PCNTL 函数(23)
- JSON 函数(4)
- SPL 函数(15)
- URL 函数(10)
- cURL 函数(32)
- 网络 函数(33)
- FTP 函数(36)
- Session 函数(23)
- PCRE 函数(11)
- PCRE 正则语法(19)
- 数组 函数(81)
- 类/对象 函数(18)
- 函数处理 函数(13)
- 变量处理 函数(37)
- SimpleXML 函数(3)
- 杂项 函数(31)
- 字符串 函数(101)
- JAVA(0)
- Android(0)
- Linux(0)
- AI大模型(9)
- 其他(0)
宁公网安备 64010402001209号