네트워크 구상도에서 프록시 서버로 쓸 서버에 SSL 인증서를 등록해주고자 한다.
간단하게 등록하는 방법만적겠다.
먼저 apt 의 repo에 설치를 위한 certbot을 업데이트 한다.
add-apt-repository ppa:certbot/certbot
등록후에는 apt-get update 명령어로 업데이트를 하자. 그리고 바로 설치.
apt-get install certbot
Let’s encrypt에는 두가지 방식으로 설치가 되는데 standalone 과 webroot 방식이다.
standalone 방식의 경우 nginx 서버를 꺼서 인증을 받고 켜야하는 번거로움이 있으므로 한번만 귀찮은 webroot 방식으로 진행하려고한다.
webroot에 인증서를 만들어달라고 요청을하면 내 nginx 서버로 질의를 보내는데 거기서 location분기문을 통해 webroot.conf로 갈수있도록 해주면 된다. (-p옵션을 통해 한번에 폴더를 만들수있)
mkdir -p /var/www/webroot/.well-known/acme-challenge
그리고 nginx에 웹루트의 경로를 알려줄 location을 추가시켜준다
vi /etc/nginx/sites-available/default
certbot certonly –webroot -w /var/www/webroot –email test@test.com –d 도메인
인증서가 제대로 발급됐는지 확인하려면 파일을 확인해야 하는데 다음과같이 확인하도록 한다.
ls /etc/letsencrypt/live/도메인이름 을 치면
인증서 생성후에 openssl을 통해서 dhparam.pem 인증서를 만들어줘야하는데 나는 암호화 강도가 높은 4096bit로 암호화 했다. (꽤 오래걸린다)
openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
생성후에는 권한변경 chmod 600 /etc/ssl/certs/dhparam.pem
이제 vi /etc/nginx/site-available/default 설정값에 집어넣자
server {
listen 443 ssl http2;
listen [::]:443 http2;
server_name dalso.iptime.org;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
ssl on;
ssl_certificate /etc/letsencrypt/live/dalso.iptime.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/dalso.iptime.org/privkey.pem;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 1440m;
ssl_buffer_size 8k;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'kEECDH+ECDSA+AES128 kEECDH+ECDSA+AES256 kEECDH+AES128 kEECDH+AES256 kEDH+AES128 kEDH+AES256 DES-CBC3-SHA +SHA !aNULL !eNULL !LOW !kECDH !DSS !MD5 !EXP !PSK !SRP !CAMELLIA !SEED';
ssl_prefer_server_ciphers on;
ssl_trusted_certificate /etc/letsencrypt/live/dalso.iptime.org/chain.pem;
ssl_stapling on;
ssl_stapling_verify on;
}
Let’s encrypt 인증서의 경우 90일마다 다시 재인증을 받아줘야하는데 crontab을 이용해서 넣도록하겠다.
이렇게하면 완성!
추가적으로 위의 방법이 안되고 _acme-challenge에 TXT 레코드를 등록하라고 할경우. 서비스 도메인으로 들어가서 TXT 레코드에
sudo certbot certonly –manual -d *.dalso.org -d dalso.org -m dalso@gmail.com –agree-tos –manual-public-ip-logging-ok –preferred-challenges dns-01 –server https://acme-v02.api.letsencrypt.org/directory
명령어를 쳐서 나오는 “hARgQNvBy1ZIPJsFBM3X8C1dKeAeTFGkyIK9wroJakw” 을넣어주고 시간이 조금 지난뒤에 엔터버튼을 눌러서 진행해주면 완료된다.