1 <?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 ?// ???导出证书$csrkey22 ?openssl_x509_export($sscert, $csrkey);23 ?// ???导出密钥$privatekey24 ?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 ?>
PHP Openssl 生成公钥私钥
原文地址:https://www.cnblogs.com/changning0822/p/9964894.html