docker-entrypoint.sh 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #!/bin/sh
  2. if [ ! -f /etc/ocserv/certs/server-key.pem ] || [ ! -f /etc/ocserv/certs/server-cert.pem ]; then
  3. # Check environment variables
  4. if [ -z "$CA_CN" ]; then
  5. CA_CN="VPN CA"
  6. fi
  7. if [ -z "$CA_ORG" ]; then
  8. CA_ORG="Big Corp"
  9. fi
  10. if [ -z "$CA_DAYS" ]; then
  11. CA_DAYS=9999
  12. fi
  13. if [ -z "$SRV_CN" ]; then
  14. SRV_CN="www.example.com"
  15. fi
  16. if [ -z "$SRV_ORG" ]; then
  17. SRV_ORG="MyCompany"
  18. fi
  19. if [ -z "$SRV_DAYS" ]; then
  20. SRV_DAYS=9999
  21. fi
  22. # No certification found, generate one
  23. mkdir /etc/ocserv/certs
  24. cd /etc/ocserv/certs
  25. certtool --generate-privkey --outfile ca-key.pem
  26. cat > ca.tmpl <<-EOCA
  27. cn = "$CA_CN"
  28. organization = "$CA_ORG"
  29. serial = 1
  30. expiration_days = $CA_DAYS
  31. ca
  32. signing_key
  33. cert_signing_key
  34. crl_signing_key
  35. EOCA
  36. certtool --generate-self-signed --load-privkey ca-key.pem --template ca.tmpl --outfile ca.pem
  37. certtool --generate-privkey --outfile server-key.pem
  38. cat > server.tmpl <<-EOSRV
  39. cn = "$SRV_CN"
  40. organization = "$SRV_ORG"
  41. expiration_days = $SRV_DAYS
  42. signing_key
  43. encryption_key
  44. tls_www_server
  45. EOSRV
  46. certtool --generate-certificate --load-privkey server-key.pem --load-ca-certificate ca.pem --load-ca-privkey ca-key.pem --template server.tmpl --outfile server-cert.pem
  47. # Create a test user
  48. if [ -z "$NO_TEST_USER" ] && [ ! -f /etc/ocserv/ocpasswd ]; then
  49. echo "Create test user 'test' with password 'test'"
  50. echo 'test:*:$5$DktJBFKobxCFd7wN$sn.bVw8ytyAaNamO.CvgBvkzDiFR6DaHdUzcif52KK7' > /etc/ocserv/ocpasswd
  51. fi
  52. fi
  53. # Open ipv4 ip forward
  54. sysctl -w net.ipv4.ip_forward=1
  55. # Enable NAT forwarding
  56. iptables -t nat -A POSTROUTING -j MASQUERADE
  57. iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
  58. # Enable TUN device
  59. mkdir -p /dev/net
  60. mknod /dev/net/tun c 10 200
  61. chmod 600 /dev/net/tun
  62. # Run OpennConnect Server
  63. exec "$@"