๐ SSL์ด๋? (Secure Sockets Layer)
SSL(Secure Sockets Layer)์ ์ธํฐ๋ท์์ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ์ฌ ์์ ํ๊ฒ ์ ์กํ๊ธฐ ์ํ ๋ณด์ ํ๋กํ ์ฝ์ด๋ค! ๐
โ ๊ธฐ๋ณธ ๊ฐ๋
- ํด๋ผ์ด์ธํธ(์น ๋ธ๋ผ์ฐ์ )์ ์๋ฒ ๊ฐ์ ๋ฐ์ดํฐ ์ ์ก์ ์ํธํํ์ฌ ํด์ปค๊ฐ ์ค๊ฐ์์ ์ ๋ณด๋ฅผ ํ์ณ๋ณด๋ ๊ฑธ ๋ฐฉ์งํ๋ ๊ธฐ์
- ํ์ฌ๋ SSL์ ํ์ ๋ฒ์ ์ธ TLS(Transport Layer Security)๊ฐ ์ฌ์ฉ๋๊ณ ์์ง๋ง, ๊ดํ์ ์ผ๋ก SSL์ด๋ผ๋ ์ฉ์ด๋ฅผ ๊ณ์ ์ฌ์ฉ
๐ 1. SSL์ ํต์ฌ ๊ธฐ๋ฅ
โ 1-1. ๋ฐ์ดํฐ ์ํธํ (Encryption)
- ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ ์ฃผ๊ณ ๋ฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ํธํํด์ ์ 3์๊ฐ ๋ด์ฉ์ ๋ณผ ์ ์๋๋ก ๋ณดํธ
โ 1-2. ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ (Integrity)
- ๋ฐ์ดํฐ๊ฐ ์ ์ก ์ค ๋ณ๊ฒฝ๋์ง ์๋๋ก ๋ณดํธ (ํด์ปค๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ค๊ฐ์์ ์กฐ์ํ๋ ๊ฑธ ๋ฐฉ์ง)
โ 1-3. ์ ์ ์ธ์ฆ (Authentication)
- ํด๋ผ์ด์ธํธ๊ฐ ์ ์ํ๋ ์๋ฒ๊ฐ ์ ๋ขฐํ ์ ์๋ ์๋ฒ์ธ์ง ํ์ธ (ํผ์ฑ ์ฌ์ดํธ ๋ฐฉ์ง)
๐ 2. SSL์ด ํ์ํ ์ด์
โ ๋น๋ฐ๋ฒํธ, ์ ์ฉ์นด๋ ์ ๋ณด ๊ฐ์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ๋ณดํธ
โ ๊ณต๊ฒฉ์๊ฐ ์ค๊ฐ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ก์ฑ๋ โ์ค๊ฐ์ ๊ณต๊ฒฉ(Man-in-the-Middle Attack)โ ๋ฐฉ์ง
โ ์น์ฌ์ดํธ์ ์ ๋ขฐ๋ ํฅ์ (SSL ์ธ์ฆ์๊ฐ ์์ผ๋ฉด ๋ธ๋ผ์ฐ์ ์์ โ์์ ํ์ง ์์โ ๊ฒฝ๊ณ ๊ฐ ๋ฐ ์๋ ์์ โ ๏ธ)
โ SEO(๊ฒ์์์ง ์ต์ ํ)์๋ ๊ธ์ ์ ์ธ ์ํฅ (Google์ HTTPS ์น์ฌ์ดํธ๋ฅผ ์ฐ์ ์ ์ผ๋ก ๋
ธ์ถํจ)
๐ 3. SSL์ ์๋ ์๋ฆฌ
โ 3-1. SSL Handshake (SSL ์ฐ๊ฒฐ ๊ณผ์ )
1๏ธโฃ ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )๊ฐ ์๋ฒ์ HTTPS ์์ฒญ
2๏ธโฃ ์๋ฒ๊ฐ SSL ์ธ์ฆ์(CRT, ๊ณต๊ฐ ํค ํฌํจ)๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์ก
3๏ธโฃ ํด๋ผ์ด์ธํธ๊ฐ ์ธ์ฆ์ ๊ฒ์ฆ
์ ๋ขฐํ ์ ์๋ CA์์ ๋ฐ๊ธ๋์๋์ง, ๋ง๋ฃ/๋๋ฉ์ธ๊ณผ ์ผ์น
์ธ์ฆ์๊ฐ ์ ํจํ์ง ์๋ค๋ฉด, "์ด ์ฌ์ดํธ๋ ์์ ํ์ง ์์ต๋๋ค" ๊ฒฝ๊ณ ๋ฐ์ ๐จ
4๏ธโฃ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์ํธํ ๋ฐฉ์(ํค ๊ตํ ์๊ณ ๋ฆฌ์ฆ) ํ์
ํด๋ผ์ด์ธํธ๊ฐ ๋์นญํค๋ฅผ ์์ฑ, ๋์นญํค๋ฅผ ๊ณต๊ฐํค๋ก ์ํธํ (Key Exchange)
์๋ฒ๋ ์์ ์ ๊ฐ์ธ ํค(Private Key)๋ก ๋ณตํธํํ์ฌ ๋์นญํค๋ฅผ ์ป์
5๏ธโฃ ๋ณด์ ์ธ์
ํค๋ฅผ ์์ฑํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ์ฌ ์ ์ก
๋ณด์ ์ธ์ ์์ (TLS Handshake ์๋ฃ)
- ์ด์ ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ๊ฐ์ ๋์นญํค๋ฅผ ๊ณต์
- ์ดํ์ ๋ชจ๋ ํต์ ์ ์ด ๋์นญํค๋ก ์ํธํ๋จ(๋น ๋ฅด๊ณ ์์ ํจ)
- ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ๋์นญํค๋ฅผ ์ด์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ํธํํ์ฌ ์ฃผ๊ณ ๋ฐ์
๐ฅ ์ด ๊ณผ์ ์ ๊ฑฐ์ณ ๋ธ๋ผ์ฐ์ ์ ์๋ฒ ๊ฐ ์์ ํ ์ฐ๊ฒฐ์ด ๋งบ์ด์ง๋ค!
๐ 4. SSL ์ธ์ฆ์๋?
SSL์ ์ฌ์ฉํ๋ ค๋ฉด ์ ๋ขฐํ ์ ์๋ ๊ธฐ๊ด(CA, Certificate Authority)์์ ๋ฐ๊ธํ SSL ์ธ์ฆ์๊ฐ ํ์ํ๋ค.
์ธ์ฆ์์๋ ๋๋ฉ์ธ ์ ๋ณด, ๊ธฐ๊ด ์ ๋ณด, ๊ณต๊ฐ ํค(public key) ๋ฑ์ด ํฌํจ๋์ด ์๋ค!
๐น SSL ์ธ์ฆ์์ ์ข ๋ฅ
์ธ์ฆ์ ์ข ๋ฅ | ํน์ง |
DV (Domain Validation) | ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ธ์ฆ์, ๋๋ฉ์ธ ์์ ์ ํ์ธ |
OV (Organization Validation) | ๊ธฐ์ ์ ๋ณด๊น์ง ๊ฒ์ฆ, ์ ๋ขฐ๋ โ |
EV (Extended Validation) | ์ต์์ ๋ณด์ ์์ค, ๋ธ๋ผ์ฐ์ ์ฃผ์์ฐฝ์ ํ์ฌ ์ด๋ฆ ํ์ |
โญ Let's Encrypt ๊ฐ์ ๋ฌด๋ฃ ์ธ์ฆ์๋ ๋ง์ด ์ฌ์ฉ๋๋ค!
๐ 5. HTTPS์ SSL์ ๊ด๊ณ
- HTTPS = HTTP + SSL/TLS
- ๊ธฐ์กด HTTP ํ๋กํ ์ฝ์ SSL/TLS๋ก ๊ฐ์ธ์ ๋ณด์์ด ๊ฐํ๋ ํต์ ๋ฐฉ์
- ์น์ฌ์ดํธ์์ https://๋ก ์์ํ๋ฉด SSL/TLS๋ฅผ ์ฌ์ฉ ์ค์ธ ๊ฒ!
๐ 6. MSA์์ SSL ์ ์ฉํ๋ ๋ฐฉ๋ฒ
โก๏ธ MSA ํ๊ฒฝ์์๋, API Gateway์์ HTTPS๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋ด๋ถ๋ HTTP๋ฅผ ์ ์งํ๋ ๋ฐฉ์์ด ์ผ๋ฐ์ !
โก๏ธ ํ์ง๋ง ๋ด๋ถ ์๋น์ค ๊ฐ์๋ ๋ณด์์ด ์ค์ํ๋ค๋ฉด SSL์ ํ์ฑํํ๋ ๊ฒ ์ข๋ค! ๐๐
๐ 7. SSL ์ ์ฉ ๋ฐฉ๋ฒ
โ 7-1. API Gateway์์ SSL ์ ์ฉ (Nginx, Spring Cloud Gateway)
ํด๋ผ์ด์ธํธ์ Gateway ๊ฐ ๋ณด์ ๊ฐํ
๋ฐฉ๋ฒ 1๏ธโฃ: Nginx๋ฅผ ์ฌ์ฉํ์ฌ SSL ์ ์ฉ (Let's Encrypt ๋๋ ์์ฒด ์ธ์ฆ์ ์ฌ์ฉ)
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
location / {
proxy_pass http://backend-service;
}
}
โก๏ธ ์ด๋ฌ๋ฉด API Gateway๊ฐ HTTPS๋ฅผ ์ฒ๋ฆฌํ๊ณ , ๋ด๋ถ ์๋น์ค๋ HTTP๋ก ์ ์ง ๊ฐ๋ฅ!
๋ฐฉ๋ฒ 2๏ธโฃ: Spring Cloud Gateway์์ SSL ์ ์ฉ
application.yml
server:
port: 8443
ssl:
key-store: classpath:keystore.p12
key-store-password: yourpassword
key-store-type: PKCS12
โก๏ธ Gateway ์์ฒด์์ HTTPS ์ง์ ๊ฐ๋ฅ!
โ 7-2. ์๋น์ค ๊ฐ SSL ์ ์ฉ (Spring Boot, Eureka, Feign ๋ฑ)
์๋น์ค ๊ฐ ํต์ ๋ ์ํธํํด์ผ ํ ๊ฒฝ์ฐ
1๏ธโฃ ๊ฐ ์๋น์ค์์ HTTPS ํ์ฑํ
application.yml
server:
port: 8443
ssl:
enabled: true
key-store: classpath:keystore.p12
key-store-password: yourpassword
key-store-type: PKCS12
2๏ธโฃ Feign Client์์ HTTPS ์ฌ์ฉ
@FeignClient(name = "user-service", url = "https://user-service:8443")
public interface UserServiceClient {
@GetMapping("/users/{id}")
UserResponse getUser(@PathVariable Long id);
}
๐ฅ ์ด์ UserService๋ก HTTPS ์์ฒญ์ ๋ณด๋ผ ์ ์๋ค!
โ 7-3. Eureka & Config Server์์ SSL ์ ์ฉ
1๏ธโฃ Eureka ์๋ฒ์์ HTTPS ํ์ฑํ
application.yml
server:
port: 8761
ssl:
key-store: classpath:eureka-keystore.p12
key-store-password: eurekapass
key-store-type: PKCS12
2๏ธโฃ ํด๋ผ์ด์ธํธ์์ Eureka์ HTTPS๋ก ๋ฑ๋ก
eureka:
instance:
secure-port-enabled: true
non-secure-port-enabled: false
hostname: eureka.example.com
client:
service-url:
defaultZone: https://eureka.example.com:8761/eureka/
๐ 8. ์ ๋ฆฌ: ์ด๋์ SSL์ ์ ์ฉํ ๊น?
์ ์ฉ ๋์ | SSL ์ ์ฉ ์ฌ๋ถ | ๋น๊ณ |
API Gateway โ ํด๋ผ์ด์ธํธ | โ ํ์ | ์ธ๋ถ ํธ๋ํฝ ๋ณดํธ (HTTPS) |
API Gateway โ ๋ด๋ถ ์๋น์ค | โ ์ ํ | ๋ด๋ถ ๋คํธ์ํฌ๋ผ๋ฉด HTTP ๊ฐ๋ฅ |
์๋น์ค โ ์๋น์ค | ๐ฅ ๊ถ์ฅ | ์ค์ํ ๋ฐ์ดํฐ ์ ์ก ์ HTTPS |
Eureka, Config Server | ๐ฅ ๊ถ์ฅ | ๋ณด์ ๊ฐํ ํ์ ์ HTTPS |
๐ 9. SSL ์ธ์ฆ์ ๋ฐ๊ธ ๋ฐ ์ ์ฉ ๋ฐฉ๋ฒ ๐
SSL ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํ๊ณ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์๋ ๊ณต์ ์ธ์ฆ๊ธฐ๊ด(CA)์ ํตํ ๋ฐ๊ธ๊ณผ OpenSSL์ ์ด์ฉํ ์์ฒด ๋ฐ๊ธ ๋ฐฉ๋ฒ์ด ์๋ค.
โ 9-1. SSL ์ธ์ฆ์ ๋ฐ๊ธ ๊ณผ์ (๊ณต์ CA vs OpenSSL ์์ฒด ๋ฐ๊ธ)
SSL์ ์ ์ฉํ๋ ค๋ฉด ์๋ 3๊ฐ์ง ํ์ผ์ด ํ์ํ๋ค.
- Private Key (.key): ์๋ฒ์์ ์์ฑํ๋ ๋น๋ฐ ํค (์ธ๋ถ์ ๋ ธ์ถ๋๋ฉด ์ ๋จ)
- CSR (.csr): ์ธ์ฆ์ ์๋ช ์์ฒญ ํ์ผ (CA์์ ์ธ์ฆ์ ๋ฐ๊ธ ์ ํ์)
- CRT (.crt): CA์์ ๋ฐ๊ธํด์ฃผ๋ SSL ์ธ์ฆ์ ํ์ผ (์๋ฒ์์ ์ฌ์ฉ)
๐ OpenSSL๊ณผ ๊ณต์ CA์ SSL ์ธ์ฆ์ ๋ฐ๊ธ ์ ์ฐจ ์ฐจ์ด์
OpenSSL๊ณผ ๊ณต์ CA์ ๋ฐ๊ธ ์ ์ฐจ๋ ๋น์ทํ์ง๋ง ์ฐจ์ด์ ์ด ์๋ค!
๐น ๊ณตํต์ : ๋ ๋ค Private Key์ CSR์ ์์ฑํด์ผ ํจ.
๐น ์ฐจ์ด์ :
- OpenSSL ์์ฒด ๋ฐ๊ธ์ ์ค์ค๋ก CA ์ญํ ์ ํ์ฌ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํจ (๋ธ๋ผ์ฐ์ ์ ๋ขฐ X)
- ๊ณต์ CA๋ ์ 3์ ์ธ์ฆ๊ธฐ๊ด(CA)์์ ์๋ช ํ๊ณ , ๋ธ๋ผ์ฐ์ ์์ ์ ๋ขฐํ ์ ์๋๋ก ๋ณด์ฆํจ.
๐ก ๊ณต์ CA์ ๋ฐ๊ธ ๊ณผ์ ์ ๋ ๋ง์ ๊ฒ์ฆ ์ ์ฐจ๊ฐ ํ์ํ๊ณ , OpenSSL ์์ฒด ๋ฐ๊ธ์ ๋น ๋ฅด์ง๋ง ๋ณด์์ ์ ๋ขฐ๋ฅผ ์ป๊ธฐ ์ด๋ ค์
๐ฅ OpenSSL ๋ฐฉ์ vs. ๊ณต์ CA ์ธ์ฆ ๋ฐฉ์ ๋น๊ต
๋ฐฉ์ | ๊ณต์ CA ๋ฐ๊ธ (์ ํจํ SSL) | OpenSSL ์์ฒด ๋ฐ๊ธ (Self-Signed) |
๋ณด์์ฑ | โ ์ ๋ขฐํ ์ ์์ | โ ์ ๋ขฐํ ์ ์์ (๋ธ๋ผ์ฐ์ ์์ ๊ฒฝ๊ณ ) |
์ ๋ขฐ๋ | โ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์ธ์ | โ ์ฌ์ฉ์๊ฐ ์ง์ ์ธ์ฆ์ ์ ๋ขฐ ์ค์ ํ์ |
์ฌ์ฉ ๋ชฉ์ | ์์ฉ ์น์ฌ์ดํธ, ์๋น์ค ์ด์ | ๋ด๋ถ ํ ์คํธ, ๋ก์ปฌ ํ๊ฒฝ |
๋น์ฉ | ์ ๋ฃ(์ ๋ช CA) / ๋ฌด๋ฃ(์: Let's Encrypt) | ๋ฌด๋ฃ |
๐จ ๊ณต์ CA์์ ๋ฐ๊ธ๋ฐ์ ์ธ์ฆ์๋ ๋ธ๋ผ์ฐ์ ์์ ์ ๋ขฐํ์ง๋ง, OpenSSL ์์ฒด ๋ฐ๊ธ ์ธ์ฆ์๋ '์์ ํ์ง ์์' ๊ฒฝ๊ณ ๊ฐ ๋ฐ ์ ์๋ค!
โ 9-2. ๊ณต์ SSL ์ธ์ฆ์ ๋ฐ๊ธ (CA๋ฅผ ํตํ ์ธ์ฆ)
๐น ๊ณผ์ ์์ฝ
Private Key ์์ฑ โ CSR ์์ฑ โ CA ์ ์ถ โ CA์์ ๊ฒ์ฆ ํ ์ธ์ฆ์ ๋ฐ๊ธ โ ์๋ฒ์ ์ ์ฉ
๐น๋ฐ๊ธ ์ ์ฐจ
1๏ธโฃ CSR(Certificate Signing Request) ์์ฑ
- ๊ณต์ CA์์๋ OpenSSL์ ์ด์ฉํด Private Key์ CSR์ ๋ง๋ค ์ ์์
- ์๋ฒ์์ **CSR ํ์ผ(์ธ์ฆ์ ์๋ช ์์ฒญ ํ์ผ)**์ ์์ฑํด์ผ ํจ
- openssl genrsa -out my_private.key 2048
- openssl req -new -key private.key -out request.csr
2๏ธโฃ CA์ ์ธ์ฆ์ ์์ฒญ ๋ฐ ๋๋ฉ์ธ ์์ ๊ถ ์ธ์ฆ
- CA(์: Let's Encrypt, DigiCert, GlobalSign ๋ฑ)์ CSR ํ์ผ์ ์ ์ถ
- ๋๋ฉ์ธ ์์ ํ์ธ(DNS, ์ด๋ฉ์ผ, ํ์ผ ์ ๋ก๋ ๋ฐฉ์ ๋ฑ) ํ ์ธ์ฆ ์งํ
- โ ์ ๋ฃ SSL : DigiCert, GlobalSign, Comodo ๋ฑ
- โ ๋ฌด๋ฃ SSL : Let's Encrypt (์๋ ๊ฐฑ์ ํ์)
3๏ธโฃ SSL ์ธ์ฆ์ ๋ฐ๊ธ
- ์ธ์ฆ์ด ์๋ฃ๋๋ฉด CA์์ SSL ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํจ (.crt ๋๋ .pem ํ์ผ)
4๏ธโฃ ์๋ฒ์ SSL ์ ์ฉ
- ๋ฐ๊ธ๋ ์ธ์ฆ์๋ฅผ ์น ์๋ฒ(Nginx, Apache, Tomcat ๋ฑ)์ ์ค์
- HTTPS ํ์ฑํ
โ 9-3. OpenSSL์ ์ด์ฉํ ์์ฒด ๋ฐ๊ธ (Self-Signed Certificate)
๋ด๋ถ ํ ์คํธ์ฉ์ผ๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ OpenSSL์ ์ด์ฉํด์ ์ง์ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํ ์๋ ์๋ค!
๐น ๊ณผ์ ์์ฝ
Private Key ์์ฑ โ CSR ์์ฑ โ ์์ฒด ์๋ช ๋ ์ธ์ฆ์ ๋ฐ๊ธ โ ์๋ฒ์ ์ ์ฉ
๐น ๋ฐ๊ธ ์ ์ฐจ
- https://code.google.com/archive/p/openssl-for-windows/downloads
- ๋ค์ด๋ก๋ ํ ์์ถํด์
ํด๋นํ์ผ/bin/openssl.exe๋ฅผ ์คํนํฉ๋๋ค.
(์๋์๋๋ถ๋ค์ cmd ๋ก ํด๋น ๊ฒฝ๋ก ์ด๋ ํ , openssl.exe ํน์ ๊ด๋ฆฌ์๊ถํ์ผ๋ก ์คํํด๋ณด์ธ์)
1๏ธโฃ ๋น๊ณต๊ฐ ํค(private key) ์์ฑ
openssl genrsa -out my_private.key 2048
(๊ณต๊ฐํค: openssl rsa -in private.key -pubout -out public.key)
2๏ธโฃ CSR ํ์ผ ์์ฑ (์ธ์ฆ์ ์์ฒญ ํ์ผ)
openssl req -new -key my_private.key -out my_request.csr
3๏ธโฃ ์์ฒด ์๋ช ๋ SSL ์ธ์ฆ์(CRT) ์์ฑ
openssl x509 -req -days 365 -in my_request.csr -signkey my_private.key -out my_certificate.crt
โญ ์ด๋ ๊ฒ ํ๋ฉด my_certificate.crt ์ธ์ฆ์๊ฐ ์์ฑ๋จ!
๐จ ํ์ง๋ง, ๊ณต์ CA์์ ๋ฐ๊ธ๋ฐ์ ๊ฒ ์๋๊ธฐ ๋๋ฌธ์ ์ ๋ขฐํ ์ ์๋ ์ธ์ฆ์๋ก ์ธ์๋จ!
โ 9-4. SSL ์ ์ฉ ๋ฐฉ๋ฒ (Nginx & Spring Boot ์์)
๋ฐ๊ธ๋ฐ์ ์ธ์ฆ์๋ฅผ ์น ์๋ฒ์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ
โ 9-4-1. Nginx์์ SSL ์ ์ฉ
server {
listen 443 ssl;
server_name mydomain.com;
ssl_certificate /etc/ssl/certs/my_certificate.crt;
ssl_certificate_key /etc/ssl/private/my_private.key;
location / {
proxy_pass http://localhost:8080;
}
}
- ssl_certificate : ๋ฐ๊ธ๋ฐ์ .crt ํ์ผ ๊ฒฝ๋ก
- ssl_certificate_key : ๊ฐ์ธ ํค .key ํ์ผ ๊ฒฝ๋ก
โ 9-4-2. crt์ key๋ฅผ p12๋ก ๋ณํ
Tomcat์ .crt์ .key๋ฅผ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๊ณ , .p12(PKCS12) ๋๋ .jks(Java Keystore) ํ์์ด ํ์!
openssl pkcs12 -export -in my_certificate.crt -inkey my_private.key -out my_keystore.p12 -name tomcat
๐ก ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ๋ผ๊ณ ๋์ค๋ฉด, ์ดํ Tomcat ์ค์ ์์ ์ฌ์ฉํ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ๋ฉด ๋จ
โ 9-4-3. server.xml ์ค์ (Tomcat์ SSL ์ ์ฉ)
Tomcat์ server.xml์ ์ด์ด์ ์๋์ฒ๋ผ ์ถ๊ฐ!
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="200" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="C:/path/to/my_keystore.p12"
type="PKCS12"
certificateKeystorePassword="mypassword"/>
</SSLHostConfig>
</Connector>
โ certificateKeystoreFile : .p12 ํ์ผ์ ๊ฒฝ๋ก
โ certificateKeystorePassword : .p12 ํ์ผ์ ๋ง๋ค ๋ ์
๋ ฅํ ๋น๋ฐ๋ฒํธ
๐ ์ด์ Tomcat์ ์ฌ์์ํ๋ฉด HTTPS(ํฌํธ 8443)๊ฐ ํ์ฑํ๋จ!
โ 9-4-4. Spring Boot์์ SSL ์ ์ฉ
application.yml
server:
port: 8443
ssl:
key-store: classpath:keystore.p12
key-store-password: mypassword
key-store-type: PKCS12
- keystore.p12 ํ์ผ์ ์์ฑํด์ ์ค์ ํ๋ฉด Spring Boot์์๋ HTTPS ์ฌ์ฉ ๊ฐ๋ฅ!
๐ ๊ฒฐ๋ก
โ
์ด์ ํ๊ฒฝ์์๋ ๊ณต์ CA์์ ๋ฐ๊ธ๋ฐ์ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํด์ผ ํจ (๋ณด์ ๋ฐ ์ ๋ขฐ๋ ๋ฌธ์ )
โ
ํ
์คํธ ํ๊ฒฝ์์๋ OpenSSL๋ก ์์ฒด ๋ฐ๊ธํ์ฌ ์ฌ์ฉํ ์๋ ์์
โ
MSA ํ๊ฒฝ์์๋ API Gateway(Nginx, Spring Cloud Gateway ๋ฑ)์์ SSL์ ์ ์ฉํ๋ ๊ฒ ์ผ๋ฐ์
'study > ๋ณด์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JWT๋? (JSON Web Token) (0) | 2025.02.16 |
---|---|
์ ์ฅ์ ๋น๊ต (0) | 2024.12.01 |
๋ฐฉํ๋ฒฝ/IDS/IPS (0) | 2024.03.12 |
CNAPP (CWPP/SCPM/CIEM) (0) | 2024.03.12 |