gen_test_ca.sh 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #!/bin/sh
  2. rm -rf index newcerts/*.pem serial *.req *.key *.crt crl.prm
  3. touch index
  4. echo "01" > serial
  5. PASSWORD=PolarSSLTest
  6. echo "Generating CA"
  7. cat sslconf.txt > sslconf_use.txt
  8. echo "CN=PolarSSL Test CA" >> sslconf_use.txt
  9. openssl req -config sslconf_use.txt -days 3653 -x509 -newkey rsa:2048 \
  10. -set_serial 0 -text -keyout test-ca.key -out test-ca.crt \
  11. -passout pass:$PASSWORD
  12. echo "Generating rest"
  13. openssl genrsa -out server1.key 2048
  14. openssl genrsa -out server2.key 2048
  15. openssl genrsa -out client1.key 2048
  16. openssl genrsa -out client2.key 2048
  17. openssl genrsa -out cert_digest.key 2048
  18. echo "Generating requests"
  19. cat sslconf.txt > sslconf_use.txt;echo "CN=PolarSSL Server 1" >> sslconf_use.txt
  20. openssl req -config sslconf_use.txt -new -key server1.key -out server1.req
  21. cat sslconf.txt > sslconf_use.txt;echo "CN=localhost" >> sslconf_use.txt
  22. openssl req -config sslconf_use.txt -new -key server2.key -out server2.req
  23. cat sslconf.txt > sslconf_use.txt;echo "CN=PolarSSL Client 1" >> sslconf_use.txt
  24. openssl req -config sslconf_use.txt -new -key client1.key -out client1.req
  25. cat sslconf.txt > sslconf_use.txt;echo "CN=PolarSSL Client 2" >> sslconf_use.txt
  26. openssl req -config sslconf_use.txt -new -key client2.key -out client2.req
  27. cat sslconf.txt > sslconf_use.txt;echo "CN=PolarSSL Cert MD2" >> sslconf_use.txt
  28. openssl req -config sslconf_use.txt -new -key cert_digest.key -out cert_md2.req -md2
  29. cat sslconf.txt > sslconf_use.txt;echo "CN=PolarSSL Cert MD4" >> sslconf_use.txt
  30. openssl req -config sslconf_use.txt -new -key cert_digest.key -out cert_md4.req -md4
  31. cat sslconf.txt > sslconf_use.txt;echo "CN=PolarSSL Cert MD5" >> sslconf_use.txt
  32. openssl req -config sslconf_use.txt -new -key cert_digest.key -out cert_md5.req -md5
  33. cat sslconf.txt > sslconf_use.txt;echo "CN=PolarSSL Cert SHA1" >> sslconf_use.txt
  34. openssl req -config sslconf_use.txt -new -key cert_digest.key -out cert_sha1.req -sha1
  35. cat sslconf.txt > sslconf_use.txt;echo "CN=PolarSSL Cert SHA224" >> sslconf_use.txt
  36. openssl req -config sslconf_use.txt -new -key cert_digest.key -out cert_sha224.req -sha224
  37. cat sslconf.txt > sslconf_use.txt;echo "CN=PolarSSL Cert SHA256" >> sslconf_use.txt
  38. openssl req -config sslconf_use.txt -new -key cert_digest.key -out cert_sha256.req -sha256
  39. cat sslconf.txt > sslconf_use.txt;echo "CN=PolarSSL Cert SHA384" >> sslconf_use.txt
  40. openssl req -config sslconf_use.txt -new -key cert_digest.key -out cert_sha384.req -sha384
  41. cat sslconf.txt > sslconf_use.txt;echo "CN=PolarSSL Cert SHA512" >> sslconf_use.txt
  42. openssl req -config sslconf_use.txt -new -key cert_digest.key -out cert_sha512.req -sha512
  43. echo "Signing requests"
  44. for i in server1 server2 client1 client2;
  45. do
  46. openssl ca -config sslconf.txt -out $i.crt -passin pass:$PASSWORD \
  47. -batch -in $i.req
  48. done
  49. for i in md2 md4 md5 sha1 sha224 sha256 sha384 sha512;
  50. do
  51. openssl ca -config sslconf.txt -out cert_$i.crt -passin pass:$PASSWORD \
  52. -batch -in cert_$i.req -md $i
  53. done
  54. echo "Revoking firsts"
  55. openssl ca -batch -config sslconf.txt -revoke server1.crt -passin pass:$PASSWORD
  56. openssl ca -batch -config sslconf.txt -revoke client1.crt -passin pass:$PASSWORD
  57. openssl ca -batch -config sslconf.txt -gencrl -out crl.pem -passin pass:$PASSWORD
  58. for i in md2 md4 md5 sha1 sha224 sha256 sha384 sha512;
  59. do
  60. openssl ca -batch -config sslconf.txt -gencrl -out crl_$i.pem -md $i -passin pass:$PASSWORD
  61. done
  62. echo "Verifying second"
  63. openssl x509 -in server2.crt -text -noout
  64. cat test-ca.crt crl.pem > ca_crl.pem
  65. openssl verify -CAfile ca_crl.pem -crl_check server2.crt
  66. rm ca_crl.pem
  67. echo "Generating PKCS12"
  68. openssl pkcs12 -export -in client2.crt -inkey client2.key \
  69. -out client2.pfx -passout pass:$PASSWORD
  70. rm *.old *.req sslconf_use.txt