We-Co

[OpenSSL] SSL 인증서를 설치하고 적용해보자! with ubuntu, Nginx 본문

Python

[OpenSSL] SSL 인증서를 설치하고 적용해보자! with ubuntu, Nginx

위기의코딩맨 2024. 2. 27. 10:54
반응형

안녕하세요. 위기의 코딩맨입니다.

오늘은 HTTPS를 설정하기위해 SSL 인증서를 설치하는 방법을 간단하게 포스팅해보겠습니다.

업체를 통해서 SSL를 설치하면 비용도 발생하기도 하지만, 급할땐 사설 인증서를 설치하기도 합니다.

그 중 하나인 openssl의 설치 방법을 간단하게 설명드리도록 하겠습니다. 간단하지 않으려나....

OpenSSL

openSSL의 장점으로는 다양한 환경(OS)에서 적용이 가능하며

가장 큰 장점은 무료! 너무나도 좋죠?!ㅎㅎ

버전은 2021년 3.대 출시 된 것으로 확인됩니다.

해당 포스팅에선, 1.1.1 기준으로 설명드리도록 하겠습니다.

위키백과

 

[ OpenSSL ]

해당 환경은 ubuntu 18.04 입니다. 

1.  현재 환경에서 혹시나 설치되어 있는  openssl을 모두 지우는 명령어입니다.

apt-get --purge autoremove openssl

 

2. openssl의 홈페이지에서 1.1.1w의 버전을 다운받습니다. 

(아래 명령어에서 오류가 발생하시면 뒤에 -no-check-certificate를 --no-check-certificate로 수정해서 진행해보세요)

sudo wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz –no-check-certificate

 

 

3. 다운받은 파일의 압출을 풉니다.

tar –xvzf openssl-1.1.1w.tar.gz

 

4. 압출을 푼 폴더로 이동합니다.

cd openssl-1.1.1w

 

5. openssl 설정하고 설치를 위한 경로도 설정합니다. 컴파일을 준비하는 단계로 생각하시면 됩니다.

./config --prefix=/usr/local/ssl —openssldir=/usr/local/ssl shared

 

6. 필요한 라이브러리를 설치합니다.

make
make install_sw

 

7. 심볼릭 링크를 설정합니다.

ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl

 

 

 

 

이제 설치는 완료했습니다.

경로는 설치하면서 사용자별로 유동적으로 변할수 있는 점 참고해주세요!

이제 ssl을 생성하고 적용해보도록 하겠습니다.

/etc/nginx 경로로 이동해주세요!

cd /etc/nginx

 

저는 nginx를 사용하고 있었기에, 해당 경로로 ssl을 생성했습니다.

그리고 권한도 꼭 주셔야합니다!

sudo mkdir ssl
sudo chmod 777 ssl

 

이제 ssl 폴더를 생성했으니, ssl로 이동합시다.

아래 경로를 이동하면, 경로는 /etc/nginx/ssl 이겠죠~?

cd /ssl

 

자 이제 생성을 시작해봅시다!

 

1. 키를 생성합니다. 키의 이름은 myhostname.key로 했지만 사용자에 따라 변경해도 무방합니다.

해당 명령어를 입력하면 비밀번호를 입력해야 합니다. 잘 입력해주세요!

openssl genrsa –des3 –out myhostname.key 4096

 

2. 이제 키를 통한 CSR을 생성해야합니다.

CSR은 SSL/TLS 인증서 발급을 위해 인증기관에 제출하는 요청파일로 생각하시면 됩니다. 

기본적인 조직이름, 도시 키에 포함돼서 제출하게 됩니다.

 

openssl req –new –key myhostname.key –out myhostname.csr

 

해당 이미지 중간부터 제출에 필요한 정보를 입력해야합니다. 

common Name은 설정하실 URL을 적으시면 됩니다.

 

3. 키 보존을 위해 하나 복사해 둡니다.

cp myhostname.key myhostname.key.pw
openssl rsa –in myhostname.key.pw –out myhostname.key

 

4. 이제 해당 SSL 적용을 위한 설정을 할 수 있는 부분입니다.

여기서 유효기간 설정, 인증서 서명 ( -days 365 -sha256 ) x509 뒤에 추가해주시면 될겁니다.

등 더 다양한 부분의 설정을 할 수 있습니다. 

아래는 기본적인 설정만 했습니다.

openssl x509 –req –in myhostname.csr –signkey myhostname.key –out myhostname.crt

 

해당 설정들은 제가 유튜브에서 보고 진행했었습니다.

참고하실분들은 아래 동영상 링크를 통해 확인해주세요.

https://www.youtube.com/watch?v=xNk8fZCuCMU

 

 

이제 openSSL도 생성 완료했습니다. 

자, 이제 마지막 단계입니다. 흐흐

생성한 SSL를 Nginx에 설정하고, 홈페이지에 적용을 해야겠죠??

아래 경로로 이동해주세요!

cd /etc/nginx/sites-available

 

그리고 default의 파일을 수정해야합니다.

vim을 통해 파일을 열어주세요.

sudo vim default

 

그럼 nginx로 설정한 부분들이 나옵니다.

거기서 http인 부분들을 https로 변경해주시고,

server_name과 ssl 설정이 적혀있는 부분에서 

ssl_certificate, ssl_certificate_key를 설정을 추가해주세요.

해당 부분 경로는 우리가 위에서 설치한 경로의 ssl을 입력해주시면 됩니다.          

server_name _;
ssl on;
ssl_certificate /etc/nginx/ssl/myhostname.crt;
ssl_certificate_key /etc/nginx/ssl/myhostname.key;

 

그리고 nginx를 재시작해주세요.

sudo service nginx restart

 

만약, Error가 발생하면 Nginx Erorr 로그를 확인해서 해결해주시면 됩니다.

default 쪽에서 설정을 확인해보셔야할겁니다. 

 

사이트에 접속해보면 사설 SSL인증서를 사용했기에 아래 처럼 발생할 겁니다.

아니면, 위에서 인증서 설정에서 서명을 입력했으면 바로 사이트 접속이 되실겁니다.

 

 

인증서를 확인해보면 이렇게 생성된 것을 확인할 수 있습니다.

저는 홈페이지에 적용할 때, 유효기간을 설정해서 1년으로 되어있지만, 설정을 안하게되면 기본 1달로 설정 되실겁니다.

 

자, 오늘은 openSSL을 설치하고, 홈페이지에 적용하는 방법에 대해서 포스팅해봤습니다.

길지만, 익숙해지면 금방금방 설정하실수 있을겁니다.

반응형