자체 서명 CA 인증서 등록
클러스터링 구성을 위해서 crowd 인증을 잠시 disable 시키고 구성 완료 후 enable 시켰을 때, https로 설정한 url이 Name or service not known
에러를 발생시킴
해결책
SSL 인증서가 자체 서명되었거나 사내 CA로부터 발급된 경우,
Java 기반 애플리케이션(Jira, Confluence, Crowd) 또는 curl
같은 시스템 도구에서 인증 오류가 발생하며.
이 문제를 해결하기 위해, 각각의 환경에서 신뢰 가능한 CA로 등록해야 함.
인증 관련 핵심 개념 정리
개념 | 설명 |
---|---|
개인키 (Private Key) | 서버만이 가지고 있으며 외부에 공개되지 않음. HTTPS 연결 시 복호화에 사용됨. |
공개키 인증서 (.crt) | 이 서버가 어떤 도메인을 대표하는지, 어떤 기관에서 서명되었는지를 포함함. |
루트 CA (Root Certificate Authority) | 브라우저/시스템이 기본적으로 신뢰하는 인증기관. 공개키를 통해 인증서 서명을 검증함. |
중간 CA (Intermediate CA) | 루트 CA 대신 실제로 인증서 서명을 수행하는 중간 기관. |
인증서 체인 | 서버 인증서 → 중간 CA → 루트 CA 순서로 연결된 인증서 묶음. |
⚠️ Java는 시스템 CA 목록을 사용하지 않고 자체 keystore(cacerts)만 사용함.
문제 증상 (Curl로 확인)
curl: (60) SSL certificate problem: self-signed certificate in certificate chain
Java Keystore에 CA 인증서 등록하기
서버 두 대에 모두 등록하기!!
CA 인증서 파일 준비
파일명 예:
lavence-ca.crt
(rootCA 인증서)PEM 형식이어야 하며,
-----BEGIN CERTIFICATE-----
로 시작해야 함
등록 명령 실행
# file 디렉토리는 ca인증서가 있는 곳으로. 미리 디렉토리에 ca 파일을 넣었음.
sudo keytool -importcert \
-alias lavence-ca \
-file /etc/pki/tls/certs/lavence-ca.crt \
-cacerts \
-storepass changeit \
-noprompt
등록 확인
keytool -list -cacerts -storepass changeit | grep lavence
서비스 재시작
(명령어 생략)
시스템 curl/OS에서 CA 인증서 등록하기
CA 인증서 복사
sudo cp lavence-ca.crt /etc/pki/ca-trust/source/anchors/
Truststore 업데이트
sudo update-ca-trust extract
검증
curl -I https://lavence-test.com
→ 인증 오류 없이 정상적으로 통신돼야 함
인증서 유효성 검증 도구
# 인증서 전체 체인 확인
openssl s_client -connect lavence-test.com:443 -showcerts
# 인증서 형식 확인
openssl x509 -in lavence-ca.crt -text -noout
기타 팁
Apache에서 사용하는
SSLCertificateFile
은 인증서 체인 전체를 포함하는 것이 좋다 (bundle.crt
).인증서가 여러 개 연결되어 있는 경우, 중간 CA 이후만 추출해서 등록해야 함 (서버 인증서 제외).
changeit
은 Java truststore의 기본 비밀번호이다. 필요 시 변경 가능.
트러블슈팅
로그에서 xsrf 에러 발견
2025-04-15 17:42:32,570+0900 http-nio-8080-exec-24 url: /jira/rest/wrm/2.0/resources; user: admin WARN admin 1062x231x1 i6u2u0 10.220.0.163,10.220.0.60 /rest/wrm/2.0/resources [c.a.p.r.c.security.jersey.XsrfResourceFilter] Additional XSRF checks failed for request: http://lavence-test.com/jira/rest/wrm/2.0/resources , origin: https://lavence-test.com , referrer: https://lavence-test.com/jira/plugins/servlet/cluster-monitoring , credentials in request: true , allowed via CORS: false
2025-04-15 17:42:38,506+0900 http-nio-8080-exec-2 url: /jira/rest/analytics/1.0/publish/bulk; user: admin WARN admin 1062x232x1 i6u2u0 10.220.0.163,10.220.0.60 /rest/analytics/1.0/publish/bulk [c.a.p.r.c.security.jersey.XsrfResourceFilter] Additional XSRF checks failed for request: http://lavence-test.com/jira/rest/analytics/1.0/publish/bulk , origin: https://lavence-test.com , referrer: https://lavence-test.com/jira/plugins/servlet/cluster-monitoring , credentials in request: true , allowed via CORS: false
server.xml에서 https로 수정하지 않아서 생기는 문제
설정에서 https - proxying을 설정 풀어주고 프록시 이름을 설정. 기존 설정 주석처리
==============================================================================================================
HTTPS - Proxying Confluence via Apache or Nginx over HTTPS
If you're proxying traffic to Confluence over HTTPS, uncomment the connector below and comment out the others.
Make sure you provide the right information for proxyName and proxyPort.
For more information see:
Apache - https://confluence.atlassian.com/x/PTT3MQ
nginx - https://confluence.atlassian.com/x/cNIvMw
==============================================================================================================
-->
<Connector port="8090" connectionTimeout="20000" redirectPort="8443"
maxThreads="48" maxPostSize="16777216" minSpareThreads="10"
enableLookups="false" acceptCount="10" URIEncoding="UTF-8"
protocol="org.apache.coyote.http11.Http11NioProtocol"
scheme="https" secure="true" proxyName="lavence-test.com" proxyPort="443"/>