使用openssl生成证书及密钥失败
来源:互联网 发布:图像算法工程师容易吗? 编辑:程序博客网 时间:2024/05/21 11:35
$privateKey = openssl_pkey_new();while($message = openssl_error_string()){ echo $message.'<br />'.PHP_EOL;}
调用后会有如下输出:
error:02001003:system library:fopen:No such processerror:2006D080:BIO routines:BIO_new_file:no such fileerror:0E064002:configuration file routines:CONF_load:system liberror:02001003:system library:fopen:No such processerror:2006D080:BIO routines:BIO_new_file:no such fileerror:0E064002:configuration file routines:CONF_load:system lib过程中,openssl_csr_new,openssl_csr_sign,openssl_pkey_new 这3个方法调用都会有上述错误输出
解决方案,为每个方法指定openssl.conf文件路径
修改后成功运行demo如下:
$dn = array("countryName" => 'XX', //所在国家名称"stateOrProvinceName" => 'State', //所在省份名称"localityName" => 'SomewhereCity', //所在城市名称"organizationName" => 'MySelf', //注册人姓名"organizationalUnitName" => 'Whatever', //组织名称"commonName" => 'mySelf', //公共名称"emailAddress" => 'user@domain.com' //邮箱); $privkeypass = '111111'; //私钥密码$numberofdays = 365; //有效时长$cerpath = "./test.cer"; //生成证书路径$pfxpath = "./test.pfx"; //密钥文件路径 //生成证书//$privkey = openssl_pkey_new();$opensslConfigPath = "E:/XAMPP/apache/bin/openssl.cnf";//E:/XAMPP/php/extras/openssl/openssl.cnf"E:/XAMPP/apache/conf/openssl.cnf"; //apache路径下的openssl.conf文件路径// E:/XAMPP/apache/bin/openssl.cnfvar_dump(getenv('OPENSSL_CONF'));//set OPENSSL_CONF="E:/XAMPP/php/extras/openssl/openssl.cnf"//set OPENSSL_CONF="E:/XAMPP/apache/conf/openssl.cnf"// set OPENSSL_CONF="E:/XAMPP/apache/bin/openssl.cnf"$config = array('private_key_bits' => 2048,'config'=> $opensslConfigPath);$privkey = openssl_pkey_new($config);var_dump('1#openssl_pkey_new::::');var_dump ($privkey);$configargs = array('config'=>$opensslConfigPath);$csr = openssl_csr_new($dn, $privkey,$configargs);var_dump('2#openssl_csr_new::::');var_dump($csr);$sscert = openssl_csr_sign($csr, null, $privkey, $numberofdays, $configargs);var_dump('3#openssl_csr_sign::::');var_dump($sscert);openssl_x509_export($sscert, $csrkey); //导出证书$csrkeyopenssl_pkcs12_export($sscert, $privatekey, $privkey, $privkeypass); //导出密钥$privatekey//生成证书文件$fp = fopen($cerpath, "w");fwrite($fp, $csrkey);fclose($fp);//生成密钥文件$fp = fopen($pfxpath, "w");fwrite($fp, $privatekey);fclose($fp); while (($e = openssl_error_string()) !== false) {echo $e . "\n<br/><br/>";}exit();
阅读全文
0 0
- 使用openssl生成证书及密钥失败
- 使用OpenSSL生成证书
- 使用OpenSSL生成证书
- 使用OpenSSL生成证书
- 使用OpenSSL生成证书
- 使用OpenSSL生成证书
- 使用OpenSSL生成证书
- 使用OpenSSL生成证书
- 使用OpenSSL生成证书
- 使用OpenSSL生成证书
- 使用openssl生成证书
- 使用OpenSSL生成证书
- 使用OpenSSL生成证书
- 使用OpenSSL生成证书
- 证书相关概念及使用openssl生成自认证证书
- 使用keytool和openssl工具生成SSL双向认证密钥对和证书库
- OpenSSL密钥/证书制作
- 使用Openssl生成CA及签发证书方法
- 常用正则表达式集合及工具类
- 二维数组中查找
- VS2015常用快捷键
- Django中的--forms.py
- Hue中使用Oozie的workflow执行MR过程
- 使用openssl生成证书及密钥失败
- codeforces—— 869A —— The Artful Expedient
- Erlang 进程字典
- java接入短信平台源码
- 海康威视笔试题(如何判断两个IP地址在同一网段)
- Leetcode之Distinct Subsequences 问题
- Memcached的分布式琐
- 分布式系统开发调度技术
- immutable-js