Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)

Павел Анфимов, файл конфигурации который загружается при инициализации клиента?

Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)

Павел Анфимов, можно подробней, что именно храниться на токене, кроме ключевой пары?

Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)

Сергей Оглы, параметры конфигурации, такие как сервер Рутокен VPN и проч.

Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)

Павел Анфимов, а как загружаете эти данные? Не вводите в заблуждение ваших клиентов...

Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)

Все оч. просто: есть желание подружить ваш клиент Рутокен VPN клиент + свисток РуТокен(было желание купить несколько десятков) и OpenVPN сервер, но появились сомнения в вашей тех. поддержке.

Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)

Сергей Оглы, совместно с клиентом Рутокен VPN клиент нужно использовать сервер Рутокен VPN. Насколько вам это подходит?

Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)

Павел Анфимов, был бы сервер - не было бы вопросов про конфигурационные файлы, но сомнения про производительность, как понимаю там железо типа Расбери Пи...

Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)

Пойдем другим путем!
Где можно ознакомиться с модифицированным исходным кодом проекта OpenVPN и сопутствующих ему, использующихся в вашем клиенте Рутокен VPN? Или ваша компания не уважает лицензию GPL v2?
А именно:

OpenVPN 2.4.1 [git:gost2012-devel/a014fb5c64960679] i686-w64-mingw32 [SSL (OpenSSL)] [LZO] [LZ4] [PKCS11] [AEAD] built on Aug  8 2017
library versions: OpenSSL 1.1.0e  16 Feb 2017, LZO 2.06
Windows version 6.1 (Windows 7) 64bit
Originally developed by James Yonan
Copyright (C) 2002-2017 OpenVPN Technologies, Inc. <sales@openvpn.net>

Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)

Павел Анфимов пишет:

Сергей Оглы, к сожалению, Рутокен VPN при работе по протоколам ГОСТ не использует механизм файлов *.ovpn.
Вся необходимая для подключения информация хранится на токене.

Полнейшая чу.., либо сознательно вводите в заблуждение, либо зря получаете зарплату!
Внимательно посмотрев на ваш клиент(Рутокен VPN), оказалось ваш клиент не более чем графическая оснастка для OpenVPN, которая получает список ключей с рутокена и формирует файл %APPDATA%\rutokenvpnclient\clientvpn.ovpn, с которым и запускает процесс OpenVPN. Все параметры которые которые хранятся на рутокене - это маркер rutokenVpnClient по которому определяете годность ЭЦП для работы (через openvpn --show-pkcs11-ids ...) и маркер даты (через split("_")) в сабжекте по CN=.
Далее, перед запуском openvpn, формирется файл clientvpn.ovpn и добавляете pkcs11-providers и pkcs11-id (с параметром выбранной ЭЦП). И здесь начинается самое интересное...
Варианта два:
1. Дурите клиентов - не оч. хочется верить.
2. Есть дополнительный параметр в OpenVPN(в *.ovpn - начальной конфигурации) для запуска дополнительно механизма, такого как в stunnel (использующий методы ENGINE_load_pulibc_key и ENGINE_load_private_key),и  не через pkcs11_helper (т.к. ваш родной клиент не определяет тип ключа)

Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)

Как дела с исходниками? или чтение лицензии не дается?

Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)

Сергей Оглы, отправьте официальный запрос на info@rutoken.ru

Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)

Павел Анфимов, публичного запроса вам не достаточно?

(2020-08-06 15:56:02 отредактировано Дмитрий Тимофеевский)

Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)

Сергей Оглы, добрый день.

1) Пример конфигурационного файла RutokenVpn: конфигурация ГОСТ ( Enterprise) + Рутокен ЭЦП2.0

client
verb 3
nobind
dev tun
remote 91.хх.хх.хх
<ca>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</ca>
<dh>
-----BEGIN DH PARAMETERS-----
...
-----END DH PARAMETERS-----
</dh>
remote-cert-tls server
<tls-auth>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
...
-----END OpenVPN Static key V1-----
</tls-auth>
key-direction 1


###cipher section

engine gost
cipher grasshopper-cbc
tls-cipher GOST2012-GOST8912-GOST8912
auth md_gost12_512
ncp-disable


###network section

persist-key
persist-tun
proto udp
port 1194
dhcp-option DOMAIN domain.ru
dhcp-option DNS 192.168.0.2

Надеюсь, это поможет Вам в решении вашей задачи.

2) Первичная генерация конфигурационного файла происходит на сервере, после этого файл подгружается в RutokenVpn client,
где модифицируется.

pkcs11-providers 'C:\\Program Files (x86)\\RutokenVpnClient\\resources\\app\\executables\\rtPKCS11ECP.dll'
pkcs11-id 'Aktiv\x20Co\x2E/Rutoken\x20ECP/375a3e2b/test/03651E3C312464CCA51397727E809E0EF4BE0E39\r'

Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)

