nginx 환경은 .. 구축은 괜찮았는데 EC2 에 내장된 nginx 와 openssl 버전을 업그레이드 하는데 자꾸 원상복귀되는 문제가 발생해서.. 힘들었다
youtube 에 너무 좋은 참고 영상이 있어서 맨 밑에 참고로 올리도록 하겠다.
이번 포스팅은 거의 이 youtube 를 글로 적어둔 거라고 보면 될 것 같다.
Nginx 웹 서버 환경은 위와 같이 AWS EC2 Amazon Linux 2 AMI (centos7) 에서 구축하였고, nodejs 까지 함께 설치하며 진행하였다.
기본 구축은 TLS 1.3 지원이 안되기 때문에 TLS 1.2 기준으로 쭉 환경 구축을 한 후 패키지를 업그레이드해주면 된다.
Amazon Linux 2 의 centOS7 을 웹 서버로 사용하였고, 프리티어에서 스토리지 30기가까지 무료이므로 30으로 늘려서 설정해주자.
그리고 보안 그룹 구성에서 http (port 80) 추가 !
접근 아이피 같은 경우 나만 접속이 가능하도록 내 아이피를 입력해주는게 좋지만 실습만 하고 없앨거니까 전체 아이피 허용
그리고 키 페어를 생성한다.
내가 원하는 위치에 key (~~.pem) 를 생성하여 저장하는데 분실할일은 없겠지만 분실하지 않도록 주의하고 인스턴스 시작.
이제 인스터스 아이디를 누르고 접근하여 인스턴스 이름을 다른 인스턴스와 헷갈리지 않게 적절히 설정해주고
퍼블릭 DNS 나 아이피를 통해 접근하면 된다.
윈도우 powershell 에서 명령어를 입력 후 진입하여 각종 설정을 해보자.
진입 후 바로 #sudo yum update -y 로 보안 패치를 적용해주고,
#sudo bash 로 관리자 권한에서 패키지 설치를 하자. (일일이 sudo 입력하기 귀찮으니까)
#amazon-linux-extras install nginx1.12 를 통해 nginx 웹 서버를 설치하는데,
여기서 중요한건 Amazon Linux 2 에서 nginx1.12 버전까지만 내장되어 있기 때문에
설치 후에 rpm 파일 자체를 컴파일해서 적용해주어야 한다.
openssl 설치를 해도 yum info openssl 와 openssl version 이 자꾸 다르게 출력되어 진행이 안되었는데..
rpm 파일을 컴파일해서 적용해야만 된다는걸 이틀에 걸친 삽질을 통해 알아내었다...
감사한 참고 링크는 맨 마지막에 첨부하도록 하겠다.
먼저 패키지 설치
#yum -y install wget gcc gcc-c++ make openssl-devel libxml2-devel libxslt-devel gd-devel perl-ExtUtils-Embed GeoIP-devel pcre-devel rpm-build
빌드 위해 유저 생성
#groupadd builder
#useradd -g builder builder
1.1.1 이상 openssl 다운로드
#wget https://www.openssl.org/source/openssl-1.1.1h.tar.gz
#tar zxvf openssl-1.1.1h.tar.gz -C /usr/local/src/
Nginx1.19 이상 SRPM 설치
#rpm -ivh http://nginx.org/packages/mainline/centos/7/SRPMS/nginx-1.19.6-1.el7.ngx.src.rpm
Congifuration
#sed -i "s|--with-http_ssl_module|--with-http_ssl_module \
--with-openssl=/usr/local/src/openssl-1.1.1h \
--with-openssl-opt=enable-tls1_3 |g" \
/root/rpmbuild/SPECS/nginx.spec
빌드
#rpmbuild -ba /root/rpmbuild/SPECS/nginx/spec
빌드된 패키지 설치
#cd /root/rpmbuild/RPMS/x86_64
#rpm -ivh nginx-1.19.6-1.el7.ngx.x86_64.rpm
#nginx -V 을 통해 버전 맞춰진 것 확인
이제 버전을 다 맞추었으니
#systemctl start nginx 로 웹 서버 구동,
#curl localhost 로 정상 구동을 확인한다.
이제 chrome 에서 퍼블릭 DNS 아이피에 접근해보면,
nginx 서버 정상 구동 확인 !
다음은 각종 설정이다.
#curl -i http://localhost
#chmod 644 /var/log/nginx ; 다른 nginx 로그 쌓이는 곳, 로그 수집기 등이 접근할 수 있도록 권한 부여
#chown -R ec2-user:ec2-user /usr/share/nginx/html ; nginx 가 사용하는 홈 디렉, ec2 유저가 사용할 수 있도록 권한 부여
#echo "<h1>Hello World</h1>" > /usr/share/nginx/html/hello.html
확인
그리고 서버를 껐다 킬때마다 nginx가 자동으로 올라가도록 하는 명령어 입력
#chkconfig nginx on
심볼릭 링크가 걸리며 성공
nginx.conf 기본 설정 파일이 있는데 이곳에서 server 부분만 복사해서
/etc/nginx/conf.d 하위에 2020.conf 로 커스텀 config 파일을 만들어 진행한다.
#cd /etc/nginx/ && vim nginx.conf ; server 부분 복사 및 삭제 (server 커서 d : $ / server 부터 마지막까지 선택)
** 삭제하는 이유 : 이후 만들 커스텀 config 파일과 server 구문에서 충돌이 발생하기 때문에
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
#mkdir conf.d
#cd conf.d
#vi 2020.conf ; 이 파일에 붙여넣기
#nginx -t 로 확인 ; conf 파일을 수정했을 시에는 반드시 nginx -t 명령어로 정상 확인해주는 것이 좋음
그리고 #systemctl restart nginx 로 서버 재구동
이 후 nodejs 와 도메인 연결 부분도 양이 꽤 되어 다음 포스팅에서 이어서 하도록 하겠다.
참고
: https://www.youtube.com/watch?v=u-leHy-l2a8
: https://www.youtube.com/watch?v=SjOEeW6gQlY
'NETWORK Security > 보안 프로토콜' 카테고리의 다른 글
TLS1.3 (7) - Tool (0) | 2020.12.31 |
---|---|
TLS1.3 (6) - 환경 구축 (Nginx-2) (0) | 2020.12.29 |
TLS1.3 (4) - 환경 구축 (Apache) (0) | 2020.12.29 |
TLS1.3 (3) - TLS1.3 과 기존 TLS 차이점 (0) | 2020.12.29 |
TLS1.3 (2) - SSL/TLS Handshake (1) | 2020.12.29 |