create-client.sh 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #!/bin/bash
  2. set -euo pipefail
  3. NAME="${1:?Usage: create-client.sh CLIENT_NAME VPN_HOST [PORT]}"
  4. HOST="${2:?Usage: create-client.sh CLIENT_NAME VPN_HOST [PORT]}"
  5. PORT="${3:-1194}"
  6. export EASYRSA_PKI=/openvpn/pki
  7. EASYRSA=/usr/share/easy-rsa/3/easyrsa
  8. # --------------------------------------------------------
  9. # Certificat client
  10. # --------------------------------------------------------
  11. if [ ! -f "${EASYRSA_PKI}/issued/${NAME}.crt" ]; then
  12. echo "Generating certificate for ${NAME}..." >&2
  13. "${EASYRSA}" \
  14. --batch \
  15. build-client-full \
  16. "${NAME}" \
  17. nopass \
  18. >&2
  19. fi
  20. # --------------------------------------------------------
  21. # Profil .ovpn autonome
  22. # --------------------------------------------------------
  23. cat <<EOF
  24. client
  25. dev tun
  26. proto udp4
  27. remote ${HOST} ${PORT}
  28. resolv-retry infinite
  29. nobind
  30. persist-key
  31. persist-tun
  32. remote-cert-tls server
  33. verify-x509-name server name
  34. auth-nocache
  35. tls-version-min 1.2
  36. data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305
  37. data-ciphers-fallback AES-256-GCM
  38. auth SHA256
  39. verb 3
  40. <ca>
  41. EOF
  42. awk '/-----BEGIN CERTIFICATE-----/{p=1} p' \
  43. "${EASYRSA_PKI}/ca.crt"
  44. cat <<EOF
  45. </ca>
  46. <cert>
  47. EOF
  48. awk '/-----BEGIN CERTIFICATE-----/{p=1} p' \
  49. "${EASYRSA_PKI}/issued/${NAME}.crt"
  50. cat <<EOF
  51. </cert>
  52. <key>
  53. EOF
  54. cat "${EASYRSA_PKI}/private/${NAME}.key"
  55. cat <<EOF
  56. </key>
  57. <tls-crypt>
  58. EOF
  59. cat "${EASYRSA_PKI}/tls-crypt.key"
  60. cat <<EOF
  61. </tls-crypt>
  62. EOF