이 내용은 nginx를 쓰고 있는 가상서버에서는 공통적으로 가능한 ssl 세팅입니다.

1. SSL 인증서 파일 준비하기

일반적인 웹사이트의 경우, SSL 인증서를 구매하거나 Let's Encrypt 같은 무료 서비스에서 발급받아 다음과 같은 파일들을 준비합니다:

  • ssl.crt 또는 certificate.crt: SSL 인증서 파일
  • ssl.key 또는 private.key: 프라이빗 키 파일

 

2. 필요한 디렉토리 생성하기

# 해당하는 폴더를 만듭니다.
sudo mkdir -p /etc/ssl/certs
sudo mkdir -p /etc/ssl/private

 

3. 인증서와 키 파일 복사 및 권한 설정

# 준비된 crt와 key 파일에 대한 권한을 설정합니다.
# 보통 filezilla를 통해 파일을 업로드한 뒤 작업합니다.
sudo chmod 644 /etc/ssl/certs/ssl.crt
sudo chmod 600 /etc/ssl/private/ssl.key

 

4. 암호화된 키 파일 처리하기

키 파일에 암호가 설정되어 있다면, 서버 재시작시 자동으로 SSL이 적용되도록 암호를 제거합니다:

# 원본 키 파일 백업
cp /etc/ssl/private/ssl.key /etc/ssl/private/ssl.key.orig

# 암호 없는 키 파일로 변환
openssl rsa -in /etc/ssl/private/ssl.key.orig -out /etc/ssl/private/ssl.key

# 적절한 권한 다시 설정
chmod 600 /etc/ssl/private/ssl.key

 

5. Nginx 설정 파일 수정하기

웹사이트의 설정 파일을 수정합니다:

# nginx의 경우 sites-available 에서 http, https 등의 블록을 위해 파일을 손봐야합니다.
# 파일의 경로가 꼭 이렇진 않습니다. sites-available만 참고해주세요
vim /etc/nginx/sites-available/{YOUR-WEBSITE}

- 일반적인 웹사이트의 Nginx 설정 예시:

# HTTP 설정 - HTTPS로 리다이렉트
server {
    listen 80;
    server_name example.com www.example.com;
    
    # HTTPS로 리다이렉트
    location / {
        return 301 https://$host$request_uri;
    }
}

# HTTPS 설정
server {
    listen 443 ssl;
    server_name example.com www.example.com;

    # SSL 인증서 설정
    ssl_certificate /etc/ssl/certs/ssl.crt;
    ssl_certificate_key /etc/ssl/private/ssl.key;

    # SSL 프로토콜 설정
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
    
    # 정적 파일이 있는 루트 디렉토리 설정
    root /var/www/html;
    index index.html index.htm index.php;
    
    # 기본 위치 설정
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    
    # PHP 처리 설정 (PHP 사용 시)
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # PHP 버전에 맞게 수정
    }
    
    # 접근 로그와 에러 로그 위치
    access_log /var/log/nginx/example.com-access.log;
    error_log /var/log/nginx/example.com-error.log;
}

 

6. Nginx 설정 테스트 및 재시작

# 설정이 올바른지 테스트
nginx -t

# 설정이 올바르면 Nginx 재시작
systemctl restart nginx

 

7. 방화벽 설정 확인 (필요한 경우)

# UFW 방화벽 사용 시, HTTPS 포트 개방
sudo ufw allow 443/tcp

 

8. 확인 및 문제 해결

웹 브라우저에서 https://example.com으로 접속하여 SSL이 제대로 적용되었는지 확인합니다. 주소 표시줄에 자물쇠 아이콘이 표시되면 성공적으로 적용된 것입니다.

문제가 발생한 경우 다음 로그 파일을 확인합니다:

# Nginx 오류 로그 확인
tail -n 100 /var/log/nginx/error.log

 

이런 과정으로 가상서버에서 호스팅하는 웹사이트에 SSL을 적용하는 과정이 완료되었습니다.

가비아나 AWS에서는 간편하게 설정할 수 있었고, 자동으로 적용이 되었던 부분인데

SSL을 신청 받고 /.well-known/pki-validation/ 에 http 인증용 파일을 올렸는데도 발급이 안돼서 무슨 문제인가 했어요

다른 분들에게도 도움이 되었으면 좋겠습니다

분석 용으로 받은 프로젝트가 5년 전의 레거시인 탓에 ubuntu의 버전이 상당히 낮은 버전이었고,
14, 16 버전으로는 테스팅이 되었지만 18 버전 이후로는 테스트가 된적이 없었다.
현재 microsoft shop 을 통해 다운 받을 수 있는 우분투는 18 20 22 등이 쉬운 편인데, 
그 밑으로 다운 그레이드는 생각보다 많은 시간이 소요될 것 같아 18 환경에서 돌려보기로 결정했고
프로젝트 분석을 하던 와중에... 예기치 못한 문제에 마주치게 되었다. 

>>> /etc/sudoers: syntax error near line 30 <<<

sudo: parse error in /etc/sudoers near line 30
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

이 문제가 정말 사람 골때리게 만든다...
이 문제를 아직 close 하지는 못했지만 wsl로 설치한 우분투이기에 윈도우에서 root에 접속해서 비밀번호를 바꾸고

su

