Spring Boot 애플리케이션 보호하기

시작 동영상

▶️ YouTube

▶️ Bilibili

다운로드

https://protector4j.com/download에서 최신 버전을 다운로드하세요.

설치

Windows 및 Linux

특별한 설치 단계가 없으며, 아카이브를 다운로드하여 압축을 풀면 됩니다.

macOS

dmg 파일을 다운로드하고 Protector4J를 Applications로 드래그하세요. 이 도구의 실제 내용은 /Applications/Protector4J.app/Contents/protector4j-mac에 있습니다.

GUI 도구로 Spring Boot 애플리케이션 암호화하기

Protector4J 폴더로 이동하여 **p4j-ui[.exe]**를 실행하면 다음과 같은 사용자 인터페이스가 표시됩니다.

macOS 사용자의 경우, 일반적인 Mac 애플리케이션처럼 Protector4J.app을 더블 클릭하면 됩니다.

로그인

이미 라이선스를 구매한 경우, 오른쪽 상단의 로그인 버튼을 클릭하고 사용자 정보를 입력하세요. 라이선스가 없어도 이 도구를 체험할 수 있습니다.

애플리케이션 유형 선택

애플리케이션 유형 페이지에서 "Spring Boot Application" 버튼을 클릭하세요.

암호화할 jar/war 파일 선택

암호화할 jar/war 파일을 선택합니다. 하나 또는 여러 파일을 선택할 수 있습니다.

옵션

jar 파일만 암호화

전체 JRE를 배포하지 않고 jar 파일만 암호화합니다. 이 옵션은 일반적으로 KeySeed 기능과 함께 사용하여 기존 프로그램을 업데이트합니다.

실행 파일 생성

애플리케이션 실행을 위한 실행 파일을 생성합니다. .exe 확장자를 추가하지 마세요.

콘솔 숨기기

이 옵션은 Windows에서 GUI 프로그램에만 유효하며, 프로그램 실행 시 명령줄 창을 숨기는 데 사용됩니다.

JVM 옵션

-Xmx 및 -Xms와 같은 JVM 옵션을 설정하며, 공백 또는 줄 바꿈으로 구분합니다.

출력

Java 버전 선택

Java 버전을 선택합니다. Java 8, Java 11, Java 17 및 Java 21을 지원합니다.

새 폴더 생성

기본적으로 선택되어 있으며, 암호화 작업은 출력 폴더에 p4j-[task-id]라는 이름의 파일을 생성합니다. 출력 결과는 이 폴더에 저장됩니다.

JavaFX 포함

JavaFX 애플리케이션인 경우 이 옵션을 선택하세요.

SWT 애플리케이션

SWT 애플리케이션인 경우 이 옵션을 선택하세요.

KeySeed

암호화 작업은 기본적으로 서버에서 랜덤 키를 요청하여 암호화합니다. 서로 다른 암호화 작업에서 생성된 파일은 함께 사용할 수 없습니다. KeySeed가 지정되면 동일한 KeySeed는 동일한 암호화 키를 생성합니다. 이 옵션은 이전의 "jar 파일만 암호화" 옵션과 함께 사용하여 기존 애플리케이션을 업데이트할 수 있습니다. 이 옵션은 라이선스 사용자만 사용할 수 있습니다.

암호화 작업 실행

잠시 기다리면, 암호화 작업이 완료된 후 출력 폴더에서 암호화된 애플리케이션의 출력 결과를 확인할 수 있습니다.

암호화된 애플리케이션 실행

암호화된 애플리케이션을 실행하는 세 가지 방법이 있습니다.

  1. exe 파일로 실행

대상 플랫폼이 Windows인 경우, 암호화 작업 중에 생성된 실행 파일로 암호화된 애플리케이션을 실행할 수 있습니다.

  1. 스크립트로 실행

대상 플랫폼이 Linux 또는 macOS인 경우, exe-name.sh라는 이름의 스크립트 파일을 찾을 수 있으며, 이 스크립트 파일로 애플리케이션을 실행할 수 있습니다.

  1. 전통적인 Java 명령으로 프로그램 실행

vlxjre/bin/java로 프로그램을 수동으로 실행할 수도 있으며, 이 명령의 형식은 일반 java 명령과 동일합니다.

출력 디렉토리에서 vlxjre라는 폴더를 볼 수 있으며, 이것이 커스터마이즈된 JRE이고, 암호화된 jar 파일은 vlxlib 폴더에 저장됩니다.

vlxjre/bin/java -jar vlxlib/xxx.jar
vlxjre/bin/java -cp vlxlib/xxx.jar MainClass
vlxjre/bin/java -cp "vlxlib/*" MainClass
vlxjre/bin/java -Xms512M -Xmx1024m -cp "vlxlib/*" MainClass

