<?php
2 //配置信息
3 $dn = array(
4 "countryName" => "GB",
5 "stateOrProvinceName" => "Somerset",
6 "localityName" => "Glastonbury",
7 "organizationName" => "The Brain Room Limited",
8 "organizationalUnitName" => "PHP Documentation Team",
9 "commonName" => "Wez Furlong",
10 "emailAddress" => "wez@example.com"
11 );
12
13 $config = array(
14 "private_key_bits" => 512, //指定应该使用多少位来生成私钥 512 1024 2048 4096等
15 "private_key_type" => OPENSSL_KEYTYPE_RSA, //选择在创建CSR时应该使用哪些扩展。可选值有 OPENSSL_KEYTYPE_DSA, OPENSSL_KEYTYPE_DH, OPENSSL_KEYTYPE_RSA 或 OPENSSL_KEYTYPE_EC. 默认值是 OPENSSL_KEYTYPE_RSA.
16 );
17 // 生成证书
18 $privkey = openssl_pkey_new($config);
19 $csr = openssl_csr_new($dn, $privkey);
20 $sscert = openssl_csr_sign($csr, null, $privkey, $numberofdays);
21 // 导出证书$csrkey
22 openssl_x509_export($sscert, $csrkey);
23 // 导出密钥$privatekey
24 openssl_pkcs12_export($sscert, $privatekey, $privkey, $privkeypass);
25 // 获取私钥
26 openssl_pkcs12_read($privatekey, $certs, $privkeypass);
27 if (empty($certs['pkey'])) {
28 $arr = array();
29 }
30 $prikeyid = $certs['pkey'];
31 // 获取公钥
32 $pub_key = openssl_pkey_get_public($csrkey);
33 $keyData = openssl_pkey_get_details($pub_key);
34 if (empty($keyData['key'])) {
35 $arr = array();
36 }
37 $public = $keyData['key'];
38 $arr = array('publicKey'=>$public,'privateKey'=>$prikeyid);
39 print_r($arr);
40 ?>
转载自:https://www.cnblogs.com/changning0822/p/9964894.html