Дмитрий Тимофеевский, доброго.
Спасибо за предоставленную информацию.
В итоге получается на Рутокене храниться не ГОСТ сертификат и клиент ваш не умеет работать с гост сертификатами?

Fri Aug 07 11:08:23 2020 Loading static ENGINE support
Fri Aug 07 11:08:23 2020 Initializing OpenSSL support for engine 'gost'
Fri Aug 07 11:08:23 2020 OpenVPN 2.4.1 [git:gost2012-devel/a014fb5c64960679] i686-w64-mingw32 [SSL (OpenSSL)] [LZO] [LZ4] [PKCS11] [AEAD] built on Aug  8 2017
Fri Aug 07 11:08:23 2020 Windows version 6.1 (Windows 7) 64bit
Fri Aug 07 11:08:23 2020 library versions: OpenSSL 1.1.0e  16 Feb 2017, LZO 2.06
Fri Aug 07 11:08:23 2020 PKCS#11: Adding PKCS#11 provider 'c:\\Program Files (x86)\\RutokenVpnClient\\resources\\app\\executables\\rtPKCS11ECP.dll'
Fri Aug 07 11:08:23 2020 PKCS#11: Invalid public key algorithm 980
Fri Aug 07 11:08:23 2020 PKCS#11: Unable get evp object
Fri Aug 07 11:08:23 2020 Cannot load certificate "Aktiv\x20Co\x2E/Rutoken\x20ECP/346abfb/Rutoken\x20ECP\x20\x3Cno\x20label\x3E/32303230" using PKCS#11 interface
Fri Aug 07 11:08:23 2020 Error: private key password verification failed
Fri Aug 07 11:08:23 2020 Exiting due to fatal error

https://forum.rutoken.ru/uploads/images/2020/08/1a9873327e81cb2ae4e2760a8aaf198a.png

Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)

Сергей Оглы, сложность в том, что тех.специалист по RutokenVpn сейчас отсутствует. Мы постараемся решить Ваш основной вопрос. 
На данный момент могу предоставить лог-файл успешного подключения к серверу RutokenVpn с помощью ГОСТ сертификата, хранящегося на ЭЦП2.0  + RutokenVpn клиент (win64).

FRI AUG 07 22:24:31 2020 LOADING STATIC ENGINE SUPPORT
FRI AUG 07 22:24:31 2020 INITIALIZING OPENSSL SUPPORT FOR ENGINE 'GOST'
'
FRI AUG 07 22:24:31 2020 OPENVPN 2.4.1 [GIT:GOST2012-DEVEL/A014FB5C64960679] I686-W64-MINGW32 [SSL (OPENSSL)] [LZO] [LZ4] [PKCS11] [AEAD] BUILT ON AUG  8 2017
FRI AUG 07 22:24:31 2020 WINDOWS VERSION 6.2 (WINDOWS 8 OR GREATER) 64BIT
FRI AUG 07 22:24:31 2020 LIBRARY VERSIONS: OPENSSL 1.1.0E  16 FEB 2017, LZO 2.06
FRI AUG 07 22:24:31 2020 PKCS#11: ADDING PKCS#11 PROVIDER 'C:\\PROGRAM FILES (X86)\\RUTOKENVPNCLIENT\\RESOURCES\\APP\\EXECUTABLES\\RTPKCS11ECP.DLL'
'
FRI AUG 07 22:24:31 2020 PKCS#11: __PKCS11H_OPENSSL_SESSION_SETGOST - ENTERED OPENSSL_SESSION=02F09A78, EVP=02EF0BB0
'
FRI AUG 07 22:24:31 2020 OUTGOING CONTROL CHANNEL AUTHENTICATION: USING 512 BIT MESSAGE HASH 'MD_GOST12_512' FOR HMAC AUTHENTICATION
FRI AUG 07 22:24:31 2020 INCOMING CONTROL CHANNEL AUTHENTICATION: USING 512 BIT MESSAGE HASH 'MD_GOST12_512' FOR HMAC AUTHENTICATION
'
FRI AUG 07 22:24:31 2020 TCP/UDP: PRESERVING RECENTLY USED REMOTE ADDRESS: [AF_INET]91.х x.xx.xx:1194
'
FRI AUG 07 22:24:31 2020 SOCKET BUFFERS: R=[65536->65536] S=[65536->65536]
FRI AUG 07 22:24:31 2020 UDP LINK LOCAL: (NOT BOUND)
FRI AUG 07 22:24:31 2020 UDP LINK REMOTE: [AF_INET]91.xx.xx.xx:1194
'
FRI AUG 07 22:24:31 2020 TLS: INITIAL PACKET FROM [AF_INET]91.xx.xx.xx:1194, SID=0D52FF08 5719DB4F
'
FRI AUG 07 22:24:31 2020 VERIFY OK: DEPTH=1, C=RU, ST=MOSCOW, L=MOSCOW, CN=TETS
'
FRI AUG 07 22:24:31 2020 VERIFY KU OK
FRI AUG 07 22:24:31 2020 VALIDATING CERTIFICATE EXTENDED KEY USAGE
FRI AUG 07 22:24:31 2020 ++ CERTIFICATE HAS EKU (STR) TLS WEB SERVER AUTHENTICATION, EXPECTS TLS WEB SERVER AUTHENTICATION
FRI AUG 07 22:24:31 2020 VERIFY EKU OK
FRI AUG 07 22:24:31 2020 VERIFY OK: DEPTH=0, C=RU, ST=MOSCOW, CN=VPNSERVER
'
ENTER TEST TOKEN PASSWORD:'

