1. ๋ค์ด๊ฐ๋ฉฐ
HTTPS, TLS, ์ธ์ฆ์ ๋ฑ์ ์ฐ๋ฆฌ๊ฐ ๋งค์ผ ์ ํ๋ ๋ณด์ ๊ธฐ์ ์ ๋๋ค.
ํ์ง๋ง โ์ด ๋ชจ๋ ๊ฑธ ์ค์ ๋ก ์ฒ๋ฆฌํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฌด์์ผ๊น?โ๋ฅผ ๋ฌป๋๋ค๋ฉด, ๋๋ถ๋ถ์ ๋ฆฌ๋ ์ค ๊ฐ๋ฐ์๋ ๋ ๊ฐ์ง ์ด๋ฆ์ ๋ ์ฌ๋ฆฝ๋๋ค.
๋ฐ๋ก OpenSSL๊ณผ NSS(Network Security Services) ์ ๋๋ค.
์ด๋ฒ ๊ธ์์๋ ์ด ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ๋ค๋ฅด๊ณ , ํนํ ๋ฆฌ๋ ์ค ๋ณด์ ํต์ ๊ตฌ์ฑ์์ NSS๊ฐ ์ด๋ค ์์น๋ฅผ ์ฐจ์งํ๋์ง๋ฅผ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
2. OpenSSL๊ณผ NSS๋?
๐ธ OpenSSL
- ๊ธฐ์: 1998๋ , SSLeay ํ๋ก์ ํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์๋ ์คํ์์ค ์ํธํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ์ญํ : TLS/SSL ํ๋กํ ์ฝ ๊ตฌํ + ๋์นญ/๋น๋์นญ ์ํธํ, ํด์, ์ธ์ฆ์ ์ฒ๋ฆฌ ๋ฑ
- ์ธ์ด/๋ผ์ด์ ์ค: C ์ธ์ด ๊ธฐ๋ฐ, Apache-style License
- ๋ํ ์ฌ์ฉ์: Linux ์๋ฒ, Nginx, Apache, cURL, Python ๋ฑ ๋๋ถ๋ถ์ ์คํ์์ค ์ํํธ์จ์ด
โก๏ธ OpenSSL์ โTLS ํต์ ์ ์ํ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌโ๋ก์ ์ฌ์ค์ ๋ฆฌ๋ ์ค ์ธ๊ณ์ ๊ธฐ๋ณธ ๋๊ตฌ์ ๋๋ค.
๐ธ NSS (Network Security Services)
- ๊ธฐ์: ๋ท์ค์ผ์ดํ(Netscape)์์ Mozilla ํ๋ก์ ํธ๋ก ์ด์ด์ง ๋ณด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ์ญํ : TLS/SSL, S/MIME, PKCS#11, X.509 ์ธ์ฆ์ ๊ด๋ฆฌ ๋ฑ
- ํน์ง:
- FIPS 140-2 ์ธ์ฆ์ ํ๋ํ ์ํธํ ๋ชจ๋ ์ ๊ณต (๊ณต๊ณต๊ธฐ๊ด, ๊ธ์ต๊ธฐ๊ด์์ ์ ํธ)
- ๋ชจ๋ํ ๊ตฌ์กฐ (softoken, freebl, libnssutil ๋ฑ์ผ๋ก ๋ถ๋ฆฌ)
- PKCS#11 ๊ธฐ๋ฐ ํค ์ ์ฅ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ณด์ ํ ํฐ, HSM๊ณผ ํธํ
โก๏ธ NSS๋ โ๋ณด์ ๊ท๊ฒฉ ์ค์๋ฅผ ์ํ ์์คํ ๋ ๋ฒจ ์ํธํ ์คํโ์ผ๋ก ์ค๊ณ๋์์ต๋๋ค.
3. OpenSSL vs NSS โ ์ฃผ์ ์ฐจ์ด์ ๋น๊ต
| ๊ตฌ๋ถ | OpenSSL | NSS |
|---|---|---|
| ๊ฐ๋ฐ ์ฃผ์ฒด | OpenSSL ์ฌ๋จ | Mozilla ์ฌ๋จ |
| ์ฃผ์ ์ฌ์ฉ์ฒ | ๋ฆฌ๋ ์ค ์๋ฒ, CLI ํด, ๋ฐฑ์๋ ์๋น์ค | Firefox, Chrome(์ผ๋ถ), Red Hat, Fedora |
| ํค ๊ด๋ฆฌ ๋ฐฉ์ | PEM ํ์ผ ๊ธฐ๋ฐ | PKCS#11 ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค (cert8.db, key4.db ๋ฑ) |
| FIPS ์ธ์ฆ | ์ ํ์ ๋ชจ๋ | ๊ธฐ๋ณธ์ ์ผ๋ก FIPS 140-2 ์ธ์ฆ ์ง์ |
| API ํธํ์ฑ | OpenSSL ์ ์ฉ API | NSS API + PKCS#11 ์ธํฐํ์ด์ค |
| ์ด์ | ์๋, ๋ฒ์ฉ์ฑ | ๋ณด์ ์ ์ฑ , ์ธ์ฆ ์ค์ |
| ์์ ๋ช ๋ น์ด | openssl s_client -connect host:443 | certutil, modutil, pk12util |
๐ก ์์ฝํ์๋ฉด,
OpenSSL์ โ์๋์ ๋ฒ์ฉ์ฑโ ์ค์ฌ,
NSS๋ โ๋ณด์ ๊ท๊ฒฉ๊ณผ ์ ์ฑ ์ค์โ ์ค์ฌ์ ๋๋ค.
4. ๋ฆฌ๋ ์ค ๋ณด์ ํต์ ๊ตฌ์ฑ์์ NSS์ ์์น
๋ฆฌ๋ ์ค๋ ํ๋์ SSL/TLS ์คํ๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ์๋๋๋ค.
๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ๋ฐฐํฌํ๋ง๋ค ๋ค๋ฅธ ๋ณด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ํํฉ๋๋ค.
๐น ๊ตฌ์ฑ ๊ฐ๋ ๋
[ Application Layer ]
โโโ Firefox / Thunderbird / Chromium โ NSS
โโโ curl / wget / Python / nginx / Apache โ OpenSSL / GnuTLS
โโโ RPM, Yum, DNF ๋ฑ โ NSS
[ Security Library Layer ]
โโโ OpenSSL (libssl, libcrypto)
โโโ NSS (libnss3, libsoftokn3)
โโโ GnuTLS (libgnutls)
โโโ WolfSSL, mbedTLS ๋ฑ
[ Kernel / System Layer ]
โโโ /dev/random, HSM, PKCS#11 ๋ชจ๋
๐น NSS์ ์ญํ
- ๋ ๋ํ(RHEL), Fedora ๊ณ์ด์์๋ ์์คํ
๊ธฐ๋ณธ ๋ณด์ ์คํ์ผ๋ก NSS๊ฐ ์ฑํ๋์ด ์์ต๋๋ค.
- ์: DNF ํจํค์ง ๊ด๋ฆฌ์, RPM ์๋ช ๊ฒ์ฆ ๋ฑ
- ๋ธ๋ผ์ฐ์ ๋ฐ ์ธ์ฆ์ ๊ด๋ฆฌ์์ NSS๊ฐ ์ธ์ฆ์ ์ ์ฅ์ ์ญํ ์ ์ํํฉ๋๋ค.
- ์: certutil -L -d sql:$HOME/.pki/nssdb ๋ก NSS DB๋ฅผ ์กฐํ ๊ฐ๋ฅ
- **๋ณด์์ ์ฑ ์ด ์๊ฒฉํ ํ๊ฒฝ(FIPS ๋ชจ๋)**์์๋ NSS ๊ธฐ๋ฐ ์ํธํ๋ง ํ์ฉ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
์ฆ, NSS๋ ๋ฆฌ๋ ์ค์ โ๋ณด์ ๊ทผ๊ฐโ์ ๋ด๋นํ๋ ์์คํ ๋ ๋ฒจ ์ํธํ ์ธํ๋ผ๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
5. ๊ฒฐ๋ก
OpenSSL์ ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ค์ฌ์ ๋ณด์ ๋๊ตฌ์ด๊ณ ,
NSS๋ ์์คํ ๋ณด์ ์ ์ฑ ๊ณผ ์ธ์ฆ์ ๊ด๋ฆฌ๋ฅผ ๋ด๋นํ๋ ๋ณด์ ํ๋ซํผ ๊ณ์ธต์ ๋๋ค.
๋์ ๊ฒฝ์ ๊ด๊ณ๋ผ๊ธฐ๋ณด๋ค ์๋ก ๋ค๋ฅธ ์์ญ์ ๋ณด์์ ์ฑ ์์ง๋ ํ๋ ฅ ๊ตฌ์กฐ๋ก ์ดํดํ๋ ๊ฒ์ด ์ ํํฉ๋๋ค.
โ ์ ๋ฆฌ
- OpenSSL โ ํต์ ๋ณด์ (์๋ฒ, CLI, API)
- NSS โ ์์คํ ๋ณด์ ์ ์ฑ , ์ธ์ฆ์ ์ ์ฅ์, FIPS ๋ชจ๋

๋๊ธ ๋จ๊ธฐ๊ธฐ