create_client.sh 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #!/bin/bash
  2. log() {
  3. logger -t "openvpn-create" -p user.info "$1"
  4. echo "$1" # Также выводим в консоль для обратной связи
  5. }
  6. # Проверка прав
  7. check_permissions() {
  8. if [[ $EUID -ne 0 ]]; then
  9. log "Error: This script must be run as root" >&2
  10. exit 1
  11. fi
  12. }
  13. if [ $# -ne 2 ]; then
  14. echo "Usage: $0 <rsa_dir> <username>"
  15. exit 1
  16. fi
  17. check_permissions
  18. RSA_DIR="$1"
  19. USERNAME="$2"
  20. # Проверяем существование директории PKI
  21. if [ ! -d "$RSA_DIR" ]; then
  22. log "PKI directory not found: $RSA_DIR"
  23. exit 1
  24. fi
  25. # Проверяем наличие easyrsa
  26. if [ ! -f "$RSA_DIR/easyrsa" ]; then
  27. log "easyrsa not found in $RSA_DIR"
  28. exit 1
  29. fi
  30. # Проверяем, не существует ли уже пользователь
  31. if [ -f "$RSA_DIR/pki/index.txt" ] && grep -q "CN=$USERNAME" "$RSA_DIR/pki/index.txt"; then
  32. log "User $USERNAME already exists"
  33. exit 1
  34. fi
  35. # Переходим в директорию PKI и создаем клиента
  36. cd "$RSA_DIR" || exit 1
  37. # Генерируем клиентский ключ и сертификат в batch mode (без подтверждений)
  38. ./easyrsa --batch build-client-full "$USERNAME" nopass
  39. if [ $? -eq 0 ]; then
  40. log "User $USERNAME created successfully"
  41. chown nobody:nogroup -R "$RSA_DIR/pki/issued/"
  42. chmod 640 "${RSA_DIR}"/pki/issued/*.crt
  43. chown nobody:nogroup -R "$RSA_DIR/pki/private/"
  44. chmod 640 "${RSA_DIR}"/pki/private/*.key
  45. exit 0
  46. else
  47. echo "Failed to create user $USERNAME"
  48. exit 1
  49. fi
  50. exit 0