Profile

생각정리..

Lunight

[GitLab#2] SSL 설정


운영환경

Linux : ubuntu 14.04

git version  : 2.16.2

GitLab version : 10.4.4-ee


사내망에서 사용하는 부분이긴 하지만 

보안을 조금이라도 강화하기위해 SSL설정을 해보자. 


일단 SSL에 대해 공부해야하는데 GitLab을 설정하고 추후 SSL에 대해 공부를 좀 더 (아주많이) 해야겠다. 


참고 ) SSL 인증서에 대한 좋은글이 있다. 참고하자

http://ohgyun.com/429


0. 공부 및 이력관리를 위해 서버에 대한 셋팅을 위해 다음과 같이 터미널을 열고 설정했다.

     (병이라고 해야하나.. 뭐 습관이 무서운거니...^^.)



1. 개인키 발급(비밀번호 2회입력)


# openssl  genrsa  -out <키이름>   <비트 수>        // 암호없이 생성하는 경우

# openssl  genrsa  -<암호화알고리즘>  -out <키이름>  <비트수>        // 대칭키 암호화 알고리즘 적용





2. CSR 생성


# openssl req -new -days 365 -key server.key -out server.csr



CSR을 생성할 때 서버의 식별명을 입력하게 됩니다. 식별명은 각 서버를 공유하게 나타내는 이름으로 다음과 같은 정보를 포함합니다. 


  Country Name ( 국가코드) [] : KR
  State or Province Name ( 지역 ) [] : Seoul
  Locality Name ( 시/군/구 ) [] : Seocho
  Organization Name ( 회사명 ) [] : Hanbiro Inc
  Organizational Unit Name ( 부서명 ) [] : Linux Team
  Common Name ( 서비스도메인명 ) [] : www.hanbiro.com
  Email Address [] : hanbiro@hanbiro.com

CSR 항목에 대한 설명

Country Name : 이것은 두 자로 된 ISO 형식의 국가 코드입니다. 
State or Province Name : 시 이름을 입력해야 하며 약어를 사용할 수 없습니다. 
Locality Name : 이 필드는 대부분의 경우 생략이 가능하며 업체가 위치한 곳를 나타냅니다. 
Organization : 사업자 등록증에 있는 회사명과 일치되는 영문회사명을 입력하시면 됩니다. 
Organization Unit : "리눅스 관리팀", "윈도우 관리팀" 등과 같이 업체의 부서를 입력할 수 있습니다. 
Common Name : 인증받을 도메인주소를 입력하시면 됩니다.

이 정보로 웹 사이트를 식별하므로 호스트 이름을 변경할 경우 다른 디지털 ID를 요청해야 합니다. 
호스트에 연결하는 클라이언트 브라우저가 디지털 ID의 이름과 URL이 일치하는지를 확인합니다. 

☞ CSR 항목 입력시 주의사항

* Common Name 에는 인증서를 설치할 사이트의 도메인의 이름을 정확하게 입력하셔야 합니다.
* Common Name 에는 IP 주소, 포트번호, 경로명, http:// 나 https:// 등은 포함할 수 없습니다.
* CSR 항목에는 < > ~ ! @ # $ % ^ * / \ ( ) ? 등의 특수 68 문자를 넣을 수 없습니다.
* CSR 생성후 서버에 개인키 (Private Key) 가 생성됩니다. 개인키를 삭제하거나 분실할 경우 인증서를 발급받아도 설치가 불가합니다. 따라서 꼭 개인키를 백업받아 두셔야 합니다.
* 정보입력과정 마지막에 나오는 A challenge password 와 An optional company name 두 항목은 입력하지 마시고 Enter 만 누르고 넘어가야 합니다. 두 정보가 입력될 경우 잘못된 CSR 생성될 수 있습니다.



3. 개인키 암호제거


아파치 서버나 노드 서버의 경우 웹서버가 실행될 때마다 인증서의 개인키를 물어본다.

가능하다면 키를 제거하는 게 편리하다.


# cp server.key server.key.org

# openssl rsa -in server.key.org -out server.key



4. 인증서 생성(server.crt)


# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt





5. gitlab.rb 수정


# sudo vi /etc/gitlab/gitlab.rb


external_url을 https://로 수정해준다.



6. 인증서 키파일 복사 


이름을 변경해주고 (도메인이름으로 동일하게 맞춰 관리를 쉽게해줄 필요도 있어보인다)



인증서를 저장할 폴더 생성(/etc/gitlab/ssl)


# sudo mkdir -p /etc/gitlab/ssl


# sudo chmod 700 /etc/gitlab/ssl


파일을 경로(/etc/gitlab/ssl)폴더에 복사해준다.


# sudo cp 116.crt /etc/gitlab/ssl/


# sudo cp 116.key /etc/gitlab/ssl/




7. 방화벽 오픈 , 리다이렉트(80->443) 설정


# sudo ufw allow https


# sudo vi /etc/gitlab/gitlab.rb



8. GitLab 재시작


# sudo gitlab-ctl reconfigure



9. 접속완료