우분투 16.04 + apache2 HTTPS 적용하기 with SECTIGO SSL
요약
- 사이트 구글 자연 유입이 너무 적다.
- 원인 확인을 해보니 구글 검색 게재순위가 60위권이다.
- 찾아보니 구글은 보안 연결, HTTPS 연결을 좋아한다고 한다.
- 우분투 16.04 + apache2 + SECTIGO SSL 인증서 적용을 하자!
발단
블로그 운영을 열심히 하니 쿠팡 어필리에이트 매출이 7백만원이 넘었다. 넘긴 넘었는데… 없다. 자연 검색 유입이 없어도 너무 없다.
대부분 직접 홍보를 하거나 기타 활동을 통한 유입들 + 구글 ADS 를 통한 광고 집행으로는 유입이 되는데, 자연 유입은 전체 비율의 2~5 % 수준으로 미미하다. 광고에 사용되는 비용이 수익에 근접하다. 이대론 굶어죽는다.
구글 서치 콘솔을 확인해보니 평균 게재순위가 60위권이다. 유의미한 자연 키워드 유입을 위해선 못해도 게재순위 10위권 안쪽. 5위권 안으로는 들어가야 의미 있는 유입이 발생한다고 한다. 그 뒤로 밀리면 자연 유입이 줄어드는 것이다.
구글신에게 물어 물어 이유를 찾을 수 있었다. ‘구글 검색은 보안 연결 (HTTPS) 를 좋아한다. HTTPS가 적용된 사이트의 점수를 더 높게 친다.’
좋아. 나도 적용한다 HTTPS. 까이꺼 다들 하는거 나도 쉽겠지!
… 착각이었다. 적용하는데 4시간 가량 소요된듯 하다. 어쨋던 성공 했으니 포스팅을 해보자.
적용 환경
- AWS-우분투 16.04
- apache2
- SECTIGO SSL with https://www.securesign.kr/ (인증서 발급 대행처)
적용
증서 발급
나의 경우에는 큰 비용을 사용하고 싶지 않았다. 저렴한 인증서 발급 기관을 찾던 도중 SECTIGO 를 결정하게 되었다. ( VAT 포함 13,200 원에 1년짜리를 발급받았다.)
필요한 시간: 1 분.
인증서 발급
- 인증서 발급 대행 회원가입
https://www.securesign.kr/ 에 접속, 회원가입을 한다. 나의 경우에는 google로그인을 이용했다.
- 인증서 발급 기관을 고른다. 필자는 첫번째 SECTIGO 로 선택했다.
- 담당자 설정
대시보드에서 담당자설정으로 들어가 담당자를 설정한다. 본인 정보를 입력하면 된다.
- 인증서 신청
대시보드에서 인증서 신청하기를 선택한다.
- 인증서 기간 선택 및 담당자 선택
인증서 기간을 선택하고 (필자는 1년 12,000원을 선택했다.) Step 3 에서 설정한 담당자로 선택해준다.
- 인증서 생성을 위한 설정
1. 도메인 (CN) 에는 프로토콜(http)를 제외한 도메인을 입력한다.
2. 기본 웹서버는 본인 설정에 맞게, (필자는 Apache/ModSSL)
3. CSR 자동생성 선택 (키파일 생성을 위해, 적당히 입력해준다.) - 도메인 권한 인증 (DCV) 를 진행한다.
DCV는 쉽게 말해 도메인 소유권을 인증하는 과정이다. 필자는 EMAIL로 인증 진행했다. 아무 이메일로 가능한건 아니고 도메인정보에 포함되어야한다. (또는 웹서버 apache 어드민으로 등록된 이메일도 가능하다.)
참고로 이메일이 네이버면 더럽게 늦게 오거나… 안올수도 있다(공지로 써있다.) - 인증코드 입력
이메일은 이런식으로 온다. 빨간색 네모 안에 있는 인증코드를 복사해서 녹색 화살표의 here링크 클릭 후 나오는 창에 넣어주면 된다.
- 인증서 다운로드
모든 과정이 끝나면 약 3 ~ 5분 후에
인증서 관리 – 전체목록에 주문번호와 함께 ‘발급완료’로 표시된다.
여기서 주문번호를 눌러주면 해당 인증서 설정으로 갈 수 있다. - 각 인증서를 다운로드 한다.
각 인증서를 다운받거나, 귀찮으면 모든파일로 다운받는다.
- 같은 페이지에서 개인키도 복사해둔다.
인증서 설정 페이지에서 아래쪽을 보면 ‘개인키 [PEM 보기] 가 있다. PEM 보기를 누르면 나오는 개인키를 복사해두자.
- 여기까지 따라왔으면 이제 apache 설정을 진행해주면 된다.
아파치 설정은 아래쪽에 따로 작성하겠다.
아파치 설정 진행
우선 다운받은 인증서 파일들을 서버에 업로드 해야한다.
필자는 /etc/apache2/ssl 디렉토리를 만들고 안에 넣었다.
이제 sites-available 의 {도메인}.conf 를 수정해준다.
<VirtualHost *:443>
ServerName autorevenue.ai
ServerAlias www.autorevenue.ai
ServerAdmin webmaster@localhost
DocumentRoot {웹사이트 파일 경로}
SSLEngine on
SSLCertificateKeyFile {개인키PEM}
SSLCertificateFile /etc/apache2/ssl/{도메인명}.crt.pem
SSLCACertificateFile /etc/apache2/ssl/RootChain/AAACertificateServicesRoot.crt.pem
SSLCertificateChainFile /etc/apache2/ssl/RootChain/chain-bundle.pem
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName autorevenue.ai
Redirect / https://autorevenue.ai/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
SSLCertificateKeyFile
– step11 에서 복사해둔 개인키 [PEM] 에서 복사한 파일을 넣어준다. 대충아무이름마음대로.key 로 저장 후 원하는 경로에 넣어주면 된다. 필자는 /etc/apache2/ssl/어쩌구.key 로 저장했다.
SSLCertificateFile
모든파일 다운로드를 진행했다면 나오는 폴더의 ReetChain 디렉토리가 아닌 상위 디렉토리에 있는 도메인_년월일.crt.pem (필자는 autorevenue.ai_20200427S2LA.crt.pem) 파일 경로를 넣어준다.
SSLCACertificateFile
RootChain 폴더의 AAACert…어쩌구…ServicesRoot.crt.pem 파일을 적어준다.
SSLCertificateChainFile
마찬가지로 RootChain 폴더의 chain-bundle.pem 파일 경로를 넣어준다.
여기까지가 인증서 기본 설정 끝이다. 간단하죠?
추가로 Redirect / https://autorevenue.ai/ 구문은 80포트 (http) 로 들어오는 모든 요청을 https로 리다이렉트 시킨다는 이야기다.
나머지 기타 설정은 본인 설정에 맞게 설정해주고 아파치를 재시작 해주자.
service apache2 restart
정상적으로 적용이 되었다면 아무런 애러 없이 재시작이 될것이다.
실패한다면 아래 명령어로 애러 로그를 확인하자.
journalctl -xe
이래도 모르겠다면 어딘가에 문의해보자. 필자에게 질문해도 아는 한도 내에선 노력해서 답변해보겠다. (노력해 보겠습니다..ㅎㅎ)
자. 이제 https://autorevenue.ai/blog 에도 보안 연결이 적용된것을 확인할 수 있다. 성공!!!
다들 고생하셨습니다 🙂 전 처음에 4시간이나 걸렸네요…
21년2월8일 추가
이전과 비교하면 평균 게재순위가 많이 올라와있습니다. 여러 영향이 있었겠지만 SSL 설정도 좋은 스코어를 받은 듯 합니다.