entrypoint.sh 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #!/bin/sh
  2. # entrypoint.sh/Open GoPro, Version 2.0 (C) Copyright 2021 GoPro, Inc. (http://gopro.com/OpenGoPro).
  3. # This copyright was auto-generated on Fri Jun 9 22:45:24 UTC 2023
  4. set -e
  5. function generate_root_cert
  6. {
  7. echo -e "$(date +"%Y-%m-%d %H:%M:%S") INFO: Generating a Self Signing Certificate Authority..."
  8. openssl genrsa -out /ssl/self_signed/RTMP-CA.key 2048
  9. openssl req -x509 -new -nodes -key /ssl/self_signed/RTMP-CA.key -sha256 -days 1825 -subj '/CN=RTMP-Server-CA' -out /ssl/self_signed/RTMP-CA.crt
  10. cp -fv /ssl/self_signed/RTMP-CA.crt /ssl/
  11. }
  12. function generate_cert_from_root
  13. {
  14. SUBJ="/CN=$SSL_DOMAIN"
  15. echo -e "$(date +"%Y-%m-%d %H:%M:%S") INFO: The generated certificate will be valid for: $SSL_DOMAIN"
  16. openssl genrsa -out /ssl/self_signed/rtmp.key 2048
  17. openssl req -new -key /ssl/self_signed/rtmp.key -subj $SUBJ -out /tmp/rtmp.csr
  18. openssl x509 -req -in /tmp/rtmp.csr -CA /ssl/self_signed/RTMP-CA.crt -CAkey /ssl/self_signed/RTMP-CA.key -CAcreateserial -days 365 -sha256 -out /ssl/self_signed/rtmp.crt
  19. }
  20. # This is richard's method. It does not work with Chrome. It apparently works with the camera but I haven't seen this work yet
  21. # function generate_standalone_cert
  22. # {
  23. # # Using IP Address, build temporary request file from template
  24. # cp /cert_request.ext /ssl/temp.ext
  25. # sed -i "s/__IP_ADDR__/$SSL_DOMAIN/g" /ssl/temp.ext
  26. # openssl genrsa -out /ssl/self_signed/rtmp.key 2048
  27. # openssl req -new -config /ssl/temp.ext -key /ssl/self_signed/rtmp.key -out /ssl/self_signed/rtmp.csr
  28. # openssl x509 -req -days 300 -in /ssl/self_signed/rtmp.csr -extfile /ssl/temp.ext -extensions req_ext -signkey /ssl/self_signed/rtmp.key -out /ssl/self_signed/rtmp.crt
  29. # rm /ssl/temp.ext
  30. # # Print it to the console
  31. # openssl x509 -in /ssl/self_signed/rtmp.crt -noout -text
  32. # cat /ssl/self_signed/rtmp.crt
  33. # }
  34. function generate_standalone_cert
  35. {
  36. # Using IP Address, build temporary request file from template
  37. cp /cert_request.ini /ssl/temp.ini
  38. sed -i "s/__IP_ADDR__/$SSL_DOMAIN/g" /ssl/temp.ini
  39. openssl req -new -nodes -x509 -days 365 -keyout /ssl/self_signed/rtmp.key -out /ssl/self_signed/rtmp.crt -config /ssl/temp.ini
  40. # Print it to the console
  41. openssl x509 -in /ssl/self_signed/rtmp.crt -noout -text
  42. rm /ssl/temp.ini
  43. }
  44. if [[ $SSL_DOMAIN == "" ]]; then
  45. echo "You need to set the SSL_DOMAIN env variable"
  46. exit 1
  47. fi
  48. # Create fresh ssl directory
  49. rm -rf /ssl/* && mkdir -p /ssl/self_signed
  50. # This was the original way of generating a root certificate and then generating indivudal certs from this
  51. # for each domain.
  52. # generate_root_cert
  53. # generate_cert_from_root
  54. generate_standalone_cert
  55. echo -e "$(date +"%Y-%m-%d %H:%M:%S") INFO: Starting Nginx!"
  56. exec nginx -g "daemon off;"