전송 계층 보안 정보
SSL을 대체한 TLS는 GitHub Enterprise Server를 처음 시작할 때 자체 서명된 인증서로 사용하도록 설정되고 구성됩니다. 자체 서명된 인증서는 웹 브라우저 및 Git 클라이언트에서 신뢰할 수 없으므로 TLS를 사용하지 않도록 설정하거나 Let's Encrypt와 같은 신뢰할 수 있는 인증 기관에서 서명한 인증서를 업로드할 때까지 클라이언트는 인증서 경고를 보고합니다.
SSL을 사용하도록 설정하면 GitHub Enterprise Server 어플라이언스가 HTTP 엄격한 전송 보안 헤더를 보냅니다. TLS를 사용하지 않도록 설정하면 브라우저에서 HTTP로 프로토콜 다운그레이드를 허용하지 않으므로 사용자가 어플라이언스에 액세스할 수 없게 됩니다. 자세한 내용은 Wikipedia에서 “HSTS(HTTP Strict Transport Security)”를 참조하세요.
Warning
부하 분산 장치에서 HTTPS 연결을 종료할 때 부하 분산 장치에서 GitHub Enterprise Server로의 요청도 HTTPS를 사용해야 합니다. HTTP에 대한 연결을 다운그레이드하는 것은 지원되지 않습니다.
사용자가 2단계 인증에 FIDO U2F를 사용하려면 인스턴스에 대해 TLS를 사용하도록 설정해야 합니다. 자세한 내용은 "2단계 인증 구성"을(를) 참조하세요.
필수 조건
프로덕션에서 TLS를 사용하려면 신뢰할 수 있는 인증 기관에서 서명한 암호화되지 않은 PEM 형식의 인증서가 있어야 합니다. 내부 인증 기관이 서명한 인증서를 사용하려면 루트 인증서와 중간 인증서를 설치해야 합니다. 자세한 내용은 "TLS 오류 문제 해결"을(를) 참조하세요.
또한 인증서는 “하위 도메인 격리 사용”에 나열된 하위 도메인에 대해 구성된 주체 대체 이름이 필요하며 중간 인증 기관에서 서명한 경우 전체 인증서 체인을 포함해야 합니다. 자세한 내용은 Wikipedia에서 “주체 대체 이름”을 참조하세요.
ghe-ssl-generate-csr
명령을 사용하여 인스턴스에 대한 CSR(인증서 서명 요청)을 생성할 수 있습니다. 자세한 내용은 "명령줄 유틸리티"을(를) 참조하세요.
키는 RSA 키여야 하며 암호가 없어야 합니다. 자세한 내용은 "TLS 오류 문제 해결"을(를) 참조하세요.
사용자 지정 TLS 인증서 업로드
Warning
TLS를 구성하면 GitHub Enterprise Server 인스턴스에 약간의 가동 중지 시간이 발생합니다.
-
페이지의 오른쪽 상단에 있는 GitHub Enterprise Server의 관리 계정에서 을 클릭합니다.
-
“Site admin”(사이트 관리자) 페이지에 아직 없는 경우 왼쪽 상단에서 Site admin(사이트 관리자)을 클릭합니다.
-
" 사이트 관리자" 사이드바에서 관리 콘솔 을 클릭합니다.
-
"설정" 사이드바에서 개인 정보 보호를 클릭하고 개인 정보 모드를 선택 취소합니다.
-
TLS only (recommended)(TLS만(권장))를 선택합니다.
-
“TLS 프로토콜 지원”에서 허용하려는 프로토콜을 선택합니다.
-
“인증서”에서 파일 선택을 클릭한 다음, 설치할 TLS 인증서 또는 인증서 체인(PEM 형식)을 선택합니다. 일반적으로 이 파일에는 .pem, .crt 또는 .cer 확장명이 있습니다.
-
“암호화되지 않은 키”에서 파일 선택을 클릭한 다음, 설치할 RSA 키(PEM 형식)를 선택합니다. 일반적으로 이 파일에는 .key 확장명이 있습니다.
-
"설정" 사이드바에서 설정 저장을 클릭합니다.
Note
관리 콘솔에 설정을 저장하면 시스템 서비스가 다시 시작되어 사용자에게 표시되는 가동 중지 시간이 발생할 수 있습니다.
-
구성 실행이 완료될 때까지 기다립니다.
Let's Encrypt 지원 정보
Let's Encrypt는 ACME 프로토콜을 사용하여 브라우저에서 신뢰하는 무료 자동화된 TLS 인증서를 발급하는 퍼블릭 인증 기관입니다. 필요한 수동 유지 관리 없이 어플라이언스의 Let's Encrypt 인증서를 자동으로 가져오고 갱신할 수 있습니다.
Let's Encrypt 자동화를 사용하려면 HTTP를 통해 공개적으로 액세스할 수 있는 호스트 이름으로 어플라이언스를 구성해야 합니다. 또한 어플라이언스에서 아웃바운드 HTTPS 연결을 만들 수 있어야 합니다.
Let's Encrypt를 사용하여 TLS 인증서 관리 자동화를 사용하도록 설정하면 GitHub Enterprise Server 인스턴스이(가) Let's Encrypt 서버에 연결하여 인증서를 가져옵니다. 인증서를 갱신하려면 Let's Encrypt 서버가 인바운드 HTTP 요청을 사용하여 구성된 도메인 이름 제어의 유효성을 검사해야 합니다.
GitHub Enterprise Server 인스턴스에서 ghe-ssl-acme
명령줄 유틸리티를 사용하여 Let's Encrypt 인증서를 자동으로 생성할 수도 있습니다. 자세한 내용은 "명령줄 유틸리티"을(를) 참조하세요.
Let's Encrypt를 사용하여 TLS 구성
Let's Encrypt 자동화를 사용하려면 HTTP를 통해 공개적으로 액세스할 수 있는 호스트 이름으로 어플라이언스를 구성해야 합니다. 또한 어플라이언스에서 아웃바운드 HTTPS 연결을 만들 수 있어야 합니다.
Warning
TLS를 구성하면 GitHub Enterprise Server 인스턴스에 약간의 가동 중지 시간이 발생합니다.
-
페이지의 오른쪽 상단에 있는 GitHub Enterprise Server의 관리 계정에서 을 클릭합니다.
-
“Site admin”(사이트 관리자) 페이지에 아직 없는 경우 왼쪽 상단에서 Site admin(사이트 관리자)을 클릭합니다.
-
" 사이트 관리자" 사이드바에서 관리 콘솔 을 클릭합니다.
-
"설정" 사이드바에서 개인 정보 보호를 클릭하고 개인 정보 모드를 선택 취소합니다.
-
TLS only (recommended)(TLS만(권장))를 선택합니다.
-
Let's Encrypt를 사용하여 TLS 인증서 관리 자동화 사용을 선택합니다.
-
"설정" 사이드바에서 설정 저장을 클릭합니다.
Note
관리 콘솔에 설정을 저장하면 시스템 서비스가 다시 시작되어 사용자에게 표시되는 가동 중지 시간이 발생할 수 있습니다.
-
구성 실행이 완료될 때까지 기다립니다.
-
"설정" 사이드바에서 개인 정보 보호를 클릭하고 개인 정보 모드를 선택 취소합니다.
-
TLS 인증서 요청을 클릭합니다.
-
“상태”가 “시작됨”에서 “완료”로 변경될 때까지 기다립니다.
-
구성 저장을 클릭합니다.
Let's Encrypt를 사용하여 TLS 문제 해결
Let's Encrypt에서 TLS 인증서에 영향을 주는 문제를 해결할 수 있습니다.
오류: "보안 오류로 인해 리소스가 로드되지 않습니다."
경우에 따라 최종 사용자는 GitHub Enterprise Server 인스턴스의 서비스에 대한 페이지가 브라우저의 개발자 도구에서 다음 오류로 응답한다고 보고할 수 있습니다.
Security error prevented the resource from being loaded
이러한 오류를 해결하려면 인증서를 다시 발급하여 Let's Encrypt 인증서의 SAN(주체 대체 이름)을 업데이트해야 합니다. 인스턴스의 인증서를 교체하려면 사용자 연결 가동 중지 시간이 필요합니다.
-
예정된 가동 중지 시간을 사용자에게 전달하고 유지 관리 모드를 사용하도록 설정하는 것이 좋습니다. 자세한 내용은 다음 문서를 참조하세요.
- "엔터프라이즈에 대한 사용자 메시지 사용자 지정"
- "유지 관리 모드 사용 설정 및 예약"1. 에 SSH합니다. 인스턴스가 여러 노드로 구성된 경우(예: 고가용성 또는 지역 복제가 구성된 경우) 주 노드에 대한 SSH를 수행합니다. 클러스터를 사용하는 경우 임의 노드에 대해 SSH를 수행할 수 있습니다. HOSTNAME을 인스턴스의 호스트 이름 또는 노드의 호스트 이름이나 IP 주소로 바꿉니다. 자세한 내용은 "관리 셸(SSH)에 액세스"을(를) 참조하세요.
Shell ssh -p 122 admin@HOSTNAME
ssh -p 122 admin@HOSTNAME
-
Let's Encrypt를 사용하지 않도록 설정하려면 다음 명령을 실행합니다.
Shell ghe-ssl-acme -d
ghe-ssl-acme -d
-
Let's Encrypt에 대한 기존 설정을 지우려면 다음 명령을 실행합니다.
Shell ghe-ssl-acme -x
ghe-ssl-acme -x
-
Let's Encrypt에서 새 인증서를 요청하고 설치하려면 다음 명령을 실행합니다.
Shell ghe-ssl-acme -e
ghe-ssl-acme -e
-
구성을 적용하려면 다음 명령을 실행합니다.
Note
구성을 실행하는 동안 의 서비스가 다시 시작될 수 있으므로 짧은 가동 중지 시간이 발생할 수 있습니다.
Shell ghe-config-apply
ghe-config-apply
-
구성 실행이 완료될 때까지 기다립니다.
-
사용자 메시지 또는 유지 관리 모드를 구성한 경우 메시지를 제거하고 유지 관리 모드를 사용하지 않도록 설정합니다.