make_certs.sh 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #!/bin/sh
  2. echo "Creating new certificates"
  3. rm server.* client.* rootCA.* server_bkup.*
  4. echo "Using 'pass' for every password"
  5. echo "Generating a root CA ..."
  6. openssl genrsa -passout pass:pass -out rootCA.key 2048
  7. openssl req -passout pass:pass -new -key rootCA.key -out rootCA.csr -subj "/C=AA/ST=localhost/L=localhost/O=localhost/OU=localhost/CN=localhost"
  8. # For a test certificate, use "AA" as "user assigned" language code: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#AA
  9. cp rootCA.key rootCA.key.orig
  10. openssl rsa -in rootCA.key.orig -out rootCA.key
  11. openssl x509 -req -days 3651 -in rootCA.csr -signkey rootCA.key -out rootCA.crt
  12. cp rootCA.crt rootCA.pem
  13. cat rootCA.key >> rootCA.pem
  14. echo "Generating client certificate ..."
  15. openssl genrsa -passout pass:pass -out client.key 2048
  16. openssl req -passout pass:pass -new -key client.key -out client.csr -subj "/C=AA/ST=localhost/L=localhost/O=localhost/OU=localhost/CN=localhost"
  17. cp client.key client.key.orig
  18. openssl rsa -in client.key.orig -out client.key
  19. openssl x509 -req -days 3650 -in client.csr -signkey client.key -out client.crt
  20. cp client.crt client.pem
  21. cat client.key >> client.pem
  22. openssl pkcs12 -passout pass:pass -export -inkey client.key -in client.pem -name ClientName -out client.pfx
  23. echo "Generating first server certificate ..."
  24. openssl genrsa -passout pass:pass -out server.key 2048
  25. openssl req -passout pass:pass -new -key server.key -out server.csr -subj "/C=AA/ST=localhost/L=localhost/O=localhost/OU=localhost/CN=localhost"
  26. cp server.key server.key.orig
  27. openssl rsa -in server.key.orig -out server.key
  28. echo "authorityKeyIdentifier=keyid,issuer" > server.ext
  29. echo "basicConstraints=critical,CA:FALSE" >> server.ext
  30. echo "keyUsage=digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment" >> server.ext
  31. echo "subjectAltName=DNS:localhost" >> server.ext
  32. openssl x509 -req -days 3650 -sha256 -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -extfile server.ext -in server.csr -out server.crt
  33. #openssl x509 -req -days 3650 -sha256 -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -extfile server.ext -in server.csr -signkey server.key -out server.crt
  34. #openssl x509 -req -days 3650 -sha256 -extfile server.ext -in server.csr -signkey server.key -out server.crt
  35. cp server.crt server.pem
  36. cat server.key >> server.pem
  37. cat rootCA.crt >> server.pem
  38. openssl pkcs12 -passout pass:pass -export -inkey server.key -in server.pem -name ServerName -out server.pfx
  39. echo "First server certificate hash for Public-Key-Pins header:"
  40. openssl x509 -pubkey < server.crt | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | base64 > server.pin
  41. cat server.pin
  42. echo "Generating backup server certificate ..."
  43. openssl genrsa -passout pass:pass -out server_bkup.key 2048
  44. openssl req -passout pass:pass -new -key server_bkup.key -out server_bkup.csr -subj "/C=AA/ST=localhost/L=localhost/O=localhost/OU=localhost/CN=localhost"
  45. cp server_bkup.key server_bkup.key.orig
  46. openssl rsa -in server_bkup.key.orig -out server_bkup.key
  47. openssl x509 -req -days 3650 -in server_bkup.csr -signkey server_bkup.key -out server_bkup.crt
  48. cp server_bkup.crt server_bkup.pem
  49. cat server_bkup.key >> server_bkup.pem
  50. openssl pkcs12 -passout pass:pass -export -inkey server_bkup.key -in server_bkup.pem -name ServerName -out server_bkup.pfx
  51. echo "Backup server certificate hash for Public-Key-Pins header:"
  52. openssl x509 -pubkey < server_bkup.crt | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | base64 > server_bkup.pin
  53. cat server_bkup.pin