Docker Nexus Maven Https 설정

JongHwa Hong·2023년 7월 14일
0

Docker-Nexus

목록 보기
3/4
post-thumbnail

개요


Docker 에서 Nexus를 다른 설정없이 최초 배포하게 되면, http로 배포되게 된다.

문제는 Maven 3.6.0 버전 부터는 http를 사용하여 원격 레포지토리와 통신하는 행위를

보안 및 안정성을 위해서 Block 하기 시작했기 때문에, Nexus 레포지토리를 가져다 사용하는데 어려움이 있을 수 있다.

물론, 아직도 옵션을 잘 설정하면 http 통신을 사용할 수 있지만, 문제를 회피하기 보다는

해결하는 것이 더 바람직한 것은 말할 필요 없다.

이번 기회에 Https 통신으로 변경하는 방법과 SSL 인증에 대하여 알아보자.

Docker Nexus WAS 설정 변경


먼저 Docker로 배포된 Nexus를 구동시키는 jetty WAS의 설정을 변경해 주어야 한다.

문제 해결을 위해서는, 우선 Docker 컨테이너에 접속해야 한다.

## root 계정 접속
docker exec -it -u root nexusContainerName bash

기본 구동된 Nexus 서버는 microdnf를 패키지 매니저로 사용하고 있다.

SSL 인증을 위한 도구인 openssl을 설치해주고, 문서작성 편의를 위하여 vim 또한 사용해주자.

microdnf install vim
microdnf install openssl

구동 정보가 담겨있는 nexus-default.properties 파일의 내용을 변경해주자.

vim nexus-dfault.properties

### 오픈된 파일의 내용

## DO NOT EDIT - CUSTOMIZATIONS BELONG IN $data-dir/etc/nexus.properties
##
# Jetty section
application-port-ssl=8443
application-host=0.0.0.0
nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-https.xml,${jetty.etc}/jetty-requestlog.xml
nexus-context-path=/${NEXUS_CONTEXT}

# Nexus section
nexus-edition=nexus-pro-edition
nexus-features=\
nexus-pro-feature

nexus.hazelcast.discovery.isEnabled=true

## ssl 인증서가 위치할 경로
ssl.etc=/opt/sonatype/nexus/etc/ssl

위 환경에서, nexus-args 칸에 기본값으로는

${jetty.etc}/jetty-http.xml

가 설정되어 있는데, ‘s’ 한글자만 추가하여 https 로 변경해주면 끝이다.

이제, jetty-https.xml 파일 위치로 이동하여 비밀번호를 변경해주자.

이때, 비밀번호는 openssl을 이용하여 발급한 Self signed SSL 인증서가 될 예정이다.

Self Signed SSL 인증서 생성에 관한 포스트는 따로 작성하도록 하겠다.

cd jetty
vim jetty-https.xml

## 아래 3가지 태그를 찾아내어 비밀번호를 내가 인증서에 설정할 비밀번호로 수정해주자.

<Set name="KeyStorePassword">123456</Set>

<Set name="KeyManagerPassword">123456</Set>

<Set name="TrustStorePassword">123456</Set>

이제 Self Signed SSL 인증서를 생성하고, Container를 restart 시키면

https로 구동될 준비가 끝나게된다.

profile
서버 개발자 홍종화 입니다.

0개의 댓글