ALB에 고정 ip 할당 & http to https redirect

dawon·2022년 9월 2일
0
post-thumbnail

사전지식

ALB에서 외부와 통신할 때, 아래와 같은 제한 조건이 주어지는 경우에 대한 해결 방법을 안내합니다.

  • ALB에 고정 ip 할당
  • ip를 통해 접근하는 경우, SSL handshake 문제를 해결하기 위한 http to https redirect 구성

글의 목적

실제 서비스를 운영하면서 어떤 문제에 직면할 때, 클라우드에서는 다양한 서비스의 조합을 통해 해당 문제를 해결할 수 있다는 장점이 있습니다.
이번 글은 사전지식에서 제시한 환경에서 효율적인 구성으로 해결하는 방법에 대해 안내합니다.

구성 방법

  1. ALB 구성에서 아래와 같이 구성합니다.
    1) 80 리스너 포트에서 443포트로 redirect 규칙 작성
    2) 443 리스너 포트에서 사용하는 포트로 대상그룹에 요청

  2. NLB를 ALB 앞단에 아래와 같이 구성합니다.
    1) 80리스너 포트에서 ALB 80포트로 요청
    2) 443리스너 포트에서 ALB 443포트로 요청

구성 결과

NLB의 80, 443리스너에서 ALB의 443포트로 요청하는 경우에는 문제가 발생하기 때문에 이런 구성으로 안내를 드렸습니다.
아래와 같이 서버에서 NLB에 curl 요청하는 경우에 아래와 같이 정상적으로 접근이 가능하고, http로 요청하는 경우 https로 정상적으로 redirect 처리가 완료됩니다.

[root@ip-172-31-6-75 ~]# curl -v -k https://nlb.awshelp.net
*   Trying 172.31.41.62:443...
* Connected to nlb.awshelp.net (172.31.41.62) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*  CAfile: /etc/pki/tls/certs/ca-bundle.crt
*  CApath: none
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=*.awshelp.net
*  start date: Sep 16 00:00:00 2021 GMT
*  expire date: Oct 15 23:59:59 2022 GMT
*  issuer: C=US; O=Amazon; OU=Server CA 1B; CN=Amazon
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x1524400)
> GET / HTTP/2
> Host: nlb.awshelp.net
> user-agent: curl/7.76.1
> accept: */*
>
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
< HTTP/2 403
< date: Wed, 20 Oct 2021 05:02:17 GMT
< content-type: text/html; charset=UTF-8
< content-length: 3630
< server: Apache/2.4.48 ()
< last-modified: Fri, 25 Jun 2021 18:52:24 GMT
< etag: "e2e-5c59ba3e74a00"
< accept-ranges: bytes
<
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
        <head>
                <title>Test Page for the Apache HTTP Server</title>
                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

0개의 댓글