client.sh 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #!/bin/bash
  2. command -v openssl >>/dev/null 2>&1
  3. [ $? -ne 0 ] && echo "Not Found openssl" && exit 1
  4. command -v certtool >>/dev/null 2>&1
  5. [ $? -ne 0 ] && echo "Not Found certtool" && exit 1
  6. cd `dirname "$0"`
  7. export OrgName
  8. export GroupName
  9. export PASSWORD
  10. while [[ $# -ge 1 ]]; do
  11. case $1 in
  12. -o)
  13. shift
  14. OrgName=`echo "$1" |sed 's/\s//g'`
  15. shift
  16. ;;
  17. -g)
  18. shift
  19. GroupName=`echo "$1" |sed 's/\s//g'`
  20. shift
  21. ;;
  22. -p)
  23. shift
  24. PASSWORD=`echo "$1" |sed 's/\s//g'`
  25. shift
  26. ;;
  27. *)
  28. echo -e "Usage:\n\tbash $0 -o <OrgName> -g <GroupName> -p <PASSWORD>\n"
  29. exit 1;
  30. ;;
  31. esac
  32. done
  33. [ -n "${OrgName}" ] || OrgName="Haibara"
  34. [ -n "${GroupName}" ] || GroupName="Default"
  35. if [ ! -f ./ca.cert.pem -o ! -f ./ca.key.pem ]; then
  36. if [ ! -f ./ca.cfg ]; then
  37. echo -e "cn = \"${OrgName} CA\"\norganization = \"${OrgName}\"\nserial = 1\nexpiration_days = 3650\nca\nsigning_key\ncert_signing_key\ncrl_signing_key\n" >./ca.cfg
  38. fi
  39. openssl genrsa -out ./ca.key.pem 2048
  40. certtool --generate-privkey --outfile ./ca.key.pem
  41. certtool --generate-self-signed --template ./ca.cfg --load-privkey ./ca.key.pem --outfile ./ca.cert.pem
  42. cp -rf ./ca.cert.pem ../ca.cert.pem
  43. rm -rf ./ca.cfg
  44. fi
  45. if [ ! -f ../server.cert.pem -o ! -f ../server.key.pem ]; then
  46. if [ ! -f ./server.cfg ]; then
  47. echo -e "cn = \"${OrgName} CA\"\norganization = \"${OrgName}\"\nexpiration_days = -1\nsigning_key\nencryption_key\ntls_www_server\n" >./server.cfg
  48. fi
  49. openssl genrsa -out ../server.key.pem 2048
  50. certtool --generate-certificate --load-privkey ../server.key.pem --load-ca-certificate ./ca.cert.pem --load-ca-privkey ./ca.key.pem --template ./server.cfg --outfile ../server.cert.pem
  51. rm -rf ./server.cfg
  52. fi
  53. if [ ! -f ../dh.pem ]; then
  54. certtool --generate-dh-params --outfile ../dh.pem
  55. fi
  56. echo -e "cn = \"${OrgName}.${GroupName}\"\nunit = \"${GroupName}\"\nexpiration_days = 3650\nsigning_key\ntls_www_client\n" >./user.cfg
  57. openssl genrsa -out ./user.key.pem 2048
  58. certtool --generate-certificate --load-privkey ./user.key.pem --load-ca-certificate ./ca.cert.pem --load-ca-privkey ./ca.key.pem --template ./user.cfg --outfile ./user.cert.pem
  59. cat ./ca.cert.pem >>./user.cert.pem
  60. openssl pkcs12 -export -inkey ./user.key.pem -in ./user.cert.pem -name "${OrgName}.${GroupName}" -certfile ./ca.cert.pem -caname "${OrgName} CA" -out "./${GroupName}.p12" -passout pass:$PASSWORD
  61. [ $? -eq '0' ] && echo -e "\nSuccess! \nGROUP\t\tPASSWORD\n${GroupName}\t\t$PASSWORD\n" || echo -e "\nFail! \n";
  62. rm -rf ./user.cert.pem ./user.key.pem ./user.cfg