본문 바로가기
일지/헬키

[React-native + Web] 헬키 개발일지 4. CI 파이프라인 완성, 간단한 테스팅

by 리나그(ReenAG) 2024. 5. 11.
728x90
반응형

https는 기본적으로는 도메인을 필요로하기는 하는데, 그냥 그거 없이 production 환경만 테스팅해보고 싶을 때는 우리가 직접 pem을 만들어서 테스팅하는 것이 가능하다...

사실 기본적으로는 그걸로 하는 수 밖에. 아님 뭐 서버 코드를 또! 고쳐야 한다.

openssl genrsa -out key.pem 2048
openssl req -new -sha256 -key key.pem -out csr.pem
openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out cert.pem

 

다행히 아직 history에 살아 계시기 때문에 빠른 아카이빙.

그리고 root로 서버를 실행하는건 그다지 좋은 생각이 아니기 때문에, 돌릴 유저한테 다른 포트를 주고, 포트포워딩을 주로 한다.

근데 어째서 리눅스 주제에 iptables가 없는 것이지?

진짜 깡통이다. 여태까지 mysql, node, iptable, codedepoly-agent를 설치했다. 추후에 다시 세팅할 수도 있으므로 기억해야겠다.

sudo yum install iptables-services

살다살다 iptables를 깔아보네 하여간에, 100% 안켜져 있을 거라 enable하고 start해줬다.

자, 원래 목적으로 돌아와서, 

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port [안알랴줌]

 

[안알랴줌] 대신 port 번호를 넣으셔. 아 그리고 그냥 일반적으로 보는게 아니라 이걸 봐야하더라...

sudo iptables -t nat -L

table 명시 안해주면 그냥 filter만 보여줘서 아무것도 안 뜬다. 이 명령어를 쓰면 명시된 policy를 볼 수 있을 것이다.

 

-----------------------------------------------------------------------------------------------------

 

... 그냥 일단 DNS를 한개 사기로 했다. 아 졌다 졌어 뭘 하던 내가 원하는 보안 수준을 위해서는 필요한 일인 것 같다 야랄

하여간에 이번에는 https제대로 적용가능하겠지.

 

우선 certbot을 깐 다음, node server에 적용하기 위해서 standalnone 모드로 .pem 파일들을 발급 받는다.

sudo yum install certbot
sudo certbot certonly --standalone

그럼 도메인을 입력하라고 언젠간 창이 뜰 것이다. 그럼 key를 발급받을 수 있다.

 

이제는 자동 갱신 코드를 쓰려고 했는데... 

sudo yum install cronie
sudo systemctl enable crond
sudo systemctl start crond

근데 어째서 리눅스 주제에 crond가 없는 것이지?

sudo crontab -e

# Add the following line to open crontab editor:
0 12 * * * /usr/bin/certbot renew --quiet
sudo groupadd ssl-cert
sudo usermod -a -G ssl-cert ec2-user

 

원래는 다른 포트에 서버를 띄운다음 iptables로 라우팅을 바꿔보려고 했는데, 생각보다 잘 되지는 않아서 일단 놔두고 node에만 443을 쓸 수 있는 권한을 주는 것으로 하기로 했다.

 

우선

which node

로 node의 경로를 알아내서,

sudo getcap /path/to/node

으로 세팅 가능한 executable인지 확인

sudo setcap 'cap_net_bind_service=+ep' /path/to/node

으로 세팅해서 

cap_net_bind_service=ep ~~~~ 어쩌고 라는 output이 나오면 성공이다. 그때 부터는 node를 443으로 열어도 불평하지 않는다.

그리고 다행히도 실제로 동작한다는 사실도 확인했다. 즉, backend는 거의 바로 배포가 가능한 상태이다. 만세! 나중에 좀 다듬을 수도 있지만...

728x90
반응형