CentOS 8에 SVN을 세팅하고 Checkout 도중 SSL 오류가 발생하여 6시간 삽질을 통해 해결한 내용을 공유하려 합니다.
관련된 글이 잘 나오지 않아서, 이 글을 읽고 도움이 되는 분이 있으면 좋겠습니다. 🙏
SVN 설치
우선 SVN을 설치하고 checkout 받은 과정은 아래와 같습니다.
yum list installed subversion // svn 설치 확인
yum list subversion // 설치 가능 목록 확인
yum install subversion.x86_64 // svn 설치
mkdir /svn/repo
cd /svn/repo
svn checkout svn주소 --username="유저명" --password="암호"
디렉터리를 생성하고 checkout이 무난하게 될 거라고 생각했지만.. 에러가 발생했습니다.
svn: E170013: Unable to connect to a repository at URL
Subversion error: svn: E120171: Error running context: An error occurred during SSL communication
해결 방법 1. TLS 최소 버전 낮추기
E120171 에러를 구글링을 해보니 OS에서 지원하는 TLS 최소 버전이 SVN 서버에서 사용하는 버전보다 높기 때문에 오류가 발생할 수 있다고 합니다. 사용하는 SVN 서버가 오래되었다고 알고 있었기 때문에 그럴 수 있을 것 같다고 생각해 TLS 최소 버전을 낮춰보았습니다.
시스템의 파일 위치를 찾고 변경 전 백업 파일 생성하기
"openssl version -d"
// 파일 맨 위에 추가
openssl_conf = default_conf
// 파일 끝에 추가
[ default_conf ]
ssl_conf = ssl_sect
[ssl_sect]
system_default = ssl_default_sect
[ssl_default_sect]
MinProtocol = TLSv1
CipherString = DEFAULT:@SECLEVEL=1
해결 방법 2. SVN checkout 시 잘못된 인증서 허용 옵션
웹에서 SVN 주소로 접근해보니 접속은 되지만 HTTPS 연결이 정상적으로 되지 않고 있었습니다.
Checkout 받을때 신뢰하지 않는 SSL 서버 인증서도 허용하는 옵션이 있습니다.
—non-interactive를 붙여줘야만 —trust-server-cert 옵션을 사용할 수 있습니다.
특정 원인만 허용하고 싶다면 trust-server-cert-failures 옵션으로도 사용할 수 있습니다.
--username과 --password는 함께 입력해야 합니다.
svn checkout --non-interactive --trust-server-cert
svn checkout--non-interactive trust-server-cert-failures="unknown-ca,cn-mismatch,expired,not-yet-valid,other"
해결 방법 3. CentOS 암호화 정책을 Legacy로 설정
저는 이 단계에서 문제가 해결됐습니다.
CentOS 암호화 정책을 Legacy로 설정하는 옵션이 있었는데 TLS 1.0 or TLS 1.1을 허용하게 됩니다.
update-crypto-policies --set LEGACY
해결 방법 1번과 3번은 보안 수준을 낮추는 것이다 보니 조심해서 사용하시는 게 좋을 것 같습니다.
'기타' 카테고리의 다른 글
[Docker] Docker 호스트에 원격으로 배포하기(docker compose 이용) (1) | 2021.12.18 |
---|---|
[MacBook]맥북에게 5000번 포트를 빼앗겼을때 - error: bind EADDRINUSE null:5000 에러 해결 (8) | 2021.12.18 |
REST API란, RESTful API 설계 가이드 (0) | 2021.01.20 |
[JWT] 서버 인증 이해하기 - JWT란, 서버 인증 / 토큰 인증 (1) | 2020.10.07 |
[Git] 깃허브란? Github 시작하기 - 1 (0) | 2020.06.18 |