SSL를 이용하여 HTTPS 포트에 Jenkins 설정하기

Song·2021년 8월 8일
0
post-thumbnail

Jenkins란,

  • JAVA 기반의 오픈 소스로 소프트웨어 개발 시 지속적 통합 서비스 (CI)를 제공하는 툴이다.
  • 로컬에서 개발 후 신규 코드를 특정 플러그인으로 푸시하면 젠킨스에서는 정해진 파이프라인에 따라 빌드, 테스트 등을 진행시킨다.

서버 환경

Amazon Linux version2 에서 진행하였다.

Step 1. 젠킨스 설치

### JDK 1.8.0 설치 및 버전 확인
sudo yum install -y java-1.8.0-openjdk-devel.x86_64
java -version 

### Jenkins 설치
# 1. jenkins repository를 설정파일을 생성
sudo wget -O /etc/yum.repos.d/jenkins.repo
https://pkg.jenkins.io/redhat-stable/jenkins.repo

# 2. 설정파일 생성 후 아래 실행
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

# 3. 관리자 권한으로 변경
sudo -s

# 4. yum 을 이용한 젠킨스 설치
yum install jenkins

# 5. 젠킨스 실행
sudo systemctl start jenkins

# (Optional) 만약 부팅시 가능하게 설정하려면 다음도 추가
# sudo systemctl enable jenkins 

# 6. 젠킨스 상태 확인
sudo systemctl status jenkins

Step 2. SSL 인증서 .jks로 변환

.jks란 java key store의 약자로서 자바 언어에서 사용되는 보안 인증서

# 1. .crt 및 .key 를 조합하여 jenkins.pfx 만들기
# export password 입력 필요!
openssl pkcs12 -export -in <crt인증서 경로>.crt -inkey <private키 경로>.key -out jenkins.pfx

# .pfx 에 포함된 인증서 확인 
openssl pkcs12 -info -in jenkins.pfx

# 2. 위에서 생성한 jenkin.pfx를  .jks 로 변환
keytool -importkeystore -srckeystore jenkins.pfx -srcstoretype pkcs12 -destkeystore jenkins.jks -deststoretype jks

# 3. jenkins 전용 폴더 생성 후 jks 파일 이동
mkdir -p /etc/jenkins
cp jenkins.jks /etc/jenkins/

# 4. key와 폴더 권한 변경
chown -R jenkins: /etc/jenkins
chmod 700 /etc/jenkins
chmod 600 /etc/jenkins/jenkins.jks

Step 3. 젠킨스 config 파일 설정

# 1. config 파일 접속
sudo vi /etc/sysconfig/jenkins

아래와 같이 변경하기
JENKINS_PORT="-1"	# http 포트 비활성화
JENKINS_HTTPS_PORT="9090"	# 젠킨스 포트 설정 (다른 포트여도 ㄱㅊ)
JENKINS_HTTPS_KEYSTORE="/etc/jenkins/jenkins.jks" # 앞서 변환한 .jks 인증서 경로
JENKINS_HTTPS_KEYSTORE_PASSWORD="<인증서 비밀번호>"
JENKINS_HTTPS_LISTEN_ADDRESS="0.0.0.0"	# 모든 ip에서 접근할 수 있도록 변경
JENKINS_ENABLE_ACCESS_LOG="yes"	# 초기 admin 비밀번호를 확인할 수 있도록 로그 활성화

# 2. 젠킨스 재실행
sudo systemctl restart jenkins

Step 4. EC2 Security Group 수정

AWS에 접속하여 젠킨스 포트번호 (9090) 열어주기

참고

https://www.sslcert.co.kr/guides/SSL-Certificate-Convert-Format
https://devopscube.com/configure-ssl-jenkins/

profile
Learn From Yesterday, Live Today, Hope for Tomorrow

0개의 댓글