解决php中openssl pkey_new()创建中文数字证书乱码问题
用openssl创建证书时, 编码用utf-8, 中文证书出现乱码。经多项测试未能解决。
在apache2.2中创建不成功。 后升级服务器,使用apache2.4+php5.5, 重新执行,成功。
- $dn = array(
- "countryName" => 'Zh', //所在国家名称
- "stateOrProvinceName" => '北京', //所在省份名称
- "localityName" => '北京', //所在城市名称
- "organizationName" => '北京理房通支付科技有限公司', //注册人姓名
- "organizationalUnitName" => '北京理房通支付科技有限公司', //组织名称
- "commonName" => '北京理房通支付科技有限公司', //公共名称
- );
- print_r( $dn);
- $numberofdays = 365; //有效时长
- $cerpath = "./pem.cer"; //生成证书路径
- $res = openssl_pkey_new();
- $csr = openssl_csr_new($dn, $res); //证书
- $sscert = openssl_csr_sign($csr, null, $res, $numberofdays); //签名
- openssl_x509_export($sscert, $csrkey); //导出证书$csrkey
- //phpfensi.com
- //生成证书文件
- $fp = fopen($cerpath, "w");
- fwrite($fp, $csrkey);
- fclose($fp);