'
FRI AUG 07 22:24:35 2020 CONTROL CHANNEL: TLSV1.2, CIPHER TLSV1.0 GOST2012-GOST8912-GOST8912
FRI AUG 07 22:24:35 2020 [VPNSERVER] PEER CONNECTION INITIATED WITH [AF_INET]91.xx.xx.xx:1194
'
FRI AUG 07 22:24:36 2020 SENT CONTROL [VPNSERVER]: 'PUSH_REQUEST' (STATUS=1)
'
FRI AUG 07 22:24:36 2020 PUSH: RECEIVED CONTROL MESSAGE: 'PUSH_REPLY,DHCP-OPTION  DNS 192.168.0.20,DHCP-OPTION DNS 192.168.0.xx,REDIRECT-GATEWAY DEF1,ROUTE 10.xx.0.1,TOPOLOGY NET30,PING 10,PING-RESTART 60,IFCONFIG 10.xx.xx.6 10.xx.x.5,PEER-ID 0'
FRI AUG 07 22:24:36 2020 OPTIONS IMPORT: TIMERS AND/OR TIMEOUTS MODIFIED
FRI AUG 07 22:24:36 2020 OPTIONS IMPORT: --IFCONFIG/UP OPTIONS MODIFIED
FRI AUG 07 22:24:36 2020 OPTIONS IMPORT: ROUTE OPTIONS MODIFIED
FRI AUG 07 22:24:36 2020 OPTIONS IMPORT: --IP-WIN32 AND/OR --DHCP-OPTION OPTIONS MODIFIED
FRI AUG 07 22:24:36 2020 OPTIONS IMPORT: PEER-ID SET
FRI AUG 07 22:24:36 2020 OPTIONS IMPORT: ADJUSTING LINK_MTU TO 1624
'
FRI AUG 07 22:24:36 2020 DATA CHANNEL ENCRYPT: CIPHER 'GRASSHOPPER-CBC' INITIALIZED WITH 256 BIT KEY
FRI AUG 07 22:24:36 2020 DATA CHANNEL ENCRYPT: USING 512 BIT MESSAGE HASH 'MD_GOST12_512' FOR HMAC AUTHENTICATION
FRI AUG 07 22:24:36 2020 DATA CHANNEL DECRYPT: CIPHER 'GRASSHOPPER-CBC' INITIALIZED WITH 256 BIT KEY
FRI AUG 07 22:24:36 2020 DATA CHANNEL DECRYPT: USING 512 BIT MESSAGE HASH 'MD_GOST12_512' FOR HMAC AUTHENTICATION
FRI AUG 07 22:24:36 2020 INTERACTIVE SERVICE MSG_CHANNEL=0
'
FRI AUG 07 22:24:36 2020 OPEN_TUN
'
FRI AUG 07 22:24:36 2020 TAP-WIN32 DEVICE [ETHERNET 2] OPENED: \\.\GLOBAL\{9173257A-7063-4C27-A86F-693536CF8051}.TAP
'
FRI AUG 07 22:24:36 2020 TAP-WINDOWS DRIVER VERSION 9.21 
'
FRI AUG 07 22:24:36 2020 NOTIFIED TAP-WINDOWS DRIVER TO SET A DHCP IP/NETMASK OF 10.xx.xx.5/255.255.255.252 ON INTERFACE {9173257A-7063-4C27-A86F-693536CF8051} [DHCP-SERV: 10.xx.xx.5, LEASE-TIME: 31536000]
FRI AUG 07 22:24:36 2020 SUCCESSFUL ARP FLUSH ON INTERFACE [13] {9173257A-7063-4C27-A86F-693536CF8051}
'
FRI AUG 07 22:24:36 2020 DO_IFCONFIG, TT->DID_IFCONFIG_IPV6_SETUP=0
'