작업실

Certificate Transparency 인증서 투명성 우분투 16.04 Nginx 인증받기

1. 인증서 투명성에 대하여 

 

 

Certificate Transparency 인증서 투명성 인증을 받으면 

 

1. 도메인 소유주의 허락없이 SSL 인증서 발급을 불가능하게 만듭니다.

2. 인증서가 실수 또는 악의적으로 발행되는 것을 감시 할 수 있습니다.

3. 실수 또는 악의적으로 발행된 인증서로부터 사용자를 보호합니다.

자세한 내용은 구글의 설명을 참조하시면 좋습니다. (https://www.google.com/transparencyreport/https/ct/?hl=ko)

 

 

그래서 제 생각엔 HTTPS를 이용하는 홈페이지는 모두 인증서 투명성을 제공하면 좋을 것 같습니다.

 

인증서 투명성은 구글 크롬에서 쉽게 확인이 가능합니다.

 

HTTPS로 이루어진 사이트에서 주소 왼쪽에 보시면 자물쇠가 있는데 그것을 클릭하여 상세내용을 보시면 됩니다.

 

예를들어 PC에서는

 

 

위와 같이 나타납니다. 해당내용이 안나온다면 새로고침하여 사이트 이름을 클릭하면 나타납니다.

 

 

모바일 크롬에서는

 

 

위와 같이 나타납니다.

 

 

참 쉽죠? 안타깝게도 우리나라에서는 투명성을 제공하지 않는 사이트가 더 많더라구요. 

 

 

 

2. 우분투에서 작업하기

 

http://qiita.com/dseg/items/bab80f6f14349fcd9c22 

 

저는 위 사이트를 기본으로 설치하였습니다.

 

Nginx 기준으로 간단하게 설명해보겠습니다.

 

우선 우분투에서 제공하는 Nginx 패키지에서는 적용 불가능합니다. 왜냐하면 nginx-ct라는 서드파티 모듈을 설치해야 되기 때문입니다.

 

그래서 소스 컴파일 설치를 해야 합니다.

 

우분투 16.04에서 Nginx 소스 컴파일 설치하기 (https://www.wsgvet.com/ubuntu/67)

 

위와 같이 소스 컴파일을 설치할 수 있는데요.

 

서드파티 모듈을 설치하기 위해서 해당 모듈을 다운 받고 configure 해줘야 합니다.

 

nginx-ct를 다운받고 압축을 풉니다. 

 

 

cd /usr/local/src

 

wget -O nginx-ct-master.zip -c https://github.com/grahamedgecombe/nginx-ct/archive/master.zip 

 

unzip nginx-ct-master.zip

 

rm -f nginx-ct-master.zip

  

nginx-ct 를 포함하여 configure 해줍니다.

 

cd /usr/local/src/nginx-1.11.4
./configure --sbin-path=/usr/local/sbin/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/var/run/nginx.pid --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_perl_module=dynamic --with-threads --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_geoip_module=dynamic --with-http_slice_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-http_v2_module --add-module=../nginx-ct-master

 

마지막에 추가된 --add-module=../nginx-ct-master 에 집중해주시면 됩니다.

 

설치가 완료되면 CT 전달관련 패키지를 설치합니다.

 

cd /tmp

wget https://github.com/grahamedgecombe/ct-submit/archive/master.zip

unzip master.zip

cd ct-submit-master

go build

sudo install -s -m755 ./ct-submit-master /usr/local/bin/ct-submit

 

위와 같이 설치를 완료해준 후 스크립트 파일을 만들어 인증서 정보를 인증서 투명성 로그를 제공하는 사이트에 넘깁니다.

 

nano ct-submit.sh

 

위 명령어로 스크립트를 생성하여

 

 

#!/bin/sh

# Let's encrypt 의 fullchain.pem 의 위치를 지정합니다.

KEY=/etc/letsencrypt/live/yoursite/fullchain.pem

# CT 파일이 들어갈 폴더를 지정합니다.

SCTS_DIR=/etc/letsencrypt/live/yoursite/scts

# ct-submit 을 보낼 폴더를 지정합니다.

CTSUBMIT=/usr/local/bin/ct-submit

#참조. 1번부터 5번까지는 CT가 생성됩니다. 

#다만 5번 wosign CT는 구글 크롬 브라우저에서 unknown log라고 확인됩니다.

#참조2. 6번부터 13번까지는 www.certificate-transparency.org/known-logs 

#리스트에는 있으나 인증로그는 나오지 않는 곳입니다.

 

echo 1

sudo sh -c "$CTSUBMIT ct.googleapis.com/aviator \

<$KEY \

>$SCTS_DIR/aviator.sct"

echo 2

sudo sh -c "$CTSUBMIT ct.googleapis.com/pilot \

<$KEY \

>$SCTS_DIR/pilot.sct"

echo 3

sudo sh -c "$CTSUBMIT ct.googleapis.com/rocketeer \

<$KEY \

>$SCTS_DIR/rocketeer.sct"

echo 4

sudo sh -c "$CTSUBMIT ctlog.api.venafi.com \

<$KEY \

>$SCTS_DIR/venafi.sct"

echo 5

sudo sh -c "$CTSUBMIT ctlog.wosign.com \

<$KEY \

>$SCTS_DIR/wosign.sct"

#echo 6 

#sudo sh -c "$CTSUBMIT ct1.digicert-ct.com/log \

#<$KEY \

#>$SCTS_DIR/digicert.sct"

#echo 7

#sudo sh -c "$CTSUBMIT ct.izenpe.com \

#<$KEY \

#>$SCTS_DIR/izenpe.sct"

#echo 8

#sudo sh -c "$CTSUBMIT log.certly.io \

#<$KEY \

#>$SCTS_DIR/certly.sct"

#echo 9

#sudo sh -c "$CTSUBMIT ct.googleapis.com/skydiver \

#<$KEY \

#>$SCTS_DIR/skydiver.sct"

#echo 10

#sudo sh -c "$CTSUBMIT ct.ws.symantec.com \

#<$KEY \

#>$SCTS_DIR/ctws.sct"

#echo 11

#sudo sh -c "$CTSUBMIT vega.ws.symantec.com \

#<$KEY \

#>$SCTS_DIR/vegaws.sct"

#echo 12

#sudo sh -c "$CTSUBMIT ct.startssl.com \

#<$KEY \

#>$SCTS_DIR/startssl.sct"

#echo 13

#sudo sh -c "$CTSUBMIT ctserver.cnnic.cn \

#<$KEY \

#>$SCTS_DIR/cnnic.sct"

echo 14

sudo sh -c "$CTSUBMIT ct.googleapis.com/icarus \

<$KEY \

>$SCTS_DIR/icarus.sct"

#echo 15

#sudo sh -c "$CTSUBMIT ct.googleapis.com/submariner \

#<$KEY \

#>$SCTS_DIR/submariner.sct"

echo 16

sudo sh -c "$CTSUBMIT plausible.ct.nordu.net \

<$KEY \

>$SCTS_DIR/nordu.sct"

 

위 내용을 넣고, 본인의 환경에 맞게 설정을 바꿔줍니다.

 

저장한 후

 

sh ct-submit.sh

 

위 명령어로 정보를 넘겨 로그 파일을 받습니다.

 

 

이제 nginx 서버 설정에 들어가서

 

ssl_ct on;
ssl_ct_static_scts /etc/letsencrypt/live/yoursite/scts;

 

위 내용을 넣습니다.

 

그리고 Nginx를 재실행해주면 사이트에 적용될 것입니다.

 

 

투명성 정보를 확인하시려면

 

https://crt.sh

 

또는 

 

https://www.google.com/transparencyreport/https/ct/?hl=ko 

 

위 사이트에 들어가서 자신의 도메인을 넣으면 됩니다.

 

이제 크롬으로 들어가서 확인해보시면 됩니다. 

 

PC 크롬에서는 바로 확인이 안되는 경우가 있는데, 시크릿 모드에서는 바로 확인이 되더군요 ^^

 

 

이제 끝입니다. 고생하셨습니다!

, , , , , , ,

0 Comments