Создал ключи и сертификаты для нгинкс по инструкции из темы по настройк енгинкс+ гост на тестовой машине.
Далее выполняю настройку докер контейнеров с помощью импорта туда готовых pfx
Выполнил такую команду
/opt/cprocsp/bin/amd64/certmgr -export -pfx -dn "CN=meteotravel.ru" -dest mtravel.pfx -provtype 81
файл проверял закрытый ключ там есть
Далее в докер контейнере делаю импорт
RUN /opt/cprocsp/sbin/amd64/cpconfig -hardware reader -add HDIMAGE store \
&& /etc/init.d/cprocsp start \
&& /opt/cprocsp/bin/amd64/certmgr -inst -pfx -file /etc/certs/server/gost/cpro/mtravel.pfx --silent \
вот кусок конфига нгинкс отвечающий за работу госта
Открытые ключи экспортировал до этого в соответвтвии с инструкцией по настройке и копировал их в виде pem файлов в папку с сертификатами , откуда их берет нгинкс.
Сертификаты не импортировал в контейнер отдельно командой certmgr -inst -cer. Сейчас задумался нужно ли это делать.
Код:
ssl_client_certificate /etc/certs/ca-bundle.pem;
#ssl_verify_client on;
#Криптопро конфиг
ssl_certificate /etc/certs/server/gost/cpro/meteotravel.ru.pem;
ssl_certificate_key engine:gostengy:meteotravel.ru;
server_name meteotravel.ru;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers GOST2012-GOST8912-GOST8912:GOST2001-GOST89-GOST89:HIGH;
ssl_prefer_server_ciphers on;
вот содержимое файла ca-bundle.pem
Код:
-----BEGIN CERTIFICATE-----
MIIDwDCCAqigAwIBAgIJAKTUyyg8icmNMA0GCSqGSIb3DQEBCwUAMHUxCzAJBgNV
BAYTAlJVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
aWRnaXRzIFB0eSBMdGQxEDAOBgNVBAMMB2FiYy5jb20xHDAaBgkqhkiG9w0BCQEW
DWFkbWluQGFiYy5jb20wHhcNMTgxMjE3MTQyMzI5WhcNMTkxMjE3MTQyMzI5WjB1
MQswCQYDVQQGEwJSVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50
ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMRAwDgYDVQQDDAdhYmMuY29tMRwwGgYJKoZI
hvcNAQkBFg1hZG1pbkBhYmMuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEA+VbUfRM4bDfJQqQLip6cWvEXwA3oNtqvzJVWN5M1xN00+0jVyQSTyVXx
L+w+5tvkP7yz1N/4cZy1wxlQ695lF/TrONEbl/2XHlH/AmJULefHpMt9q0y8JB1a
M8YNbvCOevpX62XLmnSUQ+RgSV8bIrbSBpYKQyGHy7c7VyEaoOJrX4/ZTtyvVGsY
1gxi3v0zmS6XFWg6VtxggEkb9ZIC04JAuQo/MhgIFy0ycEWd9Izfs4p6eKqF4mAz
XZ0xY4+fZI95SwY8xvDh2+DWI9CGF1Vz74RYPa3iwH37yjo4etcnK3ENm88HHA7A
IN8qD/1VhHVJOtRMQWSSJDiJhg1D/QIDAQABo1MwUTAdBgNVHQ4EFgQUGX5hWOMV
i8dRPW5dv9Tfp9X5EggwHwYDVR0jBBgwFoAUGX5hWOMVi8dRPW5dv9Tfp9X5Eggw
DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAYyAX8sJQ70k4w2A/
M5V94C0Y8LzF5kvDkapLU3XrPkKkjkhzfoORAnUlVjS1PWYZbc58P90lwWOqlH4c
Q4WDcJN1l0juycDc+rVLzYhIEiWlqVk6zZMLzFe53sfe4yQ7UNT8jqd0VA8rj9Wr
finisJnKdzqV2d/JH5nhEIdON7rZ72NvB0reinLGfH2gGkXc5pYT3mWy23/tNzSq
qseOWaZlVrxMVMsQ+W/uXKR2W7Ub1dSVcbfEKSe+JLm1xvOqvBWn+1IE96YPIJVv
NlNDWr6kXDT04qO/bCVf5XJXm7r4Qvk6BoLo/0CXq6S9H29W+mV+ilybQKsoOpK3
GtgY2A==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICTDCCAfugAwIBAgIQK24zUf1usq1IIAIDy1uhQTAIBgYqhQMCAgMwfzEjMCEG
CSqGSIb3DQEJARYUc3VwcG9ydEBjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMQ8w
DQYDVQQHEwZNb3Njb3cxFzAVBgNVBAoTDkNSWVBUTy1QUk8gTExDMSEwHwYDVQQD
ExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDIwHhcNMTQwODA1MTM0NDI0WhcNMTkw
ODA1MTM1NDAzWjB/MSMwIQYJKoZIhvcNAQkBFhRzdXBwb3J0QGNyeXB0b3Byby5y
dTELMAkGA1UEBhMCUlUxDzANBgNVBAcTBk1vc2NvdzEXMBUGA1UEChMOQ1JZUFRP
LVBSTyBMTEMxITAfBgNVBAMTGENSWVBUTy1QUk8gVGVzdCBDZW50ZXIgMjBjMBwG
BiqFAwICEzASBgcqhQMCAiMBBgcqhQMCAh4BA0MABEDgUgrcR9wpvdcgXwxIfO/U
jR52JdC9UgWOrc3Ky2YMpunm+lAm5JIgbnCASrzW/Q43EMfmhQGy7dZijrm3zcee
o1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUFTF8
sI0a3mbXFZxJUpcXJLkBeoMwEAYJKwYBBAGCNxUBBAMCAQAwCAYGKoUDAgIDA0EA
2MocS+lhIGVHLNXI6jiI3s3scchFv7+c5d7/VVp3JJnt4Lki0avn90/m0G97j1oq
407pZA2QUDLB8eO0SRJX1Q==
-----END CERTIFICATE-----
Второй сертификат там гостовый для тестового уц
Далее выполняю команду
/opt/cprocsp/bin/amd64/curl -vvv --ciphers GOST2012-GOST8912-GOST8912 \
--url
https://meteotravel.ru/получаю ошибку
Код:* About to connect() to meteotravel.ru port 443 (#0)
* Trying 192.168.1.241... connected
* Connected to meteotravel.ru (192.168.1.241) port 443 (#0)
* Closing connection #0
* Problem with the local SSL certificate
curl: (58) Problem with the local SSL certificate
в логах нгинкса ошибка такая
[crit] 311#311: *1 SSL_do_handshake() failed (SSL: error:8000601C:lib(128):gng_hash_init_common:CryptCreateHash error:14125044:SSL routines:ssl3_digest_cached_records:internal error) while SSL handshaking,
если зайти в контейнер и посмотреть есть ли там ключи то они есть
Код:ls -l /var/opt/cprocsp/keys/root/ngxtest.000/
total 24
-rw-r--r-- 1 root root 977 Feb 13 12:19 header.key
-rw-r--r-- 1 root root 88 Feb 13 12:40 masks.key
-rw-r--r-- 1 root root 88 Feb 13 12:19 masks2.key
-rw-r--r-- 1 root root 11 Feb 13 12:19 name.key
-rw-r--r-- 1 root root 68 Feb 13 12:40 primary.key
-rw-r--r-- 1 root root 68 Feb 13 12:19 primary2.key
openssl engine
(rdrand) Intel RDRAND engine
(dynamic) Dynamic engine loading support
(gostengy) CryptoPro GostEngy ($Revision: 185515 $)
/opt/cprocsp/sbin/amd64/cpconfig -defprov -view -provtype 81
Listing Available Providers:
Provider type Provider Name
_____________ _____________________________________
81 Crypto-Pro GOST R 34.10-2012 KC1 Strong CSP
81 Crypto-Pro GOST R 34.10-2012 Strong Cryptographic Service Provider
81 Crypto-Pro GOST R 34.10-2012 KC2 Strong CSP
Provider types and provider names have been listed.
вот установленные пакеты криптопро
dpkg --list|grep cprocsp
ii cprocsp-cpopenssl-110-64 5.0.11319-5 amd64 OpenSSL-110. Build 11319.
ii cprocsp-cpopenssl-110-base 5.0.11319-5 all Openssl-110 common Build 11319.
ii cprocsp-cpopenssl-110-devel 5.0.11319-5 all Openssl-110 devel Build 11319.
ii cprocsp-cpopenssl-110-gost-64 5.0.11319-5 amd64 OpenSSL-110 gostengy engine. Build 11319.
ii cprocsp-curl-64 5.0.11319-5 amd64 CryptoPro Curl shared library and binaris. Build 11319.
ii lsb-cprocsp-base 5.0.11319-5 all CryptoPro CSP directories and scripts. Build 11319.
ii lsb-cprocsp-ca-certs 5.0.11319-5 all CA certificates. Build 11319.
ii lsb-cprocsp-capilite-64 5.0.11319-5 amd64 CryptoAPI lite. Build 11319.
ii lsb-cprocsp-kc1-64 5.0.11319-5 amd64 CryptoPro CSP KC1. Build 11319.
ii lsb-cprocsp-kc2-64 5.0.11319-5 amd64 CryptoPro CSP KC2. Build 11319.
ii lsb-cprocsp-rdr-64 5.0.11319-5 amd64 CryptoPro CSP readers. Build 11319.
вот дамп ссл трафика
sudo ssldump -i enp3s0 -n port 443
New TCP connection #1: 192.168.1.252(50810) <-> 192.168.1.241(443)
1 1 0.0068 (0.0068) C>S Handshake
ClientHello
Version 3.3
cipher suites
TLS_ECDH_ECDSA_EXPORT_WITH_RC4_56_SHA
Unknown value 0x81
TLS_DHE_DSS_WITH_AES_128_CBC_SHA
TLS_DH_RSA_WITH_AES_128_CBC_SHA
compression methods
NULL
1 2 0.0118 (0.0049) S>C Alert
level fatal
value internal_error
1 0.0120 (0.0002) S>C TCP FIN
1 0.0121 (0.0000) C>S TCP FIN
UPD:
При сборке команды и выполнении /etc/init.d/cprocsp start
видны такие ошибки, но импорт pfx вроде срабатывает
File '//opt/cprocsp/bin/amd64/inittst' has been verified
File '//opt/cprocsp/lib/amd64/libasn1data_XER.so.4.0.5' has been verified
umount: /var/opt/cprocsp/mnt/0: must be superuser to unmount
umount: /var/opt/cprocsp/mnt/1: must be superuser to unmount
umount: /var/opt/cprocsp/mnt/2: must be superuser to unmount
umount: /var/opt/cprocsp/mnt/3: must be superuser to unmount
umount: /var/opt/cprocsp/mnt/4: must be superuser to unmount
umount: /var/opt/cprocsp/mnt/5: must be superuser to unmount
umount: /var/opt/cprocsp/mnt/6: must be superuser to unmount
umount: /var/opt/cprocsp/mnt/7: must be superuser to unmount
UPD2 Запустил тестовый ssl сервер
/opt/cprocsp/cp-openssl-1.1.0/bin/amd64/openssl s_server -engine gostengy -keyform ENGINE -key "meteotravel.ru" -cert /etc/certs/server/gost/cpro/meteotravel.ru.pem
engine "gostengy" set.
warning, not much extra random data, consider using the -rand option
Using default temp DH parameters
ACCEPT
Далее подключаюсь клиентом
/opt/cprocsp/bin/amd64/csptestf -tlsc -server meteotravel.ru -port 4433 -v
8 algorithms supported:
Aglid Class OID
[00] 0x661e 0x6000 1.2.643.2.2.21 (ГОСТ 28147-89)
[01] 0x801e 0x8000 1.2.643.2.2.3 (ГОСТ Р 34.11/34.10-2001)
[02] 0x8021 0x8000 1.2.643.7.1.1.2.2 (ГОСТ Р 34.11-2012 256 бит)
[03] 0x801f 0x8000
[04] 0x2e1e 0x2000 1.2.643.2.2.20 (ГОСТ Р 34.10-94)
[05] 0x2e23 0x2000 1.2.643.2.2.19 (ГОСТ Р 34.10-2001)
[06] 0x2e49 0x2000 1.2.643.7.1.1.1.1 (ГОСТ Р 34.10-2012)
[07] 0x2e3d 0x2000 1.2.643.7.1.1.1.2 (ГОСТ Р 34.10-2012)
Cipher strengths: 256..256
Supported protocols: 0xa80:
Transport Layer Security 1.0 client side
Transport Layer Security 1.1 client side
Transport Layer Security 1.2 client side
dwProtocolMask: 0x800e2aaa
An error occurred in running the program.
/dailybuilds/CSPbuild/CSP/samples/csptest/WebClient.c:1153:Socket connect error: 111
Error number 0x80091003 (2148077571).
The object identifier is poorly formatted.
WARNING: ENOTCONN on socket shutdown (ungraceful shutdown)
**** Could not connect
An error occurred in running the program.
/dailybuilds/CSPbuild/CSP/samples/csptest/WebClient.c:632:Error connecting to server.
Error number 0x80091003 (2148077571).
The object identifier is poorly formatted.
Total: SYS: 0,000 sec USR: 0,030 sec UTC: 0,050 sec
[ErrorCode: 0x80091003]
alex@devprofi ~ $ telnet meteotravel.ru 4433
Trying 192.168.1.249...
telnet: Unable to connect to remote host: Connection refused
alex@devprofi ~ $ cat /etc/hosts
192.168.1.249 meteotravel.ru
Подскажите в чем проблема?
Отредактировано пользователем 13 февраля 2019 г. 18:15:30(UTC)
| Причина: Не указана