Здравейте! Нека продължим с разглеждането на тази тема ().
Днес ще преминем към практическата част. Нека започнем с настройката на своя удостоверяващ център, основан на пълноценната криптографска библиотека с отворен код 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 Инсталатор. - Инсталираме 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
