HTTP/2λ₯Ό μ¬μ©νλ κ°λ° νκ²½
μ§λ SSL μΈμ¦μμ TLS μ€νλ‘λλΌλ κΈμ ν΅ν΄ HTTPSμ λν΄μ μ΄ν΄λ³Έ μ μ΄ μμ΅λλ€. μ΄μ²λΌ HTTPSλ μ¬μ©μμ μμ²μ΄ μμ νκ² μλ²λ‘ μ λ¬λλ κ²μ λͺ©μ μΌλ‘ λμ νμ§λ§ HTTP/2λ₯Ό μ¬μ©νκΈ° μν¨λ μμ΅λλ€. μΌλ° μ¬μ©μμ μ»΄ν¨ν°λ λͺ¨λ°μΌ λλ°μ΄μ€μ λν μ±λ₯μ΄ μ’μμ§λ©΄μ TLS νΈλμμ΄νΉμ λν λΉμ©μ κ·Έλ€μ§ ν¬μ§ μμ΅λλ€. κ·Έλ¬λ HTTP 1.1μμμ Keep Alive λμ μ μ΄λ―Έ μ°κ²°μ€μΈ TCPλ₯Ό λ€μ μ¬μ©νλ―λ‘ μ΄λμ λμ TLS νΈλμμ΄νΉμ λν λΉμ©μ μ€μΌ μ μμ§λ§ μ λ§μ μμ²μ΄ λ°μνλ μ ν리μΌμ΄μ μμλ μ΄λ―Έ μλ΅μ κΈ°λ€λ¦¬λ μμ²μ΄ λλκΈ°λ₯Ό νμ¬ μμ²μ΄ λκΈ°ν΄μΌνλ λ¬Έμ λ₯Ό κ°μ§κ³ μμ΅λλ€.
HTTP 1.1μ keep-alive 컀λ₯μ μ ν΅ν΄ μ¬λ¬κ°μ TCP μ°κ²°μ μΌμ μκ° μ΄μ΄λκ³ μμ²μ μ°¨λ‘λλ‘ μννκΈ° λλ¬Έμ λΈλΌμ°μ μμλ HTTP 1.1λ₯Ό μ¬μ©ν λ λλ©μΈ λΉ μ΅λ μ°κ²° μλ₯Ό μ νν©λλ€.
HTTP/2
HTTP 1.1μ΄ μ΄λ―Έ μ°κ²°λ TCP 컀λ₯μ μ λ€μ μ¬μ¬μ©νλ€λ©΄ HTTP2λ λ¨μΌ TCP μ°κ²°μ μννκ³ μ λ§μ μμ²μ μ€νΈλ¦ΌμΌλ‘ μ²λ¦¬ν©λλ€. κ·Έλ κΈ°μ κ½€ λ§μ μμ²μ λμμ μνν΄λ λΈλΌμ°μ λ μ΄λ₯Ό μ ννμ§ μμ΅λλ€. μλ₯Ό λ€μ΄, μλ°μ€ν¬λ¦½νΈμμ νλ‘λ―Έμ€λ‘ μ¬λ¬κ° μμ²μ λμμ μννλλ‘ μ½λλ₯Ό μμ±νλλΌλ λ€λ₯Έ μμ²μ΄ λλκΈ°κΉμ§ μμ²μ΄ λκΈ°νλ νμμ΄ μ€μ΄λ€κ²λλ©°, μΉν©μ ν΅ν΄ ν΄λΌμ΄μΈνΈ UIλ₯Ό ꡬμ±νλ μμ νμΌλ€μ μ¬λ¬κ°μ μμ μ¬μ΄μ¦λ‘ λλλ μ²ν¬λ₯Ό μννκ³ μΉ νμ΄μ§ λ‘λ© μ λΆν λ μ²ν¬λ₯Ό λΉ λ₯΄κ² μλ΅λ°μ μ μμ΅λλ€.
λΈλΌμ°μ μμ HTTP/2λ λλ©μΈ λΉ TCP μ°κ²°μ μνν©λλ€. κ·Έλ¦¬κ³ λλΆλΆμ λΈλΌμ°μ μ μλ²μμλ HTTP/2 μ°κ²°μ μν΄ TLS μ¬μ©μ μꡬν©λλ€.
ALPN
HTTP2.Pro μ¬μ΄νΈλ₯Ό μ¬μ©ν΄μ λ€μ΄λ²μ μ€ν€ μλΉμ€ μ£Όμλ₯Ό μ λ ₯ν΄λ³΄λ©΄ ALPN μ§μ μ¬λΆμ λν μ λ³΄κ° νμλ©λλ€. ALPNμ TLS νΈλμμ΄ν¬λ₯Ό μννκ³ μλ²μ ν΄λΌμ΄μΈνΈκ° μ°κ²°μμ μ΄λ€ HTTP νλ‘ν μ½μ μ¬μ©ν κ²μΈμ§λ₯Ό κ²°μ νκΈ° μν μ μ± μ λλ€. μλ§μ‘΄ μΉ μλΉμ€λ NLBμμλ TLS ALPN μ μ± μ μ§μνκΈ°λ νμ£ .
HTTP/2 μ°κ²°μ μ°μ μ μΌλ‘ μꡬνκ³ ν΄λΌμ΄μΈνΈκ° λΆκ°λ₯νλ€λ©΄ HTTP 1.1λ‘ μ°κ²°ν μ μμ΅λλ€.
Local CA with mkcert
μ€νλ§ λΆνΈ μ ν리μΌμ΄μ λΏλ§ μλλΌ μμ§μμ€μμλ TLS ꡬμ±μ μν΄μλ μΈμ¦μκ° νμν©λλ€. κ·Έλμ μ§λ SSL μΈμ¦μ κΈμμλ μ체 μλͺ CA μΈμ¦μ λ°κΈμ νκ²μ²λΌ λ‘컬 κ°λ° νκ²½μ μν μΈμ¦μλ₯Ό λ§λ€κ³ μ μ©νλ κ³Όμ μ 곡μ νμ΅λλ€. μ΄ κ³Όμ λ€μ μκ°λ³΄λ€ κΉλ€λ‘κ³ λΆνΈν λΆλΆμ΄ λ§μ΅λλ€. κ²°κ΅ λΆνΈν κ²μ κ·Ήν μ«μ΄νλ κ°λ°μλ€μ mkcertλΌκ³ νλ λ‘컬 νκ²½μ μν CA μΈμ¦μλ₯Ό μλμΌλ‘ μ λ’° κΈ°κ΄μ λ±λ‘νλ λꡬλ₯Ό λ§λ€μ΄λ λλ€.
PS C:\Users\Mambo\cert> mkcert -install
The local CA is now installed in the system trust store! β‘οΈ
PS C:\Users\Mambo\docker\nginx.conf> mkcert -ecdsa localhost 127.0.0.1 ::1 mambo.kr
Created a new certificate valid for the following names π
- "localhost"
- "127.0.0.1"
- "::1"
- "mambo.kr"
The certificate is at "./localhost+3.pem" and the key at "./localhost+3-key.pem" β
It will expire on 22 May 2024 π
κ°λ¨νκ² CA μΈμ¦μλ₯Ό μ λ’° κΈ°κ΄μ λ±λ‘νκ³ λ‘컬 μ»΄ν¨ν°λ₯Ό μν μΈμ¦μλ₯Ό λ°κΈνμ΅λλ€.
λ‘컬 μ»΄ν¨ν°λ₯Ό μν μΈμ¦μμ λν μ λ’° μΈμ¦μλ₯Ό λ±λ‘νλ€λ μ μ μμ§ λ§μΈμ.
λ‘컬 κ°λ° νκ²½
μΌλ°μ μΌλ‘ TLS νΈλμμ΄ν¬λ₯Ό μννλ μ΄νμ νΈλν½ μ λ¬μλ TLS μ°κ²°μ μννλλ‘ νμ§ μλλ‘ κ΅¬μ±ν©λλ€. μΌλΆ μμ§λμ΄λ€μ λͺ¨λ νΈλν½ μ λ¬μ TLS μ°κ²°μ ν΄μΌνλ€κ³ λ§ν©λλ€. μ΄λμ λμ 보μμ μΈ κ΅¬μ±μ νλλλ μ‘°μ§μμ κ²°μ ν΄μΌν μΌμ λλ€. νμ¬ μ‘°μ§μ μλ§μ‘΄ μΉ μλΉμ€μ λ‘λλ°Έλ°μμμ TLS νΈλμμ΄ν¬λ₯Ό μννλλ‘ νκ³ λ΄λΆμ μΈ νΈλν½ μ λ¬μλ TLSλ₯Ό μ¬μ©νμ¬ ν¨ν·μ 보νΈνμ§ μμ΅λλ€.
TLS μ€νλ‘λ λ° λ¦¬λ²μ€ νλ‘μλ₯Ό μν μμ§μμ€λ₯Ό ꡬμ±νκ³ HTTPλ‘ μ€νλ μ ν리μΌμ΄μ μ νΈλν½μ μ λ¬νλ©° HTTP/2λ₯Ό μ¬μ©ν μ μκ² λ§λ€κ² μ΅λλ€. μ΄λ―Έ μ¬μ©μ€μΈ μμ§μμ€κ° μλ€λ©΄ μ κΉνλΈ λ¦¬νμ§ν 리 nginx.confμ μ½λλ₯Ό νμ©ν΄μ λ컀 μ»΄ν¬μ¦λ‘ μμ§μμ€ μ»¨ν μ΄λλ₯Ό μ€ννμ λ μ’μ΅λλ€.
version: '3.8'
services:
nginx:
image: nginx:1.21.3-alpine
ports:
- 80:80
- 443:443
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./localhost+3.pem:/etc/nginx/server.crt
- ./localhost+3-key.pem:/etc/nginx/server.key
- ./static:/etc/nginx/static
app:
image: amazoncorretto:11-alpine
command: 'java -jar /etc/app.jar'
volumes:
- ./demo-0.0.1-SNAPSHOT.jar:/etc/app.jar
μ λ 리νμ§ν 리μ μλ μ¬μ€ μΈμ¦μ λμ μ mkcertλ₯Ό ν΅ν΄ λ§λ€μ΄μ§ μΈμ¦μλ₯Ό μ¬μ©νλλ‘ λ³κ²½νμ΅λλ€.
리νμ§ν 리μ μ μ₯λ μν μ ν리μΌμ΄μ
μ κ·Έλλ‘ μ¬μ©νμ§λ§ λ‘컬 νΈμ€νΈμμ μΈν
리μ μ΄μ κ°μ κ°λ° λκ΅¬λ‘ μ ν리μΌμ΄μ
μ μ€ννμ
¨λ€λ©΄ nginx.conf νμΌμ λ°±μλ μ€νΈλ¦Όμ λν μ£Όμλ₯Ό host.docker.internal
λ‘ λ³κ²½νμΈμ. 컨ν
μ΄λλ‘ μ€νλ μμ§μμ€μμ λ‘컬 νΈμ€νΈλ‘ νΈλν½μ΄ μ λ¬λκ² λ©λλ€.
mkcertκ° μλμΌλ‘ μ λ’° κΈ°κ΄ λͺ©λ‘μ μμ μ CA μΈμ¦μλ₯Ό λ±λ‘νμκΈ° λλ¬Έμ λΈλΌμ°μ λ μΈμ¦μλ₯Ό μ λ’°ν μ μλ€κ³ νλ¨νκ³ HTTPS μ°κ²°μ΄ μ μμ μΌλ‘ μνλμμ΅λλ€.
μ΄μ μ¬λ¬λΆλ€λ λ‘컬 νκ²½μμ κ°λ°νμ€λ HTTPSμ κ·Έλ¦¬κ³ HTTP 1.1μ΄ μλ HTTP/2λ₯Ό μ¬μ©ν΄λ³΄μκΈ° λ°λλλ€.
κ°μ¬ν©λλ€.