PayControl PKI — различия между версиями
(Новая страница: «== Путь к конфигурационному файлу коннектора == Настройку необходимо внести в pc_sys_property БД…») |
|||
Строка 1: | Строка 1: | ||
− | == Путь к конфигурационному файлу коннектора == | + | = OpenSSL = |
+ | |||
+ | == Конфигурирование PKI коннектора == | ||
+ | |||
+ | === Путь к конфигурационному файлу коннектора === | ||
Настройку необходимо внести в pc_sys_property БД PCS. | Настройку необходимо внести в pc_sys_property БД PCS. | ||
Строка 7: | Строка 11: | ||
Пример для PostgreSQL:<syntaxhighlight lang="sql">insert into pc_sys_property values (nextval('pc_setting_seq'), 'PKI_SETTINGS_PATH', '/opt/pc/pki/pki-settings.properties');</syntaxhighlight> | Пример для PostgreSQL:<syntaxhighlight lang="sql">insert into pc_sys_property values (nextval('pc_setting_seq'), 'PKI_SETTINGS_PATH', '/opt/pc/pki/pki-settings.properties');</syntaxhighlight> | ||
− | == Пример конфигурационного файла == | + | === Пример конфигурационного файла === |
<syntaxhighlight lang="shell"> | <syntaxhighlight lang="shell"> | ||
Строка 34: | Строка 38: | ||
== Пример файла выпуска сертификата == | == Пример файла выпуска сертификата == | ||
+ | |||
+ | === ECDSA === | ||
<syntaxhighlight lang="shell"> | <syntaxhighlight lang="shell"> | ||
Строка 57: | Строка 63: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | === ГОСТ === | ||
+ | |||
+ | <syntaxhighlight lang="shell"> | ||
+ | #!/bin/sh | ||
+ | CA_DIR=/opt/pc/pki/Intermediate_CA | ||
+ | KEY_PASS=secretpassword | ||
+ | DER_CSR_FILE_NAME=$1 | ||
+ | DER_CSR_BASE_FILE_NAME="$(basename -- $DER_CSR_FILE_NAME)" | ||
+ | DER_CSR_BASE_FILE_NAME="${DER_CSR_BASE_FILE_NAME%.*}" | ||
+ | PEM_CSR_FILE_NAME=csr/$DER_CSR_BASE_FILE_NAME.pem | ||
+ | PEM_CERT_FILE_NAME=certs/$DER_CSR_BASE_FILE_NAME.cert.pem | ||
+ | DER_CERT_FILE_NAME=certs/$DER_CSR_BASE_FILE_NAME.cert.der | ||
+ | |||
+ | DEST_CERT_FILE_NAME=$2 | ||
+ | |||
+ | cd $CA_DIR | ||
+ | openssl req -inform DER -in $DER_CSR_FILE_NAME -out $PEM_CSR_FILE_NAME | ||
+ | openssl ca -config openssl.cnf -extensions usr_cert -days 375 -notext -md gost12_256 -in $PEM_CSR_FILE_NAME -out $PEM_CERT_FILE_NAME -passin pass:$KEY_PASS -batch | ||
+ | openssl x509 -outform der -in $PEM_CERT_FILE_NAME -out $DER_CERT_FILE_NAME | ||
+ | |||
+ | cp $DER_CERT_FILE_NAME $DEST_CERT_FILE_NAME | ||
+ | </syntaxhighlight> | ||
== Пример файла отзыва сертификата == | == Пример файла отзыва сертификата == | ||
Строка 75: | Строка 103: | ||
cp -v $INTERMEDIATE_CRL_LOCATION /opt/pc/pki/pub/crl/ | cp -v $INTERMEDIATE_CRL_LOCATION /opt/pc/pki/pub/crl/ | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
== Пример файла скрипта публикации списка отзыва корневого УЦ == | == Пример файла скрипта публикации списка отзыва корневого УЦ == | ||
Строка 101: | Строка 128: | ||
cp /opt/pc/pki/Intermediate_CA/crl/intermediate.crl /opt/pc/pki/pub/crl/ | cp /opt/pc/pki/Intermediate_CA/crl/intermediate.crl /opt/pc/pki/pub/crl/ | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | == Включение ГОСТ в OpenSSL == | ||
+ | |||
+ | === Установка модуля ГОСТ === | ||
+ | |||
+ | Для работы OpenSSL с криптоалгоритмами ГОСТ необходимо установить криптографическую библиотеку и настроить работу с этой библиотекой в конфигурационном файле, для этого: | ||
+ | |||
+ | * Установите пакет <code>openssl-gost-engine</code>, либо, если его нет в репозитории Вашего дистрибутива, скачайте по ссылке https://repo.paycontrol.org/cdn/artefacts/gost-engine/engine/gost.so (sha256sum: <code>435a0dee3273d924458c14ad57ac44b0711aa37fb3df9f2ba987a118f2339b1f gost.so</code>) и разместите скаченный файл криптобиблиотеки в директории модулей OpenSSL (в зависимости от дистрибутива это может быть <code>/usr/lib/engines-3/</code>, или, например <code>/usr/lib64/engines-3/</code>). | ||
+ | * В кофигурационный файл OpenSSL добавьте:<syntaxhighlight lang="shell">openssl_conf = openssl_def | ||
+ | |||
+ | [openssl_def] | ||
+ | engines = engine_section | ||
+ | |||
+ | [engine_section] | ||
+ | gost = gost_section | ||
+ | |||
+ | [gost_section] | ||
+ | engine_id = gost | ||
+ | dynamic_path = /usr/lib/engines-3/gost.so | ||
+ | default_algorithms = ALL </syntaxhighlight>, где в качестве значения <code>dynamic_path</code> должен быть указан путь к библиотеке <code>gost.so</code>. | ||
+ | * В кофигурационном файле OpenSSL параметру <code>default_md</code> необходимо установить значение <code>md_gost12_256</code>. | ||
+ | |||
+ | == Пример команд для создания корневого и промежуточного ГОСТ-УЦ в OpenSSL == | ||
+ | |||
+ | === Создание корневого сертификата === | ||
+ | |||
+ | <syntaxhighlight lang="shell"> | ||
+ | openssl genpkey -config openssl_intermediate.cnf -pass pass:$KEY_PASS -algorithm gost2012_256 -pkeyopt paramset:A -out private/root.key.pem | ||
+ | openssl req -config openssl_intermediate.cnf -key private/root.key.pem -passin pass:${PKI_KEY_PASS} -new -x509 -days 7300 -md_gost12_256 -extensions v3_ca -subj "${PKI_ROOT_SUBJECT}" -out certs/root.cert.pem | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Создание ключа и запроса для промежуточного УЦ === | ||
+ | |||
+ | <syntaxhighlight lang="shell"> | ||
+ | openssl genpkey -config openssl_root.cnf -pass pass:$KEY_PASS -algorithm gost2012_256 -pkeyopt paramset:A -out private/intermediate.key.pem | ||
+ | openssl req -config openssl_root.cnf -key private/intermediate.key.pem -passin pass:${PKI_KEY_PASS} -new -md_gost12_256 -subj "${PKI_INTERMEDIATE_SUBJECT}" -out csr/intermediate.csr.pem | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Выпуск сертификата для промежуточного УЦ === | ||
+ | |||
+ | <syntaxhighlight lang="shell"> | ||
+ | openssl ca -config openssl_intermediate.cnf -extensions v3_intermediate_ca -passin pass:${PKI_KEY_PASS} -days 3650 -notext -md gost12_256 -in ../Intermediate_CA/csr/intermediate.csr.pem -out ../Intermediate_CA/certs/intermediate.cert.pem -out certs/intermediate.cert.pem -batch | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | [[Категория:OpenSSL]] | ||
+ | [[Категория:PKI]] | ||
+ | [[Категория:Сертификаты]] |
Текущая версия на 01:34, 26 июня 2025
Содержание
- 1 OpenSSL
- 1.1 Конфигурирование PKI коннектора
- 1.2 Пример файла выпуска сертификата
- 1.3 Пример файла отзыва сертификата
- 1.4 Пример файла скрипта публикации списка отзыва корневого УЦ
- 1.5 Пример файла скрипта публикации списка отзыва промежуточного УЦ
- 1.6 Включение ГОСТ в OpenSSL
- 1.7 Пример команд для создания корневого и промежуточного ГОСТ-УЦ в OpenSSL
OpenSSL
Конфигурирование PKI коннектора
Путь к конфигурационному файлу коннектора
Настройку необходимо внести в pc_sys_property БД PCS.
PKI_SETTINGS_PATH | /opt/pc/pki/pki-settings.properties
Пример для PostgreSQL:
insert into pc_sys_property values (nextval('pc_setting_seq'), 'PKI_SETTINGS_PATH', '/opt/pc/pki/pki-settings.properties');
Пример конфигурационного файла
# check certificate's expiration, cert path and other constrains during each cert use
checkCertificates=true
# check certificate revocation status, to use checkCertificates must be true
checkRevocation=true
useCRL=true
useOCSP=false
# -- OpenSSL Settings
caType=OpenSSL
issueCertificateCmd=/opt/pc/pki/issue_cert.sh
revokeCertificateCmd=/opt/pc/pki/revoke_cert.sh
# files prefixes must contain path where tmp files will be stored
csrTmpFilePrefix=pc-openssl-connector-csr-
certTmpFilePrefix=pc-openssl-connector-cert-
# certificate chain in PEM-format
# the first certificate must be CA (self-signed), second - 1st intermediate, third - 2nd intermediate and so on
# if checkRevocation is true, then each of intermediate certificates must contain OCSP url or CRL Distribution point
caChainFileName=/opt/pc/pki/Intermediate_CA/certs/intermediate.chain.pem
Пример файла выпуска сертификата
ECDSA
#!/bin/sh
CA_DIR=/opt/pc/pki/Intermediate_CA
KEY_PASS=secretpassword
DER_CSR_FILE_NAME=$1
DER_CSR_BASE_FILE_NAME="$(basename -- $DER_CSR_FILE_NAME)"
DER_CSR_BASE_FILE_NAME="${DER_CSR_BASE_FILE_NAME%.*}"
PEM_CSR_FILE_NAME=csr/$DER_CSR_BASE_FILE_NAME.pem
PEM_CERT_FILE_NAME=certs/$DER_CSR_BASE_FILE_NAME.cert.pem
DER_CERT_FILE_NAME=certs/$DER_CSR_BASE_FILE_NAME.cert.der
DEST_CERT_FILE_NAME=$2
cd $CA_DIR
openssl req -inform DER -in $DER_CSR_FILE_NAME -out $PEM_CSR_FILE_NAME
openssl ca -config openssl.cnf -extensions usr_cert -days 375 -notext -md sha256 -in $PEM_CSR_FILE_NAME -out $PEM_CERT_FILE_NAME -passin pass:$KEY_PASS -batch
openssl x509 -outform der -in $PEM_CERT_FILE_NAME -out $DER_CERT_FILE_NAME
cp $DER_CERT_FILE_NAME $DEST_CERT_FILE_NAME
ГОСТ
#!/bin/sh
CA_DIR=/opt/pc/pki/Intermediate_CA
KEY_PASS=secretpassword
DER_CSR_FILE_NAME=$1
DER_CSR_BASE_FILE_NAME="$(basename -- $DER_CSR_FILE_NAME)"
DER_CSR_BASE_FILE_NAME="${DER_CSR_BASE_FILE_NAME%.*}"
PEM_CSR_FILE_NAME=csr/$DER_CSR_BASE_FILE_NAME.pem
PEM_CERT_FILE_NAME=certs/$DER_CSR_BASE_FILE_NAME.cert.pem
DER_CERT_FILE_NAME=certs/$DER_CSR_BASE_FILE_NAME.cert.der
DEST_CERT_FILE_NAME=$2
cd $CA_DIR
openssl req -inform DER -in $DER_CSR_FILE_NAME -out $PEM_CSR_FILE_NAME
openssl ca -config openssl.cnf -extensions usr_cert -days 375 -notext -md gost12_256 -in $PEM_CSR_FILE_NAME -out $PEM_CERT_FILE_NAME -passin pass:$KEY_PASS -batch
openssl x509 -outform der -in $PEM_CERT_FILE_NAME -out $DER_CERT_FILE_NAME
cp $DER_CERT_FILE_NAME $DEST_CERT_FILE_NAME
Пример файла отзыва сертификата
#!/bin/sh
CERT_FILE_NAME=$1
KEY_PASS=secretpassword
CA_DIR=/opt/pc/pki/Intermediate_CA
INTERMEDIATE_CRL_LOCATION=crl/intermediate.crl
cd $CA_DIR
#revoke
openssl ca -config openssl.cnf -revoke $CERT_FILE_NAME -passin pass:$KEY_PASS
#publish CRL
openssl ca -config openssl.cnf -gencrl -out $INTERMEDIATE_CRL_LOCATION -passin pass:$KEY_PASS
cp -v $INTERMEDIATE_CRL_LOCATION /opt/pc/pki/pub/crl/
Пример файла скрипта публикации списка отзыва корневого УЦ
#!/bin/bash
openssl ca \
-config /opt/pc/pki/Root_CA/openssl_host.cnf \
-gencrl \
-out /opt/pc/pki/Root_CA/crl/root.crl \
-passin pass:secretpassword
cp /opt/pc/pki/Root_CA/crl/root.crl /opt/pc/pki/pub/crl/
Пример файла скрипта публикации списка отзыва промежуточного УЦ
#!/bin/bash
openssl ca \
-config /opt/pc/pki/Intermediate_CA/openssl_host.cnf \
-gencrl \
-out /opt/pc/pki/Intermediate_CA/crl/intermediate.crl \
-passin pass:secretpassword
cp /opt/pc/pki/Intermediate_CA/crl/intermediate.crl /opt/pc/pki/pub/crl/
Включение ГОСТ в OpenSSL
Установка модуля ГОСТ
Для работы OpenSSL с криптоалгоритмами ГОСТ необходимо установить криптографическую библиотеку и настроить работу с этой библиотекой в конфигурационном файле, для этого:
- Установите пакет
openssl-gost-engine
, либо, если его нет в репозитории Вашего дистрибутива, скачайте по ссылке https://repo.paycontrol.org/cdn/artefacts/gost-engine/engine/gost.so (sha256sum:435a0dee3273d924458c14ad57ac44b0711aa37fb3df9f2ba987a118f2339b1f gost.so
) и разместите скаченный файл криптобиблиотеки в директории модулей OpenSSL (в зависимости от дистрибутива это может быть/usr/lib/engines-3/
, или, например/usr/lib64/engines-3/
). - В кофигурационный файл OpenSSL добавьте:, где в качестве значения
openssl_conf = openssl_def [openssl_def] engines = engine_section [engine_section] gost = gost_section [gost_section] engine_id = gost dynamic_path = /usr/lib/engines-3/gost.so default_algorithms = ALL
dynamic_path
должен быть указан путь к библиотекеgost.so
. - В кофигурационном файле OpenSSL параметру
default_md
необходимо установить значениеmd_gost12_256
.
Пример команд для создания корневого и промежуточного ГОСТ-УЦ в OpenSSL
Создание корневого сертификата
openssl genpkey -config openssl_intermediate.cnf -pass pass:$KEY_PASS -algorithm gost2012_256 -pkeyopt paramset:A -out private/root.key.pem
openssl req -config openssl_intermediate.cnf -key private/root.key.pem -passin pass:${PKI_KEY_PASS} -new -x509 -days 7300 -md_gost12_256 -extensions v3_ca -subj "${PKI_ROOT_SUBJECT}" -out certs/root.cert.pem
Создание ключа и запроса для промежуточного УЦ
openssl genpkey -config openssl_root.cnf -pass pass:$KEY_PASS -algorithm gost2012_256 -pkeyopt paramset:A -out private/intermediate.key.pem
openssl req -config openssl_root.cnf -key private/intermediate.key.pem -passin pass:${PKI_KEY_PASS} -new -md_gost12_256 -subj "${PKI_INTERMEDIATE_SUBJECT}" -out csr/intermediate.csr.pem
Выпуск сертификата для промежуточного УЦ
openssl ca -config openssl_intermediate.cnf -extensions v3_intermediate_ca -passin pass:${PKI_KEY_PASS} -days 3650 -notext -md gost12_256 -in ../Intermediate_CA/csr/intermediate.csr.pem -out ../Intermediate_CA/certs/intermediate.cert.pem -out certs/intermediate.cert.pem -batch