이 명령을 사용해서 작업할 수 있게 만들어서 작업은 진행할 수 있었다.

처음엔 다중 리눅스 운영 체제 환경 속에서 default만 수정 되는 줄 알았는데 다음의 명령어를 치니 18.04 LTS에 접근할 수 있었다.

wsl -d Ubuntu-18.04
// 윈도우의 cmd에서 실행, 설치된 ubuntu의 18.04 환경으로 진입합니다.

여기까지 왔다면 다음에 올 명령들은 간단하다.

sudo -i
// 루트 권한으로 실행 중인 셀을 시작하기 위한 명령어

// 루트 권한으로 접속

passwd
// 비밀번호를 바꿉니다.

pkexec visudo 명령으로도

etc/sudoers 를 다시 수정할 수 없는 문제를 close 하지는 못했지만, 이 방식으로

스크립트에서 실행될 mkdir 이 문제 없어지니 컴파일 및 실행도 문제 없이 잘 되었다.

chmod 777로 sudoers의 권한을 바꿔버렸을 경우 pkexec visudo 명령으로도 해결되지 않을 때의 해결법은 

close하는대로 추가 포스팅할 예정입니다.



회사에서 하게 되는 일로 Linux를 학습해야할 일이 생겼다.

언젠가 공부해야지 해야지 하고 있었는데 아는게 없다보니 실생활에 적용하기도 힘들어서 미루고 있던 찰나에 드디어 리눅스에 입문하게 되었다. 

일단 지금은 간단한 수준으로 WSL을 사용해서 windows에 Linux를 설치하고, prp, prp3, nodejs 등을 설치한 후에 git clone을 해보고 간단한 명령어들을 복습해볼 생각이다.

 WSL 을 사용하여 Windows에 Linux 설치

구글에 "WSL" 만 쳐도 사용이 가능하고,

https://learn.microsoft.com/ko-kr/windows/wsl/install

 

WSL 설치

wsl --install 명령을 사용하여 Linux용 Windows 하위 시스템을 설치합니다. Ubuntu, Debian, SUSE, Kali, Fedora, Pengwin, Alpine 등 원하는 Linux 배포판에서 실행되는 Windows 머신에서 Bash 터미널을 사용할 수 있습니

learn.microsoft.com

이 링크에서 설치 및 설명서를 볼 수 있다.

wsl --install

이 명령어를 통해 wsl 을 실행하는데 필요한 항목들을 설치할 수 있습니다.

cmd를 관리자 권한으로 실행해주셔야 합니다.

cmd에서 wsl 설치 하기 위한 wsl --install

설치가 다 끝나게 되면

"시스템 재시작"을 해줘야하니 주의하세요! 그렇지 않는다면 Bash에 아무리 명령어를 입력해도 듣지 않습니다!

 Ubuntu 초기 설정

오픈소스 리눅스 배포판의 디폴트 값은 Ubuntu로 되어 있어서 Ubuntu를 추가 설치하는 일은 불필요합니다.

재부팅을 하게 되면 자동적으로 bash가 열리게 되고, Ubuntu를 구동하면서 리소스를 다운받습니다.

그 후에 간단한 초기 세팅들을 요구합니다.

Enter new UNIX userrname에는 내가 원하는 이름으로 적어주시면 되고, 비밀번호도 설정할 수 있습니다.

여기까지 잘 완료된다면 이제부터 sudo 문을 사용해서 오픈소스 리눅스 배포판을 사용할 준비가 된 것입니다

 

$ sudo apt-get update

명령으로 패키지 목록들을 업데이트 하고,

 

$ sudo apt-get upgrade python3 

파이썬을 최신버전으로 업데이트 해줍니다.

 

$ sudo apt install python3-pip

을 통해 pip 또한 설치해줍니다.

 

이젠 우분투에서 깃을 설치한 후에 레파지토리로부터 clone 해옵니다.

1. $ sudo apt-get install git

2. $ sudo apt install git

3. $ git --version

4. $ git config --global user.name [이름]

5. $ git config --global user.mail [메일 주소]

6. $ git clone [url 주소]

이렇게 하면 깃 설치부터 자신의 계정 연결 후 clone 까지 완료할 수 있습니다.

이렇게 한 후 

$ ls

를 치게 되면

이런 식으로 밑에 클론해온 폴더가 잘 생성되어 있는 모습을 볼 수 있습니다.

이제부터는 cd 등의 명령어를 통해 이동할 수 있습니다.

 

이와 같은 내용은 chat gpt에 물어봐도 거의 똑같이 알려줍니다.

node.js 설치 및 npm 환경 구축에 대한건

https://velog.io/@ywoosang/Node.js-%EC%84%A4%EC%B9%98

 

우분투 Node.js 설치및 npm 환경구축

우분투 20.04에 Node.js 를 설치하는 세 가지 방법, npm 환경 구축과 REPL 을 이용한 실행

velog.io

이 블로그를 참조했습니다.

회사 코드나 로직은 제 마음대로 공개할 수가 없어서 포스팅할 거리가 애매한데,

백그라운드에서 스케쥴러 돌리면서 해두고 싶은 개인적인 업무(카카오톡 봇 관련)에 좀 더 도움이 될거 같아 공부할게 많아졌지만 즐거운 하루였습니다.

+ Recent posts