Добър ден! Да продължим с разглеждането на тази тема ().
Днес ще преминем към практическата част. Ще започнем с настройването на свой удостоверяващ център на база на пълнофункционалната криптографска библиотека с отворен код openSSL. Този алгоритъм беше тестван с използване на windows 7.
След инсталирането на openSSL, можем да извършваме различни криптографски операции (например, създаване на ключове и сертификати) чрез командния ред.
Алгоритъмът на действията е следният:
- Сваляме инсталационния дистрибутив openssl-1.1.1g.
OpenSSL има различни версии. В документацията на Рутокен беше споменато, че е необходима версия openSSL версия 1.1.0 или по-нова. Аз използвах версия openssl-1.1.1g. Може да свалите openSSL от официалния сайт, но за по-лесна инсталация трябва да намерите инсталационен файл за windows в мрежата. Аз направих това вместо вас:
Трябва да превъртите надолу на страницата и да свалите Win64 OpenSSL v1.1.1g EXE 63MB Installer. - Инсталираме openssl-1.1.1g на компютъра.
Инсталацията трябва да се извърши по стандартния път, който автоматично се указва в папката C:Program Files. Програмата ще се инсталира в папката OpenSSL-Win64. - За да настроите openSSL така, както ви е необходимо, съществува файл openssl.cfg. Този файл се намира на път C:Program FilesOpenSSL-Win64bin, ако сте инсталирали openSSL както беше посочено в предишната точка. Преминаваме в папката, където се съхранява 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Сега е необходимо да създадете директория demoCA и поддиректории, както е показано в примера по-горе. И да разположите в тази директория по пътя, който е указан в dir (при мен /Users/username/bin/openSSLca/demoCA).
Много е важно да зададете правилно dir – това е пътят към директорията, в която ще се намира нашият удостоверяващ център. Тази директория задължително трябва да бъде в /Users (тоест в акаунта на някой потребител). Ако разположите тази директория например в C:Program Files, системата няма да види файла с настройките openssl.cfg (по диагонал, в моя случай беше така).
$dir – тук се вмъква пътят, който е указан в dir.
Още един важен момент е да създадете празен файл index.txt, без този файл командите „openSSL ca …“ няма да работят.
Също така е необходимо да имате файл serial, коренен частен ключ (ca.key), коренен сертификат (ca.crt). Процесът на получаване на тези файлове ще бъде описан по-нататък.
- Свързваме алгоритмите за криптиране, предоставени от Рутокен.
Това свързване става във файла openssl.cfg.- Първо е необходимо да изтеглите нужните алгоритми на Рутокен. Това са файловете rtengine.dll, rtpkcs11ecp.dll.
За това изтеглете Рутокен SDK: .Рутокен SDK – това е всичко, което съществува за разработчици, които искат да изпробват Рутокен. Там има както отделни примери за работа с Рутокена на различни програмни езици, така и представени някои библиотеки. Нашите библиотеки rtengine.dll и rtpkcs11ecp.dll се намират в Рутокен SDK съответно на следните места:
sdk/openssl/rtengine/bin/windows-x86_64/lib/rtengine.dll
sdk/pkcs11/lib/windows-x86_64/rtpkcs11ecp.dllМного важен момент. Библиотеките rtengine.dll, rtpkcs11ecp.dll не работят без инсталиран драйвер за Рутокен. Също така Рутокен задължително трябва да бъде свързан към компютъра. (за инсталиране на всичко необходимо за Рутокен вижте в предишната част на статията )
- Библиотеките 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=AktivCo.;model=RutokenECP default_algorithms = CIPHERS, DIGEST, PKEY, RANDdynamic_path – необходимо е да запишете своя път към библиотеката rtengine.dll.
MODULE_PATH – необходимо е да запишете своя път към библиотеката rtpkcs11ecp.dll.
- Първо е необходимо да изтеглите нужните алгоритми на Рутокен. Това са файловете rtengine.dll, rtpkcs11ecp.dll.
- Добавяме променливи на средата.
Задължително е да добавите променлива на средата, която указва пътя до конфигурационния файл openssl.cfg. В моя случай беше създадена променлива OPENSSL_CONF с път C:Program FilesOpenSSL-Win64binopenssl.cfg.
В променливата path е необходимо да укажете пътя до папката, в която се намира openssl.exe, в моя случай това е: C:Program FilesOpenSSL-Win64bin.
- Сега можем да се върнем към точка 5 и да създадем липсващите файлове за каталога demoCA.
- Първият важен файл, без който нищо няма да работи — serial. Това е файл без разширение, чиято стойност трябва да бъде 01. Можете да създадете този файл сами и да напишете вътре 01. Можете също да го свалите от Рутокен SDK по пътя sdk/openssl/rtengine/samples/tool/demoCA/.
В каталога demoCA се намира файл serial, който ни е точно нужен. - Създаваме коренен частен ключ.
За това ще използваме командата на библиотеката openSSL, която трябва да бъде изпълнена директно в командния ред:openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out ca.key - Създаваме коренен сертификат.
За това ще използваме следното командно изречение на библиотеката openSSL:openssl req -utf8 -x509 -key ca.key -out ca.crtОбърнете внимание, че за създаването на коренен сертификат е необходим коренен частен ключ, който беше създаден на предишната стъпка. Следователно командният ред трябва да бъде стартиран в една и съща директория.
Сега разполагаме с всички липсващи файлове за пълната конфигурация на каталога demoCA. Поставете създадените файлове в тези директории, които са посочени в точка 5.
- Първият важен файл, без който нищо няма да работи — serial. Това е файл без разширение, чиято стойност трябва да бъде 01. Можете да създадете този файл сами и да напишете вътре 01. Можете също да го свалите от Рутокен SDK по пътя sdk/openssl/rtengine/samples/tool/demoCA/.
Да приемем, че след изпълнението на всички 8 точки, нашият удостоверяващ център е напълно настроен.
В следващата част ще разкажа как ще работим с удостоверяващия център, за да изпълним това, което беше описано в .
Източник: habr.com
