Project

General

Profile

Actions

개발 #13

closed

[서버작업] OpenSSL을 사용한 와일드 카드 인증서 발급

Added by 개발팀 이석화 about 1 year ago. Updated about 1 year ago.

Status:
완료
Priority:
보통
Start date:
06/26/2024
Due date:
07/03/2024
% Done:

100%

Estimated time:
18:00 h
Actions #1

Updated by 개발팀 이석화 about 1 year ago

#최종수정일 : 2024-07-02

관련 확인사항

  • OpenSSL 설치
    • 우분투 24.04 버전에는 OpenSSL이 기본적으로 설치되어 있는 상태
  • 자체서명 인증서 테스트
    • 자체서명 인증서 적용시 크롬에서 신뢰할수 없다고 경고창이 먼저 출력됨
  • 와일드카드 인증서 자동 업데이트
    • OpenSSL과 같이 사용하면 와일드카드 인증서를 발급가능 (유효기간 90일)
    • 발급과정에서 생성되는 임의값을 DNS의 TXT 레코드 수정 필요 -> 리눅스 명령어로 자동갱신 못하는 이유
    • nsupdate 를 사용하여 DNS의 TXT 레코드를 동적으로 자동수정 가능
  • 서버에 자동갱신 적용
    • 운영서버 = 와일드카드 갱신 + certbot 자동갱신
    • IDC, 레드마인, EMSP = certbot 자동갱신

이슈사항

  • 자동갱신 과정에서 thepowerbrains.zone 파일의 내용이 이름순으로 정렬됨
Actions #2

Updated by 개발팀 이석화 about 1 year ago

DNS Dynamic Update

  1. Bind9 DNS도구 설치
    • apt install bind9-dnsutils
  2. 비밀키 생성
    • tsig-keygen -a HMAC-SHA256 test-key > /etc/bind/test-key.key
  3. zone 관리폴더 생성 후 권한설정
mkdir /etc/bind/zone.conf
chown root:bind /etc/bind/zone.conf
chmod 775 /etc/bind/zone.conf
mv /etc/bind/db.myDomain.com /etc/bind/zone.conf
  1. apparmor 에서 파일수정 권한 부여
vi /etc/apparmor.d/usr.sbin.named
+  /etc/bind/zone.conf/** rw,
service apparmor restart
  1. Dynamic Update 관련 설정
    • key 가 아니라 localhost 방식으로 변경 가능
vi /etc/bind/named.conf.local
+   include "/etc/bind/test-key.key";

	zone "myDomain.com" {
		type master;
-	file "/etc/bind/db.myDomain.com";
+	file "/etc/bind/zone.conf/db.myDomain.com";
+	allow-update {
+		key test-key;
+	};
	};
  1. Dynamic Update 실행
    • 실행 후 zone 파일의 내용이 이름순으로 정렬된다 (비활성화 불가능)
nsupdate -k /etc/bind/test-key.key
server localhost
zone myDomain.com
update add test.myDomain.com 300 TXT test
quit

service named restart

와일드카드 인증서 자동갱신

  1. OpenSSL 설치
    • apt install openssl
  2. Let's encrypt 설치
    • apt install letsencrypt
  3. DNS 레코드 자동수정 스크립트 생성
#!/bin/bash

# 변수 설정
ZONE="myDomain.com"
RECORD="_acme-challenge.${ZONE}"
TXT_VALUE=$CERTBOT_VALIDATION
KEYFILE="/etc/bind/test-key.key"

# nsupdate 명령어 작성
nsupdate -k $KEYFILE <<EOF
server localhost
zone $ZONE
update delete $RECORD TXT
update add $RECORD 300 TXT "$TXT_VALUE"
send
EOF
  1. 인증서 발급
certbot certonly --manual --preferred-challenges=dns --manual-auth-hook /home/update-dns.sh -d '*.myDomain.com' -d 'myDomain.com' --non-interactive --agree-tos --email admin@myDomain.com
Actions

Also available in: Atom PDF