SSL / TLS란?
SSL(Secure Sockets Layer)과 TLS(Transport Layer Security)는 인터넷에서 데이터를 안전하게 전송하기 위한 프로토콜입니다. SSL은 더 이상 사용되지 않으며 TLS가 그 후속으로 널리 사용되고 있습니다. 이 프로토콜들은 데이터를 암호화하여 인터넷을 통해 데이터를 안전하게 전송할 수 있도록 도와주며, 특히 웹 브라우저와 서버 간의 통신에서 중요하게 사용됩니다.
TLS/SSL은 두 시스템 간의 통신을 보호하기 위해 대칭 암호화, 비대칭 암호화 및 해시 함수를 사용합니다. 클라이언트와 서버 간에 안전한 통신 채널을 설정하는 과정은 "핸드셰이크"라고 불립니다. 이 과정에서는 서버의 인증서와 비밀키를 이용하여 통신이 안전하게 이루어지는지 확인합니다.
쉘 스크립트를 통한 SSL/TLS 인증서 생성
쉘 스크립트를 이용해서 SSL/TLS 인증서를 생성하는 것은 주로 OpenSSL 도구를 이용합니다. OpenSSL은 SSL 및 TLS 프로토콜을 구현한 오픈 소스 라이브러리로, 다양한 암호화 작업을 수행할 수 있습니다. 여기에는 인증서의 생성, 관리 및 검증 작업이 포함됩니다.
1. OpenSSL 설치
대부분의 Linux 배포판에서 OpenSSL은 기본적으로 설치되어 있습니다. 만약 설치되어 있지 않다면, 다음 명령어를 통해 설치할 수 있습니다:
bashCopy code
# Ubuntu, Debian 계열
sudo apt-get install openssl
# CentOS, Fedora 계열
sudo yum install openssl
2. 자체 서명된 SSL 인증서 생성
다음은 자체 서명된 SSL 인증서와 개인 키를 생성하는 쉘 스크립트의 예입니다. 자체 서명된 인증서는 실제 운영 환경보다는 개발 또는 테스트 목적으로 사용됩니다.
bashCopy code
#!/bin/bash
# 변수 설정
DOMAIN="example.com"
OUTDIR="/etc/ssl"
# 인증서와 키 저장할 디렉토리 생성
mkdir -p $OUTDIR
# 개인 키 생성
openssl genrsa -out $OUTDIR/$DOMAIN.key 2048
# CSR(Certificate Signing Request) 생성
openssl req -new -key $OUTDIR/$DOMAIN.key -out $OUTDIR/$DOMAIN.csr -subj "/C=US/ST=California/L=San Francisco/O=Example Company/OU=IT Department/CN=$DOMAIN"
# 자체 서명된 인증서 생성
openssl x509 -req -days 365 -in $OUTDIR/$DOMAIN.csr -signkey $OUTDIR/$DOMAIN.key -out $OUTDIR/$DOMAIN.crt
echo "인증서 생성 완료: $OUTDIR/$DOMAIN.crt"
echo "개인 키 생성 완료: $OUTDIR/$DOMAIN.key"
위 스크립트는 다음을 수행합니다:
- RSA 알고리즘을 이용해 2048비트 개인 키를 생성합니다.
- 생성된 키를 사용해 CSR을 만듭니다. CSR은 인증서를 발급받기 위한 요청 파일로, 여기에는 조직의 정보(CN, OU, O 등)가 포함됩니다.
- CSR과 개인 키를 사용하여 자체 서명된 인증서를 생성합니다. 이 인증서는 365일 동안 유효합니다.
자체 서명된 인증서는 브라우저에서 경고를 발생시킬 수 있으므로 주의해야