이 문서는 JFrog Artifactory에서 서명 키, SSH 키 등의 관리 가이드를 공유하기 위해 작성되었다.
|
Artifactory의 키 관리 기능을 사용하면 아티팩트를 암호화하거나 디지털 서명하는 데 사용되는 키를 한 곳에서 만들고 조직 전체적으로 관리하기에 용이합니다.
이 기능을 사용하면 다음과 같은 Artifactory 보안 설정을 구성할 수 있습니다.
JFrog 플랫폼을 사용하면 여러 쌍의 RSA 서명 키를 관리하여 인증을 위해 Alpine 패키지에 서명할 수 있습니다.
리눅스에서 GPG public key와 private key를 생성하는 방법입니다. 다음 예시 코드는 Ubuntu 22.04 버전을 토대로 작성되었습니다.
# 키 생성 gpg --gen-key # 프롬프트 창에서 userId와 이메일 Passphrase 설정 # 시스템의 모든 키 나열 및 Artifactory에서 사용하려는 쌍 선택 gpg --list-keys --keyid-format=long # 관련 라이선스를 선택하여 목록-키에서 키-ID 확인 pub rsa3072/31864F1B... 2024-08-28 [SC] [expires: 2026-08-28] uid [ultimate] UserID <Email> sub rsa3072 2024-08-28 [E] [expires: 2026-08-28] # 지정된 ID를 가진 개인 키를 파일로 내보내기 gpg --output {개인 키 파일 이름 및 경로} --armor --export-secret-keys {키-ID / 예시) 31864F1B... } # 지정된 ID를 가진 공개 키를 파일로 내보내기 gpg --output {공개 키 파일 이름 및 경로} --armor --export {키-ID / 예시) 31864F1B... } |
RSA 키 추가하는 방법과 동일합니다. 새로운 GPG 키를 업로드한 후에는 JFrog Distribution에 사용할 수 있습니다.
(작성중)
Java Key Store : 가상 저장소에서 다운로드한 JAR 파일을 자동으로 서명하는 데 사용되는 서명 키를 보관하는 키 저장소
JAR 파일에 서명하려면 Key Store에 추가할 키 쌍을 우선 생성해야 합니다.
JRE (Java Runtime Environment)에 내장된 Oracle의 keytool
유틸리티로 명령을 실행하여 만들 수 있습니다.
다음은 keytool 로 키 쌍을 생성한 코드의 예시입니다.
keytool -keystore <keystore 파일명> -keypass <키 패스워드> -storepass <store 패스워드> -alias <store 별칭> \ -genkeypair -dname "cn=<사용자명>, ou=<부서명>, o=<기관명>, S=<도시>, c=<국가>" # key algorithm을 특정해야 하는 경우 -keyalg rsa 옵션 추가 # KeyStore 내 인증서 목록을 출력하여 생성 확인 $ keytool -list -keystore <keystore 파일명> # 목록 출력 예시 Enter keystore password: # store 패스워드 입력 Keystore type: JKS Keystore provider: SUN Your keystore contains 1 entry mykey, Aug 28, 2024, PrivateKeyEntry, Certificate fingerprint (SHA-256): F8:1A:47:... |
Key Store를 설정하고 나면 가상 저장소 (Virtual Repository)에 키 쌍을 구성할 수 있습니다.
JFrog Artifactory는 RSA Public / Private 키를 사용하여 Git LFS 및 JFrog CLI에 대한 SSH 인증을 지원합니다.
이를 통해 SSH를 통해 인증된 Artifactory 서버와 민감한 정보를 교환할 수 있습니다.
Artifactory에 대한 SSH 키 쌍을 생성합니다. 다음은 리눅스에서 생성한 예시입니다.
ssh-keygen -t rsa -C "server@domain.com" |
관리자 메뉴 → Artifactory → Security - Key Management → SSH Keys
Git LFS 클라이언트나 Artifactory CLI에서 Artifactory에 요청을 보낼 때 인증을 받을 수 있도록 공개 키로 Artifactory를 구성합니다.
Artifactory에 대한 SSH 키 쌍을 ~/.ssh
디렉토리 하위에 생성합니다. 다음은 리눅스에서 생성한 예시입니다.
ssh-keygen -t rsa -C "USER@domain.com" |
사용자 프로필에 SSH 공개 키를 등록해야 합니다. 상단 메뉴 바의 오른쪽 사용자 id 드롭다운 메뉴 중 Edit Profile에서 Add New SSH Key |
Artifactory는 SSH를 통해 Git LFS 클라이언트 인증을 지원합니다.
~/.ssh/known_hosts/
known_hosts
파일을 업데이트# 형식 [<server_custom_base_URL>]:<server_port> <content of the Artifactory server public ssh key> # 예시 [myartifactory.company.com]:1339 ssh-rsa AAAAB3Nza...PC0GuTJT9TlaYD user@domain.com |
# 형식 # USERNAME 필드는 선택이지만, 자체 참조를 위해 추가하는 것이 좋음 ssh://$USERNAME@$HOST:$PORT/artifactory/<repoKey> # 예시 url = "ssh://john@myartifactory.company.com:1339/artifactory/lfs-local" |
JFrog 플랫폼 관리자 권한이 필요합니다. |
이제 Artifactory SSH 서버에서 허용하는 암호, MAC, 서명 및 키 교환 알고리즘을 제어할 수 있습니다.
기본적으로는 비어있거나 null 값이며, 쉼표(,)로 구분된 복수 값을 가질 수 있으며 artifactory.ssh.*.algorithms
가 설정되어 있지 않은 경우에만 적용됩니다.
다음 상수 값들이 Include Only
알고리즘으로 추가되었습니다.
artifactory.ssh.cipher.algorithms=
artifactory.ssh.key.exchange.algorithms=
artifactory.ssh.mac.algorithms=
artifactory.ssh.signature.algorithms=
알고리즘 유형 | 값 (기본적으로 로드됨) | 더 이상 사용되지 않음 (이름으로 구성하지 않으면 로드되지 않음) |
---|---|---|
Cipher Algorithms |
|
|
Key Exchange Algorithms |
|
|
Message Authentication Codes (MAC) |
|
|
Signature Algorithms |
|
|