Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.11.2013(UTC) Сообщений: 75 Откуда: Тирана Сказал «Спасибо»: 3 раз Поблагодарили: 13 раз в 12 постах
|
1. Установка и настройка CSPПорядок действий будет рассмотрен на примере Debian8 x32, Apache 2.4.17, openssl 1.0.1k, КриптоПро CSP 3.9.8227. Устанавливаем CSP KC2 (потому что fork) дистрибутив можно взять с сайта, подробную инструкцию по установке здесь, GOST_capi и патченый mod_ssl в этой теме получаем сертификат (CommonName=hostname/ip, 1.3.6.1.5.5.7.3.1). Сертификат и ключ устанавливаются в личное хранилища пользователя, имеющего права на запуск apache. Сертификат сервера и корневой сертификат (не обязательно) необходимо экспортировать в файлы, затем конвертировать в pem при помощи openssl. Конфигурируем openssl в openssl.cnf вписываем следующее (после строки, oid_section = new_oids) Код:openssl_conf = openssl_def
[openssl_def]
engines = engine_section
[engine_section]
gost_capi = gost_section
[gost_section]
engine_id = gost_capi
dynamic_path = /opt/cprocsp/cp-openssl/lib/ia32/engines/libgost_capi.so
default_algorithms = CIPHERS, DIGESTS, PKEY, PKEY_CRYPTO, PKEY_ASN1
Что бы проверить правильность работы криптографии делаем следующее
Проверяем подгружается ли engine в openssl Код:$ openssl engine
(dynamic) Dynamic engine loading support
(gost_capi) CryptoPro ENGINE GOST CAPI ($Revision: 127755 $)
Пробуем подписать произвольный файл. Проверяем доступность сертификата, привязку к закрытому ключу Код:$ openssl cms -sign -engine gost_capi -keyform ENGINE -inkey CommonName -in ~/test -out ~/test.sig -outform PEM -CAfile ~/root.pem -nodetach -signer ~/server.pem
engine "gost_capi" set.
$ cat ~/test.sig
-----BEGIN CMS-----
MIIFQQYJKoZIhvcNAQcCoIIFMjCCBS4CAQExDDAKBgYqhQMCAgkFADAVBgkqhkiG
9w0BBwGgCAQGdGVzdA0KoIIDBzCCAwMwggKyoAMCAQICExIAC5ydtBZgmo+ltZQA
AAALnJ0wCAYGKoUDAgIDMH8xIzAhBgkqhkiG9w0BCQEWFHN1cHBvcnRAY3J5cHRv
cHJvLnJ1MQswCQYDVQQGEwJSVTEPMA0GA1UEBxMGTW9zY293MRcwFQYDVQQKEw5D
UllQVE8tUFJPIExMQzEhMB8GA1UEAxMYQ1JZUFRPLVBSTyBUZXN0IENlbnRlciAy
MB4XDTE1MTIxNzEzNDM1M1oXDTE2MDMxNzEzNTM1M1owFTETMBEGA1UEAxMKcmFi
b3RhaXBsejBjMBwGBiqFAwICEzASBgcqhQMCAiQABgcqhQMCAh4BA0MABEBwjdZR
m1z7BFGD9ZiYfCiGwfSSMo/wflpLwyaCLEQTLMFRQ2Jy47u/e9Srjo0rUPzvanEy
HNf5UxRjQbTf8dHio4IBbTCCAWkwEwYDVR0lBAwwCgYIKwYBBQUHAwEwCwYDVR0P
BAQDAgTwMB0GA1UdDgQWBBR1TVlbx4Bw3ClqLMl3TC99wO7tgjAfBgNVHSMEGDAW
gBQVMXywjRreZtcVnElSlxckuQF6gzBZBgNVHR8EUjBQME6gTKBKhkhodHRwOi8v
dGVzdGNhLmNyeXB0b3Byby5ydS9DZXJ0RW5yb2xsL0NSWVBUTy1QUk8lMjBUZXN0
JTIwQ2VudGVyJTIwMi5jcmwwgakGCCsGAQUFBwEBBIGcMIGZMGEGCCsGAQUFBzAC
hlVodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9DZXJ0RW5yb2xsL3Rlc3QtY2Et
MjAxNF9DUllQVE8tUFJPJTIwVGVzdCUyMENlbnRlciUyMDIuY3J0MDQGCCsGAQUF
BzABhihodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9vY3NwL29jc3Auc3JmMAgG
BiqFAwICAwNBAF9oQ3OryjpX+z00TdNMQA+EVN5IOQjXs05+coxo5jV67IA4ZnNN
5k/67Jd1ol5413In2/pOxyQ32KfhbK/rX7IxggH3MIIB8wIBATCBljB/MSMwIQYJ
KoZIhvcNAQkBFhRzdXBwb3J0QGNyeXB0b3Byby5ydTELMAkGA1UEBhMCUlUxDzAN
BgNVBAcTBk1vc2NvdzEXMBUGA1UEChMOQ1JZUFRPLVBSTyBMTEMxITAfBgNVBAMT
GENSWVBUTy1QUk8gVGVzdCBDZW50ZXIgMgITEgALnJ20FmCaj6W1lAAAAAucnTAK
BgYqhQMCAgkFAKCB+jAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3
DQEJBTEPFw0xNTEyMjExMjExNDNaMC8GCSqGSIb3DQEJBDEiBCDiut37IX+KCrgA
pAYvmxrdyKrvZdSpMiJkoOLPzMtbEjCBjgYJKoZIhvcNAQkPMYGAMH4wCwYJYIZI
AWUDBAEqMAgGBiqFAwICCTAIBgYqhQMCAhUwCwYJYIZIAWUDBAEWMAsGCWCGSAFl
AwQBAjAKBggqhkiG9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAw
BwYFKw4DAgcwDQYIKoZIhvcNAwICASgwCgYGKoUDAgITBQAEQKz/xzlSEL9sp3FI
hm4kdHj3+eOfU5cKqjMhQq484uJZ850dLutHRXy41A3hc3R9PWEGDcs+n5GGH6s2
I/YOnog=
-----END CMS-----
Запускаем TLS сервер средствами openssl Код:$ openssl s_server -engine gost_capi -keyform ENGINE -key SubjectName -cert ~/server.pem
engine "gost_capi" set.
Using default temp DH parameters
Using default temp ECDH parameters
ACCEPT
-----BEGIN SSL SESSION PARAMETERS-----
MGMCAQECAgMBBAIAgQQABDBFgKZK72SyVFfdVzqS9bJA9yxmELGenmfZbkob9h9e
hLziI6cVqXAOdVWsb/kbSHOhBgIEVngPs6IEAgIBLKQGBAQBAAAApgwECnJhYm90
YWlwbHo=
-----END SSL SESSION PARAMETERS-----
Shared ciphers:GOST2001-GOST89-GOST89:DHE-DSS-AES128-SHA
CIPHER is GOST2001-GOST89-GOST89
Secure Renegotiation IS supported
GET / HTTP/1.1
User-Agent: Webclient
Accept:*/*
Host: rabotaiplz
Connection: close
Подключаемся как клиент, при помощи csptest Код::~$ /opt/cprocsp/bin/ia32/csptestf -tlsc -server rabotaiplz -port 4433 -v
/opt/cprocsp/bin/ia32/csptestf -tlsc -server rabotaiplz -port 4433 -v
5 algorithms supported:
[0] 1.2.643.2.2.21 (ГОСТ 28147-89)
[1] 1.2.643.2.2.3 (ГОСТ Р 34.11/34.10-2001)
[2] 0x801f
[3] 1.2.643.2.2.20 (ГОСТ Р 34.10-94)
[4] 1.2.643.2.2.19 (ГОСТ Р 34.10-2001)
Cipher strengths: 256..256
Supported protocols: 0x80
Protocol version: 3.1
ClientHello: RecordLayer: TLS, Len: 117
Cipher Suites: (00 81) (00 32) (00 31)
122 bytes of handshake data sent
857 bytes of handshake data received
210 bytes of handshake data sent
222 bytes of handshake data received
Handshake was successful
SECPKG_ATTR_CIPHER_INFO: Proto: 80, Suite: 81 (TLS_GOST_R_3410_01_WITH_28147_CNT_IMIT)
SECPKG_ATTR_NAMES: CN=rabotaiplz
SECPKG_ATTR_PACKAGE_INFO not supported.
Server certificate:
Subject: CN=CommonName
Valid : 17.12.2015 13:43:53 - 17.03.2016 13:53:53 (UTC)
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Protocol: TLS 1.0
Cipher: 0x661e
Cipher strength: 256
Hash: 0x801e
Hash strength: 256
Key exchange: 0xaa25
Key exchange strength: 512
Header: 5, Trailer: 4, MaxMessage: 16384
HTTP request: GET / HTTP/1.1
User-Agent: Webclient
Accept:*/*
Host: rabotaiplz
Connection: close
Sending plaintext: 90 bytes
108 bytes of application data sent
2. Сборка и конфигурация apacheApache собирается из исходников с пропатченым mod_ssl. В обязательном порядке включается параметр --enable-ssl. Конфигурируете сервер исходя из ваших нужд. Основные моменты: Раскоментировать строку “LoadModule ssl_module modules/mod_ssl.so” в httpd.conf Директива SSLCertificateKeyFile должны выглядеть примерно так: SSLCertificateKeyFile "engine:gost_capi:CommonName" Ключ должен находиться в хранилище пользователя, имеющего привилегии на запуск сервера (не тот, что указан в httpd.conf, а непосредственно тот, от имени которого стартует сервер). Привожу в пример мой конфигурационный файл: Код:<VirtualHost HostName:443>
ServerAdmin batischev@cryptopro.ru
DocumentRoot "/opt/apache2/htdocs"
ServerName HostName:443
ErrorLog "logs/tls-error_log"
CustomLog "/var/logs/tls-access_log" common
<Directory "/opt/apache2/htdocs">
Require all granted
</Directory>
SSLEngine on
SSLCertificateFile "/home/stos/server.pem"
SSLCertificateKeyFile "engine:gost_capi:CommonName"
</VirtualHost>
Отредактировано пользователем 16 февраля 2016 г. 12:16:37(UTC)
| Причина: Не указана |
|
1 пользователь поблагодарил Николай Батищев за этот пост.
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close