Java 8은 현재 vlxjre/bin/java -jar를 통한 실행을 지원하지 않습니다. vlxjre/bin/java -cp xx MainClass를 사용하세요.

주의사항

이 프로그램의 대상 플랫폼이 macOS 또는 Linux이지만 Windows에서 빌드된 경우, 첫 번째 시작 전에 대상 플랫폼에서 add-executable-permission.sh를 실행하여 프로그램에 실행 권한을 부여하세요.

exe 파일의 JVM 매개변수 수정

Windows

exe 파일의 JVM 매개변수를 수정해야 하는 경우, exe-name.json을 편집하고 JArgs 배열의 값을 수정합니다.

"JArgs": [
  "-DParam1=value1",
  "-DParam2=value2"
]

Linux 및 macOS

스크립트 파일을 열고 JVM 매개변수를 추가하거나 수정하면 됩니다.

CLI 도구로 Spring Boot 애플리케이션 암호화하기

구성 파일

CLI 도구는 작업 파일을 매개변수로 지정해야 합니다.

protector4j/task-templates 폴더로 이동하여 spring-boot-task.yml을 찾아 복사하고 수정합니다.

# Available values: 8,11,17,21
javaVersion: 17

# The jar file of spring boot application
springBootJarFile: ''
# Only encrypt the jar files, do not deploy the runtime
# This option is used while upgrading an existing application
onlyEncryptJarFiles: false

## [ Executable file information ]
# The executable file name
exeFileName: ''
# Hide command line window, only valid for Windows
hideConsole: false
# The splash image
splash: ''
# JVM Options
jvmOptions: []

## [ Output Options ]
# The output folder
outputFolder: ''
# Create a new and unique folder for the application, the folder name is like p4j-<taskId>
createNewFolder: true
# Whether this is a JavaFX application
includeJavaFX: false
# Whether this a swt gui application
swtApplication: false
# Fixed key seed, only avaiable for licensed user
# Jars encrypted in different tasks can be used together with same key seed
keySeed: ''
# The target platforms, keep it empty for current plaform,
# available values: [win, linux, mac]
platforms: []

## [ Windows exe file information (Optional and only valid for Windows) ]
icon: ''
productName: ''
productVersion: ''
fileVersion: ''
fileDescription: ''
companyName: ''
legalCopyright: ''

암호화 작업 실행

Protector4J 폴더로 이동하여 다음 명령을 실행합니다.

Linux 또는 macOS

macOS 사용자의 경우, /Applictions/Protector4J.app/Contents/protector4j-mac에서 CLI 도구를 찾을 수 있습니다.

./p4j -t spring-boot -f path-of-task-file

Windows

p4j -t spring-boot -f path-of-task-file

p4j --help를 실행하여 자세한 매개변수를 확인할 수 있습니다.

계정 정보로 실행

./p4j -t spring-boot -f path-of-task-file -u email -p password

결과 확인

암호화 작업이 완료된 후, 출력 폴더로 이동하여 결과를 확인하세요.

암호화된 애플리케이션 실행

암호화된 애플리케이션을 실행하는 세 가지 방법이 있습니다.

  1. exe 파일로 실행

대상 플랫폼이 Windows인 경우, 암호화 작업에서 생성된 실행 파일로 암호화된 애플리케이션을 실행할 수 있습니다.

  1. 스크립트로 실행

대상 플랫폼이 Linux 또는 macOS인 경우, exe-name.sh라는 이름의 스크립트 파일을 찾을 수 있으며, 이 스크립트 파일로 애플리케이션을 실행할 수 있습니다.

  1. 전통적인 Java 명령으로 프로그램 실행

vlxjre/bin/java로 프로그램을 수동으로 실행할 수도 있으며, 이 명령의 형식은 일반 java 명령과 동일합니다.

출력 디렉토리에서 vlxjre라는 폴더를 볼 수 있으며, 이것이 커스터마이즈된 JRE이고, 암호화된 jar 파일은 vlxlib 폴더에 저장됩니다.

vlxjre/bin/java -jar vlxlib/xxx.jar
vlxjre/bin/java -cp vlxlib/xxx.jar MainClass
vlxjre/bin/java -cp "vlxlib/*" MainClass
vlxjre/bin/java -Xms512M -Xmx1024m -cp "vlxlib/*" MainClass

Java 8은 현재 vlxjre/bin/java -jar를 통한 실행을 지원하지 않습니다. vlxjre/bin/java -cp xx MainClass를 사용하세요.

주의사항

이 프로그램의 대상 플랫폼이 macOS 또는 Linux이지만 Windows에서 빌드된 경우, 첫 번째 시작 전에 대상 플랫폼에서 add-executable-permission.sh를 실행하여 프로그램에 실행 권한을 부여하세요.