keystore.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. // by 请勿倒卖,已申请软著,否则追究法律责任
  3. namespace app\webview;
  4. class keystore
  5. {
  6. public $certDir = IN_CERT_PATH . "keystore/";
  7. public $debug = false;
  8. public function __construct($certDir = '', $debug = false)
  9. {
  10. if ($certDir) {
  11. $this->certDir = $certDir;
  12. }
  13. @creatdir($this->certDir);
  14. if ($debug) {
  15. $this->debug = $debug;
  16. }
  17. }
  18. function create($_var_0, $_var_1 = '123456', $_var_2 = '123456')
  19. {
  20. $_var_3 = $this->certDir . $_var_0 . ".jks";
  21. if (!is_file($_var_3)) {
  22. $_var_4["alias"] = $_var_0;
  23. $_var_4["keypass"] = $_var_2;
  24. $_var_4["keyalg"] = "RSA";
  25. $_var_4["keysize"] = "1024";
  26. $_var_4["validity"] = "365";
  27. $_var_4["keystore"] = $_var_3;
  28. $_var_4["storepass"] = $_var_1;
  29. $_var_4["-dname"] = "\"CN=(名字与姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称), ST=(州或省份名称), C=(单位的两字母国家代码)\"";
  30. $_var_5 = "keytool -genkey ";
  31. foreach ($_var_4 as $_var_6 => $_var_7) {
  32. $_var_5 .= "-" . $_var_6 . " " . $_var_7 . " ";
  33. }
  34. exec($_var_5, $_var_8);
  35. $this->debug && @file_put_contents("keystore-create.log", $_var_5 . "\n\n\n" . $_var_8);
  36. }
  37. return $_var_3;
  38. }
  39. function getCer($_var_9, $_var_10 = '123456', $_var_11 = '123456')
  40. {
  41. $_var_12 = $this->create($_var_9, $_var_10, $_var_11);
  42. $_var_13 = $this->certDir . $_var_9 . ".cer";
  43. if (!is_file($_var_13)) {
  44. $_var_14 = "keytool -list -rfc -keystore " . $_var_12 . " -storepass " . $_var_10;
  45. exec($_var_14, $_var_15);
  46. $this->debug && @file_put_contents("keystore-getCer.log", $_var_14 . "\n\n\n" . $_var_15);
  47. $_var_16 = false;
  48. $_var_17 = "";
  49. foreach ($_var_15 as $_var_18) {
  50. if ($_var_18 == "-----BEGIN CERTIFICATE-----") {
  51. $_var_16 = true;
  52. }
  53. if ($_var_16) {
  54. $_var_17 .= $_var_18 . "\n";
  55. }
  56. if ($_var_18 == "-----END CERTIFICATE-----") {
  57. $_var_16 = false;
  58. }
  59. }
  60. file_put_contents($_var_13, $_var_17);
  61. }
  62. return $_var_13;
  63. }
  64. function getPfx($_var_19, $_var_20 = '123456', $_var_21 = '123456')
  65. {
  66. $_var_22 = $this->create($_var_19, $_var_20, $_var_21);
  67. $_var_23 = $this->certDir . $_var_19 . ".pfx";
  68. if (!is_file($_var_23)) {
  69. $_var_24 = "keytool -noprompt -importkeystore -srckeystore " . $_var_22 . " -srcstoretype jks -srcstorepass " . $_var_20 . " -destkeystore " . $_var_23 . " -deststoretype pkcs12 -deststorepass " . $_var_20 . " -destkeypass " . $_var_21;
  70. exec($_var_24, $_var_25);
  71. $this->debug && @file_put_contents("keystore-getPfx.log", $_var_24 . "\n\n\n" . $_var_25);
  72. }
  73. return $_var_23;
  74. }
  75. function getKey($_var_26, $_var_27 = '123456', $_var_28 = '123456')
  76. {
  77. $_var_29 = $this->getPfx($_var_26, $_var_27, $_var_28);
  78. $_var_30 = $this->certDir . $_var_26 . ".key";
  79. if (!is_file($_var_30)) {
  80. $_var_31 = "openssl pkcs12 -in " . $_var_29 . " -nodes -out " . $_var_30 . " -passin pass:" . $_var_27 . " -passout pass:" . $_var_27;
  81. exec($_var_31, $_var_32);
  82. $this->debug && @file_put_contents("keystore-getKey.log", $_var_31 . "\n\n\n" . $_var_32);
  83. }
  84. return $_var_30;
  85. }
  86. function getPk8($_var_33, $_var_34 = '123456', $_var_35 = '123456')
  87. {
  88. $_var_36 = $this->getKey($_var_33, $_var_34, $_var_35);
  89. $_var_37 = $this->certDir . $_var_33 . ".pk8";
  90. if (!is_file($_var_37)) {
  91. $_var_38 = "openssl pkcs8 -topk8 -outform DER -in " . $_var_36 . " -inform PEM -out " . $_var_37 . " -nocrypt";
  92. exec($_var_38, $_var_39);
  93. $this->debug && @file_put_contents("keystore-getPk8.log", $_var_38 . "\n\n\n" . $_var_39);
  94. }
  95. return $_var_37;
  96. }
  97. }