์ข์ ์คํ์์ ์ด ์ฃผ์ ๋ฅผ ๊ณ์ํ์
์ค๋ ์ฐ๋ฆฌ๋ ์ค์ฉ์ ์ธ ๋ถ๋ถ์ผ๋ก ๋์ด๊ฐ๋๋ค. ๋ณธ๊ฒฉ์ ์ธ ์คํ ์์ค ์ํธํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ openSSL์ ๊ธฐ๋ฐ์ผ๋ก CA๋ฅผ ์ค์ ํ๋ ๊ฒ๋ถํฐ ์์ํด ๋ณด๊ฒ ์ต๋๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ Windows 7์ ์ฌ์ฉํ์ฌ ํ ์คํธ๋์์ต๋๋ค.
openSSL์ ์ค์นํ๋ฉด ๋ช
๋ น์ค์ ํตํด ๋ค์ํ ์ํธํ ์์
(์: ํค ๋ฐ ์ธ์ฆ์ ์์ฑ)์ ์ํํ ์ ์์ต๋๋ค.
๋์ ์๊ณ ๋ฆฌ์ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ค์น ๋ฐฐํฌํ openssl-1.1.1g๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
openSSL์๋ ๋ค์ํ ๋ฒ์ ์ด ์์ต๋๋ค. Rutoken ๋ฌธ์์๋ openSSL ๋ฒ์ 1.1.0 ์ด์์ด ํ์ํ๋ค๊ณ ๋ช ์๋์ด ์์ต๋๋ค. openssl-1.1.1g ๋ฒ์ ์ ์ฌ์ฉํ์ต๋๋ค. openSSL์ ๊ณต์ ์ฌ์ดํธ์์ ๋ค์ด๋ก๋ํ ์ ์์ง๋ง ๋ณด๋ค ์ฝ๊ฒ โโ์ค์นํ๋ ค๋ฉด ์ธํฐ๋ท์์ Windows์ฉ ์ค์น ํ์ผ์ ์ฐพ์์ผ ํฉ๋๋ค. ๋๋ ๋น์ ์ ์ํด ์ด๊ฒ์ ํ์ต๋๋ค:slproweb.com/products/Win32OpenSSL.html
ํ์ด์ง๋ฅผ ์๋๋ก ์คํฌ๋กคํ์ฌ Win64 OpenSSL v1.1.1g EXE 63MB ์ค์น ํ๋ก๊ทธ๋จ์ ๋ค์ด๋ก๋ํฉ๋๋ค. - ์ปดํจํฐ์ openssl-1.1.1g๋ฅผ ์ค์นํฉ๋๋ค.
์ค์น๋ ๋ฐ๋์ C:Program Files ํด๋์ ์๋์ผ๋ก ์ง์ ๋๋ ํ์ค ๊ฒฝ๋ก์ ๋ฐ๋ผ ์งํํด์ผ ํฉ๋๋ค. ํ๋ก๊ทธ๋จ์ OpenSSL-Win64 ํด๋์ ์ค์น๋ฉ๋๋ค. - ํ์ํ ๋ฐฉ์์ผ๋ก openSSL์ ์ค์ ํ๋ ค๋ฉด openssl.cfg ํ์ผ์ด ์์ต๋๋ค. ์ด์ ๋จ๋ฝ์์ ์ค๋ช ํ ๋๋ก openSSL์ ์ค์นํ ๊ฒฝ์ฐ ์ด ํ์ผ์ C:\Program Files\OpenSSL-Win64bin ๊ฒฝ๋ก์ ์์ต๋๋ค. openssl.cfg๊ฐ ์ ์ฅ๋ ํด๋๋ก ์ด๋ํ๊ณ Notepad++ ๋ฑ์ ์ฌ์ฉํ์ฌ ์ด ํ์ผ์ ์ฝ๋๋ค.
- openssl.cfg ํ์ผ์ ๋ด์ฉ์ ๋ณ๊ฒฝํ๋ฉด ์ธ์ฆ ๊ธฐ๊ด์ด ์ด๋ป๊ฒ๋ ๊ตฌ์ฑ๋ ๊ฒ์ด๋ผ๊ณ ์ง์ํ์ จ์ ๊ฒ์ ๋๋ค. ๊ทํ์ ์๊ฐ์ด ์ ๋์ ์ผ๋ก ์ณ์ต๋๋ค. ์ด๋ฅผ ์ํด์๋ [ ca ] ๋ช ๋ น์ ์ฌ์ฉ์ ์ ์ํด์ผ ํฉ๋๋ค. openssl.cfg ํ์ผ์์ ๋ณ๊ฒฝํ ํ ์คํธ์ ์์ ๋ถ๋ถ์ [ ca ]๋ก ์ฐพ์ ์ ์์ต๋๋ค.
- ์ด์ ์ค๋ช
๊ณผ ํจ๊ป ์ค์ ์ ์๋ฅผ ์ ๊ณตํ๊ฒ ์ต๋๋ค.
[ ca ] default_ca = CA_default [ CA_default ] dir = /Users/username/bin/openSSLca/demoCA certs = $dir/certs crl_dir = $dir/crl database = $dir/index.txt new_certs_dir = $dir/newcerts certificate = $dir/ca.crt serial = $dir/private/serial crlnumber = $dir/crlnumber crl = $dir/crl.pem private_key = $dir/private/ca.key x509_extensions = usr_cert
์ด์ ์์ ์์ ํ์๋ ๋๋ก decoCA ๋๋ ํฐ๋ฆฌ์ ํ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ dir์ ์ง์ ๋ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ ์ด ๋๋ ํ ๋ฆฌ์ ๋ฐฐ์นํฉ๋๋ค(/Users/username/bin/openSSLca/demoCA๊ฐ ์์ต๋๋ค).
dir์ ์ฒ ์๋ฅผ ์ ํํ๊ฒ ์ ๋ ฅํ๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด๋ ์ธ์ฆ ์ผํฐ๊ฐ ์์นํ ๋๋ ํฐ๋ฆฌ์ ๊ฒฝ๋ก์ ๋๋ค. ์ด ๋๋ ํฐ๋ฆฌ๋ /Users(์ฆ, ์ผ๋ถ ์ฌ์ฉ์์ ๊ณ์ )์ ์์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ด ๋๋ ํฐ๋ฆฌ๋ฅผ C: Program Files์ ๋ฐฐ์นํ๋ฉด ์์คํ ์ openssl.cfg ์ค์ ์ด ์๋ ํ์ผ์ ๋ณผ ์ ์์ต๋๋ค(์ ์ด๋ ์ ์๊ฒ๋ ๊ทธ๋ฌ์ต๋๋ค).
$dir - dir์ ์ง์ ๋ ๊ฒฝ๋ก๊ฐ ์ฌ๊ธฐ๋ก ๋์ฒด๋ฉ๋๋ค.
๋ ๋ค๋ฅธ ์ค์ํ ์ ์ ๋น index.txt ํ์ผ์ ์์ฑํ๋ ๊ฒ์ ๋๋ค. ์ด ํ์ผ์ด ์์ผ๋ฉด โopenSSL ca โฆโ ๋ช ๋ น์ด ์๋ํ์ง ์์ต๋๋ค.
๋ํ ์ง๋ ฌ ํ์ผ, ๋ฃจํธ ๊ฐ์ธ ํค(ca.key), ๋ฃจํธ ์ธ์ฆ์(ca.crt)๊ฐ ํ์ํฉ๋๋ค. ์ด๋ฌํ ํ์ผ์ ์ป๋ ๊ณผ์ ์ ์๋์ ์ค๋ช ๋์ด ์์ต๋๋ค.
- Rutoken์์ ์ ๊ณตํ๋ ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ ์ฐ๊ฒฐํฉ๋๋ค.
์ด ์ฐ๊ฒฐ์ openssl.cfg ํ์ผ์์ ๋ฐ์ํฉ๋๋ค.- ์ฐ์ , ํ์ํ Rutoken ์๊ณ ๋ฆฌ์ฆ์ ๋ค์ด๋ก๋ํด์ผ ํฉ๋๋ค. rtengine.dll, rtpkcs11ecp.dll ํ์ผ์
๋๋ค.
์ด๋ ๊ฒ ํ๋ ค๋ฉด Rutoken SDK๋ฅผ ๋ค์ด๋ก๋ํ์ธ์.www.rutoken.ru/developers/sdk .Rutoken SDK๋ Rutoken์ ์ํํด๋ณด๊ณ ์ถ์ ๊ฐ๋ฐ์๋ฅผ ์ํ ๋ชจ๋ ๊ฒ์ ๋๋ค. ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก Rutoken์ ์ฌ์ฉํ๊ธฐ ์ํ ๋ณ๋์ ์์ ๊ฐ ์์ผ๋ฉฐ ์ผ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๊ณต๋ฉ๋๋ค. ์ฐ๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ rtengine.dll ๋ฐ rtpkcs11ecp.dll์ ๊ฐ๊ฐ Rutoken SDK์ ๋ค์ ์์น์ ์์ต๋๋ค.
SDK/openssl/rtengine/bin/windows-x86_64/lib/rtengine.dll
SDK/pkcs11/lib/windows-x86_64/rtpkcs11ecp.dll๋งค์ฐ ์ค์ํ ์ ์ ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ rtengine.dll, rtpkcs11ecp.dll์ Rutoken์ฉ ๋๋ผ์ด๋ฒ๊ฐ ์ค์น๋์ด ์์ง ์์ผ๋ฉด ์๋ํ์ง ์์ต๋๋ค. ๋ํ Rutoken์ด ์ปดํจํฐ์ ์ฐ๊ฒฐ๋์ด ์์ด์ผ ํฉ๋๋ค. (Rutoken์ ํ์ํ ๋ชจ๋ ๊ฒ์ ์ค์นํ๋ ค๋ฉด ๊ธฐ์ฌ์ ์ด์ ๋ถ๋ถ์ ์ฐธ์กฐํ์ธ์.
habr.com/en/post/506450 ) - rtengine.dll ๋ฐ rtpkcs11ecp.dll ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฌ์ฉ์ ๊ณ์ ์ ์ด๋ ์์น์๋ ๋ณด๊ดํ ์ ์์ต๋๋ค.
- openssl.cfg์ ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๊ฒฝ๋ก๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด openssl.cfg ํ์ผ์ ์ด๊ณ ์ด ํ์ผ์ ์์ ๋ถ๋ถ์ ๋ค์ ์ค์ ์ถ๊ฐํฉ๋๋ค.
openssl_conf = openssl_def
ํ์ผ ๋์ ๋ค์์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
[ openssl_def ] engines = engine_section [ engine_section ] rtengine = gost_section [ gost_section ] dynamic_path = /Users/username/bin/sdk-rutoken/openssl/rtengine/bin/windows-x86_64/lib/rtengine.dll MODULE_PATH = /Users/username/bin/sdk-rutoken/pkcs11/lib/windows-x86_64/rtpkcs11ecp.dll RAND_TOKEN = pkcs11:manufacturer=Aktiv%20Co.;model=Rutoken%20ECP default_algorithms = CIPHERS, DIGEST, PKEY, RAND
Dynamic_path - rtengine.dll ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๊ฒฝ๋ก๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค.
MODULE_PATH - rtpkcs11ecp.dll ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๊ฒฝ๋ก๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค.
- ์ฐ์ , ํ์ํ Rutoken ์๊ณ ๋ฆฌ์ฆ์ ๋ค์ด๋ก๋ํด์ผ ํฉ๋๋ค. rtengine.dll, rtpkcs11ecp.dll ํ์ผ์
๋๋ค.
- ํ๊ฒฝ ๋ณ์๋ฅผ ์ถ๊ฐํฉ๋๋ค.
openssl.cfg ๊ตฌ์ฑ ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ๋ ํ๊ฒฝ ๋ณ์๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ์ ๊ฒฝ์ฐ์๋ OPENSSL_CONF ๋ณ์๊ฐ C:Program FilesOpenSSL-Win64binopenssl.cfg ๊ฒฝ๋ก๋ก ์์ฑ๋์์ต๋๋ค.
๊ฒฝ๋ก ๋ณ์์์ openssl.exe๊ฐ ์๋ ํด๋์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค. ์ ๊ฒฝ์ฐ์๋ C: Program FilesOpenSSL-Win64bin์ ๋๋ค.
- ์ด์ 5๋จ๊ณ๋ก ๋์๊ฐ์ ๋ฐ๋ชจCA ๋๋ ํฐ๋ฆฌ์ ๋ํด ๋๋ฝ๋ ํ์ผ์ ์์ฑํ ์ ์์ต๋๋ค.
- ์์ด๋ ์๋ฌด๊ฒ๋ ์๋ํ์ง ์๋ ์ฒซ ๋ฒ์งธ ์ค์ํ ํ์ผ์ ์ง๋ ฌ ํ์ผ์
๋๋ค. ํ์ฅ์๊ฐ ์๋ ํ์ผ์ด๋ฉฐ ๊ฐ์ 01์ด์ด์ผ ํฉ๋๋ค. ์ด ํ์ผ์ ์ง์ ์์ฑํ๊ณ ๋ด๋ถ์ 01์ ์ธ ์ ์์ต๋๋ค. ๋ํ sdk/openssl/rtengine/samples/tool/demoCA ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ Rutoken SDK์์ ๋ค์ด๋ก๋ํ ์๋ ์์ต๋๋ค. /.
DemoCA ๋๋ ํฐ๋ฆฌ์๋ ์ฐ๋ฆฌ์๊ฒ ๊ผญ ํ์ํ ์ง๋ ฌ ํ์ผ์ด ํฌํจ๋์ด ์์ต๋๋ค. - ๋ฃจํธ ๊ฐ์ธ ํค๋ฅผ ์์ฑํฉ๋๋ค.
์ด๋ฅผ ์ํด ๋ช ๋ น์ค์์ ์ง์ ์คํํด์ผ ํ๋ openSSL ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค.openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out ca.key
- ๋ฃจํธ ์ธ์ฆ์๋ฅผ ๋ง๋ญ๋๋ค.
์ด๋ ๊ฒ ํ๋ ค๋ฉด ๋ค์ openSSL ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ช ๋ น์ ์ฌ์ฉํ์ญ์์ค.openssl req -utf8 -x509 -key ca.key -out ca.crt
๋ฃจํธ ์ธ์ฆ์๋ฅผ ์์ฑํ๋ ค๋ฉด ์ด์ ๋จ๊ณ์์ ์์ฑ๋ ๋ฃจํธ ๊ฐ์ธ ํค๊ฐ ํ์ํฉ๋๋ค. ๋ฐ๋ผ์ ๋ช ๋ น์ค์ ๋์ผํ ๋๋ ํฐ๋ฆฌ์์ ์คํ๋์ด์ผ ํฉ๋๋ค.
์ด์ ๋ชจ๋ ํญ๋ชฉ์๋ ๋ฐ๋ชจCA ๋๋ ํฐ๋ฆฌ์ ์ ์ฒด ๊ตฌ์ฑ์ ๋ํ ๋๋ฝ๋ ํ์ผ์ด ๋ชจ๋ ์์ต๋๋ค. ์์ฑ๋ ํ์ผ์ 5๋ฒ ํญ๋ชฉ์ ํ์๋ ๋๋ ํฐ๋ฆฌ์ ๋ฐฐ์นํฉ๋๋ค.
- ์์ด๋ ์๋ฌด๊ฒ๋ ์๋ํ์ง ์๋ ์ฒซ ๋ฒ์งธ ์ค์ํ ํ์ผ์ ์ง๋ ฌ ํ์ผ์
๋๋ค. ํ์ฅ์๊ฐ ์๋ ํ์ผ์ด๋ฉฐ ๊ฐ์ 01์ด์ด์ผ ํฉ๋๋ค. ์ด ํ์ผ์ ์ง์ ์์ฑํ๊ณ ๋ด๋ถ์ 01์ ์ธ ์ ์์ต๋๋ค. ๋ํ sdk/openssl/rtengine/samples/tool/demoCA ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ Rutoken SDK์์ ๋ค์ด๋ก๋ํ ์๋ ์์ต๋๋ค. /.
8๊ฐ์ง ํญ๋ชฉ์ ๋ชจ๋ ์๋ฃํ ํ ์ธ์ฆ ์ผํฐ๊ฐ ์์ ํ ๊ตฌ์ฑ๋์๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
๋ค์ ๋ถ๋ถ์์๋ ์ค๋ช
๋ ๋ด์ฉ์ ๋ฌ์ฑํ๊ธฐ ์ํด ์ธ์ฆ ๊ธฐ๊ด๊ณผ ์ด๋ป๊ฒ ํ๋ ฅํ ๊ฒ์ธ์ง ์ค๋ช
ํ๊ฒ ์ต๋๋ค.
์ถ์ฒ : habr.com