解决php中openssl pkey_new()创建中文数字证书乱码问题

用openssl创建证书时, 编码用utf-8, 中文证书出现乱码。经多项测试未能解决。

在apache2.2中创建不成功。 后升级服务器,使用apache2.4+php5.5, 重新执行,成功。

  1. $dn = array(
  2. "countryName" => 'Zh', //所在国家名称
  3. "stateOrProvinceName" => '北京', //所在省份名称
  4. "localityName" => '北京', //所在城市名称
  5. "organizationName" => '北京理房通支付科技有限公司', //注册人姓名
  6. "organizationalUnitName" => '北京理房通支付科技有限公司', //组织名称
  7. "commonName" => '北京理房通支付科技有限公司', //公共名称
  8. );
  9. print_r( $dn);
  10. $numberofdays = 365; //有效时长
  11. $cerpath = "./pem.cer"; //生成证书路径
  12. $res = openssl_pkey_new();
  13. $csr = openssl_csr_new($dn, $res); //证书
  14. $sscert = openssl_csr_sign($csr, null, $res, $numberofdays); //签名
  15. openssl_x509_export($sscert, $csrkey); //导出证书$csrkey
  16. //phpfensi.com
  17. //生成证书文件
  18. $fp = fopen($cerpath, "w");
  19. fwrite($fp, $csrkey);
  20. fclose($fp);