설명
tls.Config{InsecureSkipVerify: true}는 기본 서버 인증서 체인·호스트네임 검증을 비활성화합니다. 올바른 별도 검증이 없다면 서버의 신원을 확인할 수 없습니다.
잠재적 영향
- 중간자 공격자가 유효하지 않은 인증서로 연결을 가로챌 수 있습니다.
- 민감한 요청과 응답이 노출되거나 변조될 수 있습니다.
해결 방법
- 기본 인증서 검증을 유지하고 신뢰할 CA와 실제 서버 인증서를 올바르게 구성하세요.
- 연결 대상에 맞는
ServerName을 사용하세요. 별도의 검증이 필요하다면VerifyConnection등에서 신뢰와 대상 신원을 제대로 검증해야 합니다. - mTLS의 클라이언트 인증은 서버 인증서 검증을 대신하지 않습니다. 테스트용 검증 예외를 운영 코드에 남기지 마세요.
예시
TLS 클라이언트 설정의 발췌입니다. 연결 코드에서 대상 호스트명과 신뢰할 루트 인증서를 올바르게 제공해야 합니다. 최소 TLS 버전 설정만으로 서버의 신원이 확인되는 것은 아닙니다.
변경 전
go
cfg := &tls.Config{InsecureSkipVerify: true}
변경 후
go
cfg := &tls.Config{MinVersion: tls.VersionTLS12}
설명:
- 변경 전: TLS 클라이언트 설정에서
InsecureSkipVerify: true를 사용하면 기본 서버 인증서 체인·호스트네임 검증이 비활성화됩니다. - 변경 후:
InsecureSkipVerify의 기본값인false를 유지하고 최소 TLS 버전을 지정합니다. 올바른 호스트명·신뢰 설정을 갖춘 연결에서 기본 인증서 검증을 사용합니다.