์ผ๋ฐ์ ์ธ ์ธ์ฆ์ ํ์ผ(PEM/Key)์ IBM HTTP Server(IHS)์์ ์ฌ์ฉํ๋ CMS ํค ๋ฐ์ดํฐ๋ฒ ์ด์ค(KDB) ํ์์ผ๋ก ๋ณํํ๋ ๊ณผ์ ์ ์ ๋ฆฌํฉ๋๋ค. OpenSSL์ ์ด์ฉํด P12๋ก 1์ฐจ ๋ณํ ํ, IBM GSKit(gskcapicmd)์ ์ด์ฉํด KDB๋ก ์ต์ข ๋ณํ ๋ฐ ๋ฑ๋กํฉ๋๋ค.
0. ๋ฐฐ๊ฒฝ ๋ฐ ํ๋ก์ธ์ค (Workflow)
IHS๋ OpenSSL ๊ธฐ๋ฐ์ด ์๋ IBM ๊ณ ์ ์ ์ํธํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(GSKit)๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ผ์ ๋ค์๊ณผ ๊ฐ์ ๋ณํ ๊ณผ์ ์ด ํ์์ ์ ๋๋ค.
- Step 1:
.key+.pem→.p12(OpenSSL ์ฌ์ฉ) - Step 2:
.p12→.kdb(gskcapicmd ์ฌ์ฉ)
Test Environment
- OS: Linux / Unix
- Web Server: IBM HTTP Server v9.0 (v8.5 ์ด์ ๋์ผ)
- Tool: OpenSSL, gskcapicmd (IHS bin ํด๋ ๋ด์ฅ)
1. PEM์ P12๋ก ๋ณํ (OpenSSL)
๊ฐ์ธํค(Private Key)์ ์ธ์ฆ์(Certificate)๋ฅผ ํ๋์ ํจํค์ง ํฌ๋งท์ธ PKCS#12(.p12)๋ก ๋ณํฉํฉ๋๋ค.
# ๊ตฌ๋ฌธ: openssl pkcs12 -export -inkey [๊ฐ์ธํค] -in [์ธ์ฆ์] -out [์ถ๋ ฅํ์ผ๋ช
]
openssl pkcs12 -export -inkey Wildcard.test.co.kr.key -in Wildcard.test.co.kr.pem -out Wildcard.test.co.kr.p12
๋ช ๋ น์ด ์คํ ์ Export Password๋ฅผ ์ค์ ํ๊ฒ ๋ฉ๋๋ค. ์ด ๋น๋ฐ๋ฒํธ๋ ๋ค์ ๋จ๊ณ์์ KDB๋ก ์ํฌํธํ ๋ ํ์ํ๋ฏ๋ก ๋ฐ๋์ ๊ธฐ์ตํด์ผ ํฉ๋๋ค.
2. P12๋ฅผ KDB๋ก ๋ณํ (GSKit)
IHS์ bin ๋๋ ํ ๋ฆฌ์ ์๋ gskcapicmd(๋๋ gskcmd)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
2-1. ํ๊ฒฝ ๋ณ์ ์ค์ (ํ์)
GSKit ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ก๋ํ๊ธฐ ์ํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ์ก์์ฃผ์ด์ผ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
# IHS ์ค์น ๊ฒฝ๋ก ์์ (/sw/web/IHS9)
export LD_LIBRARY_PATH=/sw/web/IHS9/lib:$LD_LIBRARY_PATH
cd /sw/web/IHS9/bin
2-2. ์ ๊ท KDB ์์ฑ (์๋ ๊ฒฝ์ฐ)
๊ธฐ์กด KDB๊ฐ ์๋ค๋ฉด ์๋ก ์์ฑํฉ๋๋ค. -stash ์ต์
์ ๋น๋ฐ๋ฒํธ๋ฅผ ํ์ผ(.sth)๋ก ์ ์ฅํ์ฌ ์น ์๋ฒ ๊ธฐ๋ ์ ๋น๋ฐ๋ฒํธ ์
๋ ฅ์ ์๋ํํฉ๋๋ค.
./gskcapicmd -keydb -create -db key.kdb -pw [KDBํจ์ค์๋] -type cms -stash
2-3. P12 ํ์ผ ์ํฌํธ (Import)
์์ฑ๋(๋๋ ๊ธฐ์กด) KDB ํ์ผ์ ์์์ ๋ง๋ P12 ์ธ์ฆ์๋ฅผ ๋ฃ์ต๋๋ค.
./gskcapicmd -cert -import \
-db /sw/img/Wildcard.test.co.kr.p12 -pw [P12ํจ์ค์๋] \
-target key.kdb -target_pw [KDBํจ์ค์๋] \
-label "*.test.co.kr"
์ง๋ฌธํ์ ๋ด์ฉ ์ค
-export๋ฅผ ์ฌ์ฉํ์ฌ P12๋ฅผ KDB๋ก ๋ฐ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ๋ ๊ฐ๋ฅํ์ง๋ง, ์ค๋ฌด์์๋ ๊ธฐ์กด KDB์ ์ธ์ฆ์๋ฅผ ์ถ๊ฐ(Import)ํ๊ฑฐ๋ ๊ฐฑ์ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฏ๋ก -import ๋ฐฉ์์ ๊ถ์ฅํฉ๋๋ค.
3. ๊ธฐ๋ณธ ์ธ์ฆ์ ์ค์ ๋ฐ ๊ฒ์ฆ
KDB ์์ ์ฌ๋ฌ ์ธ์ฆ์๊ฐ ์์ ๊ฒฝ์ฐ, ์ด๋ค ์ธ์ฆ์๋ฅผ ๋ฉ์ธ์ผ๋ก ์ฌ์ฉํ ์ง ์ง์ ํด์ผ ํฉ๋๋ค.
๊ธฐ๋ณธ ์ธ์ฆ์ ์ง์ (Set Default)
./gskcapicmd -cert -setdefault -db key.kdb -pw [KDBํจ์ค์๋] -label "*.test.co.kr"
๊ฒ์ฆ (List & Details)
KDB ๋ด์ ์ธ์ฆ์ ๋ชฉ๋ก๊ณผ ์ ํจ๊ธฐ๊ฐ์ ํ์ธํ์ฌ ์์ ์ด ์ ์์ ์ผ๋ก ๋์๋์ง ์ ๊ฒํฉ๋๋ค.
# ์ธ์ฆ์ ๋ชฉ๋ก ํ์ธ (Default๋ * ๋๋ > ํ์๊ฐ ๋ถ์)
./gskcapicmd -cert -list -db key.kdb -pw [KDBํจ์ค์๋]
# ํน์ ์ธ์ฆ์ ์์ธ ์ ๋ณด ํ์ธ
./gskcapicmd -cert -details -db key.kdb -pw [KDBํจ์ค์๋] -label "*.test.co.kr"
Next Step:key.kdb ํ์ผ๊ณผ key.sth(Stash) ํ์ผ์ httpd.conf์ KeyFile ๊ฒฝ๋ก์ ์์น์ํค๊ณ IHS๋ฅผ ์ฌ๊ธฐ๋ํ๋ฉด SSL ์ ์ฉ์ด ์๋ฃ๋ฉ๋๋ค.