<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум Рутокен &mdash; OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)]]></title>
		<link>https://forum.rutoken.ru/topic/3177/</link>
		<atom:link href="https://forum.rutoken.ru/feed/rss/topic/3177" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)».]]></description>
		<lastBuildDate>Fri, 24 May 2024 11:28:06 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)]]></title>
			<link>https://forum.rutoken.ru/post/24955/#p24955</link>
			<description><![CDATA[<p><strong>flatron.88</strong>, пиши, что не получается?</p>]]></description>
			<author><![CDATA[null@example.com (Сергей Оглы)]]></author>
			<pubDate>Fri, 24 May 2024 11:28:06 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/24955/#p24955</guid>
		</item>
		<item>
			<title><![CDATA[Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)]]></title>
			<link>https://forum.rutoken.ru/post/24723/#p24723</link>
			<description><![CDATA[<p><strong>vladi870</strong>, <strong>Сергей Оглы</strong>.&nbsp; Я пытаюсь пройти этот путь, не могли бы вы выйти на связь.</p>]]></description>
			<author><![CDATA[null@example.com (flatron.88)]]></author>
			<pubDate>Mon, 13 May 2024 06:38:55 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/24723/#p24723</guid>
		</item>
		<item>
			<title><![CDATA[Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)]]></title>
			<link>https://forum.rutoken.ru/post/15902/#p15902</link>
			<description><![CDATA[<p>Добрый Сергей , есть ли у вас email, по которому я могу связаться с вами? Я очень <strong>заинтересован</strong>. Или вы можете напрямую связаться со мной по этой email <a href="mailto:petrovich.vladikonoz870@yandex.com">petrovich.vladikonoz870@yandex.com</a></p>]]></description>
			<author><![CDATA[null@example.com (vladi870)]]></author>
			<pubDate>Sat, 28 Aug 2021 14:20:29 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/15902/#p15902</guid>
		</item>
		<item>
			<title><![CDATA[Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)]]></title>
			<link>https://forum.rutoken.ru/post/14716/#p14716</link>
			<description><![CDATA[<p>В итоге собрал библиотеки gost.dll и libpkcs11-helper-1.dll для x86_x32/64, выложил на <a href="https://github.com/SergeyOgly/OpenVPN_Rutoken_GOST/releases/tag/0.0.1">github</a> + небольшая инструкция по установке и скрипт для самостоятельной сборки gost.dll под Linux&#039;ом (использовал CentOS 8).<br />Результат: Безопасное хранение ключевой пары у клиента в формате ГОСТ на рутокене и идентификация по ГОСТ сертификату на сервере.</p>]]></description>
			<author><![CDATA[null@example.com (Сергей Оглы)]]></author>
			<pubDate>Fri, 28 Aug 2020 23:30:56 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/14716/#p14716</guid>
		</item>
		<item>
			<title><![CDATA[Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)]]></title>
			<link>https://forum.rutoken.ru/post/14713/#p14713</link>
			<description><![CDATA[<p>Доброго.<br />Вышел каменный цветок, OpenVPN + GOST2012 + рутокет эцп 2.0!!! <br />Дело в нескольких десятках строк в pkcs11-helper, помог реверс-инжиниринг и понимание куда копать.<br />Для использования openssl v1.1.1 пришлось обновить pkcs-helper до v1.26.0 и немного модифицировать <strong>pkcs11h-openssl.c</strong>:<br />в начало<br /></p><div class="codebox"><pre><code>#include &lt;openssl/engine.h&gt;</code></pre></div><p>добавляем функцию <strong>__pkcs11h_openssl_gost_do_sign</strong><br /></p><div class="codebox"><pre><code>#define NSSCK_VENDOR_PKCS11_RU_TEAM 0xD4321000 /* 0x80000000 | 0x54321000 */
#define CK_VENDOR_PKCS11_RU_TEAM_TC26 NSSCK_VENDOR_PKCS11_RU_TEAM 
#define CKM_GOSTR3410 0x00001201
#define CKM_GOSTR3410_256 CKM_GOSTR3410
#define CKM_GOSTR3410_512 (CK_VENDOR_PKCS11_RU_TEAM_TC26 |0x006)

static int* __pkcs11h_openssl_gost_do_sign(EVP_PKEY_CTX *ctx, unsigned __int8 *sig, size_t *sig_len, const unsigned __int8 *key, size_t key_len)
{
    ENGINE *engine_gost = NULL;
    pkcs11h_certificate_t *certificate;
    CK_RV rv = CKR_FUNCTION_FAILED;
    const char *rv_error;
    engine_gost = ENGINE_by_id(&quot;gost&quot;);
    if ( !engine_gost ){
        _PKCS11H_LOG (PKCS11H_LOG_WARN, &quot;PKCS#11: Cannot get engine by id gost&quot;);
        goto label_exit_gost_sig;
    }
    certificate = (pkcs11h_certificate_t *)ENGINE_get_ex_data(engine_gost,0);
    if ( pkcs11h_certificate_lockSession(certificate) ) {
        _PKCS11H_LOG (PKCS11H_LOG_WARN, &quot;PKCS#11: pkcs11h_certificate_lockSession - error&quot;);
        ENGINE_free(engine_gost);
        goto label_exit_gost_sig;
    }
    rv = pkcs11h_certificate_signAny(certificate, ENGINE_get_ex_data(engine_gost,1), key, key_len, sig, sig_len);
    if ( rv != CKR_OK ){
        rv_error = pkcs11h_getMessage(rv);
        _PKCS11H_LOG (PKCS11H_LOG_WARN, &quot;PKCS#11: GOST Cannot perform signature %ld:&#039;%s&#039;&quot;, rv, rv_error);
        pkcs11h_certificate_releaseSession(certificate);
        ENGINE_free(engine_gost);
label_exit_gost_sig:
        _PKCS11H_LOG (PKCS11H_LOG_WARN, &quot;PKCS#11: __pkcs11h_openssl_gost_do_sign - return sig=%p&quot;, sig);
        return -1;
    }
    ENGINE_free(engine_gost);
    pkcs11h_certificate_releaseSession(certificate);
    return sig;
}</code></pre></div><p>и модифицируем функцию <strong>pkcs11h_openssl_session_getEVP</strong><br /></p><div class="codebox"><pre><code>EVP_PKEY *
pkcs11h_openssl_session_getEVP (
    IN const pkcs11h_openssl_session_t openssl_session
) {
    X509 *x509 = NULL;
    EVP_PKEY *evp = NULL;
    EVP_PKEY *ret = NULL;

    _PKCS11H_ASSERT (openssl_session!=NULL);

    _PKCS11H_DEBUG (
        PKCS11H_LOG_DEBUG2,
        &quot;PKCS#11: pkcs11h_openssl_session_getEVP - entry openssl_session=%p&quot;,
        (void *)openssl_session
    );

    /*
     * Dup x509 so RSA will not hold session x509
     */
    if ((x509 = pkcs11h_openssl_session_getX509 (openssl_session)) == NULL) {
        _PKCS11H_LOG (PKCS11H_LOG_WARN, &quot;PKCS#11: Cannot get certificate object&quot;);
        goto cleanup;
    }

    if ((evp = X509_get_pubkey (x509)) == NULL) {
        _PKCS11H_LOG (PKCS11H_LOG_WARN, &quot;PKCS#11: Cannot get public key&quot;);
        goto cleanup;
    }

    if (0) {
    }
#ifndef OPENSSL_NO_RSA
    else if (EVP_PKEY_id (evp) == EVP_PKEY_RSA) {
        if (!__pkcs11h_openssl_session_setRSA(openssl_session, evp)) {
            goto cleanup;
        }
    }
#endif
#ifndef OPENSSL_NO_RSA
    else if (EVP_PKEY_id (evp) == EVP_PKEY_DSA) {
        if (!__pkcs11h_openssl_session_setDSA(openssl_session, evp)) {
            goto cleanup;
        }
    }
#endif
#ifdef __ENABLE_EC
    else if (EVP_PKEY_id(evp) == EVP_PKEY_EC) {
        if (!__pkcs11h_openssl_session_setECDSA(openssl_session, evp)) {
            goto cleanup;
        }
    }
#endif</code></pre></div><p>добавляем:<br /></p><div class="codebox"><pre><code>    else if (EVP_PKEY_id(evp) == NID_id_GostR3410_2012_512|| EVP_PKEY_id(evp) == NID_id_GostR3410_2012_256 || EVP_PKEY_id(evp) == NID_id_GostR3410_2001 ) {
        ENGINE *engine_gost = NULL;
        engine_gost = ENGINE_by_id(&quot;gost&quot;);
        if ( !engine_gost ){
            _PKCS11H_LOG (PKCS11H_LOG_WARN, &quot;PKCS#11: Cannot get engine by id gost&quot;);
            goto cleanup;
        }
        if ( ENGINE_get_pkey_meth(engine_gost, EVP_PKEY_id(evp)) == NULL){
            _PKCS11H_LOG (PKCS11H_LOG_WARN, &quot;PKCS#11: Cannot get public key mech&quot;);
        }else{
            _PKCS11H_LOG (PKCS11H_LOG_WARN, &quot;PKCS#11: public key mech&quot;);
            EVP_PKEY_meth_set_sign(ENGINE_get_pkey_meth(engine_gost, EVP_PKEY_id(evp)),0,__pkcs11h_openssl_gost_do_sign);
            ENGINE_set_ex_data(engine_gost,0,openssl_session-&gt;certificate);
            if (EVP_PKEY_id(evp) == NID_id_GostR3410_2012_512){
            ENGINE_set_ex_data(engine_gost,1,CKM_GOSTR3410_512);
            }else{
            ENGINE_set_ex_data(engine_gost,1,CKM_GOSTR3410_256);
            }
            ENGINE_free(engine_gost);
        }
    }</code></pre></div><p>и остаток:<br /></p><div class="codebox"><pre><code>    else {
        _PKCS11H_LOG (PKCS11H_LOG_WARN, &quot;PKCS#11: Invalid public key algorithm %d&quot;, EVP_PKEY_id (evp));
        goto cleanup;
    }

#if defined(ENABLE_PKCS11H_THREADING)
    _pkcs11h_threading_mutexLock(&amp;openssl_session-&gt;reference_count_lock);
#endif
    openssl_session-&gt;reference_count++;
#if defined(ENABLE_PKCS11H_THREADING)
    _pkcs11h_threading_mutexRelease(&amp;openssl_session-&gt;reference_count_lock);
#endif

    ret = evp;
    evp = NULL;

cleanup:

    /*
     * openssl objects have reference
     * count, so release them
     */
    if (evp != NULL) {
        EVP_PKEY_free (evp);
        evp = NULL;
    }

    if (x509 != NULL) {
        X509_free (x509);
        x509 = NULL;
    }

    _PKCS11H_DEBUG (
        PKCS11H_LOG_DEBUG2,
        &quot;PKCS#11: pkcs11h_openssl_session_getEVP - return ret=%p&quot;,
        (void *)ret
    );

    return ret;
}</code></pre></div><p>собираем и радуемся!!!<br />В отличии от <strong>RutokenVPN </strong>(который работает с сертификатами RSA и ГОСТ2001 - который устарел) получаем поддержку сертификатов ГОСТ2012 (256 и 512) .<br /><strong>PS:</strong> набор исходников состоит из OpenVPN 2.4.9 + OpenSSL 1.1.1g + Pkcs11-helper 1.26.0 и отдельно собирал ENGINE <strong><a href="https://github.com/gost-engine/engine">gost v1.1.0.3</a></strong><br />Отдельное спасибо разработчикам за реверс и не предоставленные исходники(ради нескольких строк)!<br />&quot;И удачи в продажах <strong>enterprise</strong> за 50k&quot;.</p>]]></description>
			<author><![CDATA[null@example.com (Сергей Оглы)]]></author>
			<pubDate>Thu, 27 Aug 2020 10:11:27 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/14713/#p14713</guid>
		</item>
		<item>
			<title><![CDATA[Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)]]></title>
			<link>https://forum.rutoken.ru/post/14686/#p14686</link>
			<description><![CDATA[<div class="codebox"><pre><code>C:\Program Files\openvpn\bin&gt;openssl.exe engine rtengine -c -t
(rtengine) Rutoken engine
 [gost89, gost89-cnt, gost89-cnt-12, gost89-cbc, md_gost94, gost-mac, md_gost12_256, md_gost12_512, gost-mac-12, gost2001, gost-mac, gost2012_256, gost2012_512, gost-mac-12]
     [ available ]

C:\Program Files\openvpn\bin&gt;openssl.exe engine gost -c -t
(gost) Reference implementation of GOST engine
 [gost89, gost89-cnt, gost89-cnt-12, gost89-cbc, grasshopper-ecb, grasshopper-cbc, grasshopper-cfb, grasshopper-ofb, grasshopper-ctr, md_gost94, gost-mac, md_gost12_256, md_gost12_512, gost-mac-12, gost2001, gost-mac, gost2012_256, gost2012_512, gost-mac-12]
     [ available ]</code></pre></div><p>И еще вопрос, когда в rtengine появиться кузнечик?</p>]]></description>
			<author><![CDATA[null@example.com (Сергей Оглы)]]></author>
			<pubDate>Mon, 17 Aug 2020 09:45:50 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/14686/#p14686</guid>
		</item>
		<item>
			<title><![CDATA[Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)]]></title>
			<link>https://forum.rutoken.ru/post/14685/#p14685</link>
			<description><![CDATA[<p>Только в вашем решении, как и у меня, на рутокене храниться RSA ключик, а на сервере ГОСТовый ключ в открытом виде. Но изначальная задача: защитить ключ клиента на рутокене, идентифицировать его и получить ГОСТ шифрование.<br />В итоге стенд:<br /><strong>Сервер:</strong> CentOS 7, OpenVPN + OpenSSL 1.1.1 + PKI ГОСТ2012_512 + Engine GOST + ГОСТ сертификат.<br /><strong>Клиент:</strong> Win7, OpenVPN + OpenSSL 1.1.0 + Engine GOST (под OpenSSL 1.1.0) + RSA сертификат + rtPKCS11ECP.dll.<br />PS: OpenSSL 1.1.1 - некорректно работает с pkcs11-helper&nbsp; и выдает ошибку<br /></p><div class="codebox"><pre><code>OpenSSL: error:141F0006:SSL routines:tls_construct_cert_verify:EVP lib</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Сергей Оглы)]]></author>
			<pubDate>Mon, 17 Aug 2020 08:59:10 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/14685/#p14685</guid>
		</item>
		<item>
			<title><![CDATA[Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)]]></title>
			<link>https://forum.rutoken.ru/post/14684/#p14684</link>
			<description><![CDATA[<p>Ура!!! пошла:<br /></p><div class="codebox"><pre><code>Mon Aug 17 16:34:34 2020 WARNING: Ignoring option &#039;dh&#039; in tls-client mode, please only include this in your server configuration
Mon Aug 17 16:34:34 2020 OpenVPN 2.4.9 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [LZ4] [PKCS11] [AEAD] built on Aug 17 2020
Mon Aug 17 16:34:34 2020 Windows version 6.1 (Windows 7) 64bit
Mon Aug 17 16:34:34 2020 library versions: OpenSSL 1.1.0l  10 Sep 2019, LZO 2.10
Mon Aug 17 16:34:34 2020 MANAGEMENT: TCP Socket listening on [AF_INET]127.0.0.1:25341
Mon Aug 17 16:34:34 2020 Need hold release from management interface, waiting...
Mon Aug 17 16:34:34 2020 MANAGEMENT: Client connected from [AF_INET]127.0.0.1:25341
Mon Aug 17 16:34:34 2020 MANAGEMENT: CMD &#039;state on&#039;
Mon Aug 17 16:34:34 2020 MANAGEMENT: CMD &#039;log all on&#039;
Mon Aug 17 16:34:34 2020 MANAGEMENT: CMD &#039;echo all on&#039;
Mon Aug 17 16:34:34 2020 MANAGEMENT: CMD &#039;bytecount 5&#039;
Mon Aug 17 16:34:34 2020 MANAGEMENT: CMD &#039;hold off&#039;
Mon Aug 17 16:34:34 2020 MANAGEMENT: CMD &#039;hold release&#039;
Mon Aug 17 16:34:34 2020 PKCS#11: Adding PKCS#11 provider &#039;rtPKCS11ECP.dll&#039;
Mon Aug 17 16:34:34 2020 Initializing OpenSSL support for engine &#039;gost&#039;
Mon Aug 17 16:34:35 2020 Outgoing Control Channel Authentication: Using 512 bit message hash &#039;md_gost12_512&#039; for HMAC authentication
Mon Aug 17 16:34:35 2020 Incoming Control Channel Authentication: Using 512 bit message hash &#039;md_gost12_512&#039; for HMAC authentication
Mon Aug 17 16:34:35 2020 TCP/UDP: Preserving recently used remote address: [AF_INET]10.x.x.190:1194
Mon Aug 17 16:34:35 2020 Socket Buffers: R=[8192-&gt;8192] S=[8192-&gt;8192]
Mon Aug 17 16:34:35 2020 Attempting to establish TCP connection with [AF_INET]10.x.x.190:1194 [nonblock]
Mon Aug 17 16:34:35 2020 MANAGEMENT: &gt;STATE:1597649675,TCP_CONNECT,,,,,,
Mon Aug 17 16:34:36 2020 TCP connection established with [AF_INET]10.x.x.190:1194
Mon Aug 17 16:34:36 2020 TCP_CLIENT link local: (not bound)
Mon Aug 17 16:34:36 2020 TCP_CLIENT link remote: [AF_INET]10.x.x.190:1194
Mon Aug 17 16:34:36 2020 MANAGEMENT: &gt;STATE:1597649676,WAIT,,,,,,
Mon Aug 17 16:34:36 2020 MANAGEMENT: &gt;STATE:1597649676,AUTH,,,,,,
Mon Aug 17 16:34:36 2020 TLS: Initial packet from [AF_INET]10.x.x.190:1194, sid=00b8a630 aa030866
Mon Aug 17 16:34:36 2020 VERIFY OK: depth=1, C=RU, ST=28 ....
Mon Aug 17 16:34:36 2020 VERIFY KU OK
Mon Aug 17 16:34:36 2020 Validating certificate extended key usage
Mon Aug 17 16:34:36 2020 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication
Mon Aug 17 16:34:36 2020 VERIFY EKU OK
Mon Aug 17 16:34:36 2020 VERIFY OK: depth=0, C=RU, ST=28 ...
Mon Aug 17 16:34:39 2020 MANAGEMENT: CMD &#039;password [...]&#039;
Mon Aug 17 16:34:40 2020 Control Channel: TLSv1.2, cipher TLSv1.0 GOST2012-GOST8912-GOST8912
Mon Aug 17 16:34:40 2020 [З...] Peer Connection Initiated with [AF_INET]10.x.x.190:1194
Mon Aug 17 16:34:41 2020 MANAGEMENT: &gt;STATE:1597649681,GET_CONFIG,,,,,,
Mon Aug 17 16:34:41 2020 SENT CONTROL [З...]: &#039;PUSH_REQUEST&#039; (status=1)
Mon Aug 17 16:34:41 2020 PUSH: Received control message: &#039;PUSH_REPLY,route 10.х.х.0 255.255.248.0,route-gateway 10.x.x.1,ping 10,ping-restart 120,ifconfig 10.x.x.2 255.255.255.0,peer-id 0&#039;
Mon Aug 17 16:34:41 2020 OPTIONS IMPORT: timers and/or timeouts modified
Mon Aug 17 16:34:41 2020 OPTIONS IMPORT: --ifconfig/up options modified
Mon Aug 17 16:34:41 2020 OPTIONS IMPORT: route options modified
Mon Aug 17 16:34:41 2020 OPTIONS IMPORT: route-related options modified
Mon Aug 17 16:34:41 2020 OPTIONS IMPORT: peer-id set
Mon Aug 17 16:34:41 2020 OPTIONS IMPORT: adjusting link_mtu to 1658
Mon Aug 17 16:34:41 2020 Outgoing Data Channel: Cipher &#039;grasshopper-cbc&#039; initialized with 256 bit key
Mon Aug 17 16:34:41 2020 Outgoing Data Channel: Using 512 bit message hash &#039;md_gost12_512&#039; for HMAC authentication
Mon Aug 17 16:34:41 2020 Incoming Data Channel: Cipher &#039;grasshopper-cbc&#039; initialized with 256 bit key
Mon Aug 17 16:34:41 2020 Incoming Data Channel: Using 512 bit message hash &#039;md_gost12_512&#039; for HMAC authentication
Mon Aug 17 16:34:41 2020 interactive service msg_channel=0
Mon Aug 17 16:34:41 2020 ROUTE_GATEWAY 10.x.x.129/255.255.255.192 I=11 HWADDR=00:1d:0f:be:fa:bb
Mon Aug 17 16:34:41 2020 open_tun
Mon Aug 17 16:34:41 2020 TAP-WIN32 device [Подключение по локальной сети 2] opened: \\.\Global\{B2D272BC-FB6A-4E7F-AEF5-3C0369CD9AB3}.tap
Mon Aug 17 16:34:41 2020 TAP-Windows Driver Version 9.21 
Mon Aug 17 16:34:41 2020 Notified TAP-Windows driver to set a DHCP IP/netmask of 10.x.x.2/255.255.255.0 on interface {B2D272BC-FB6A-4E7F-AEF5-3C0369CD9AB3} [DHCP-serv: 10.x.x.0, lease-time: 31536000]
Mon Aug 17 16:34:41 2020 Successful ARP Flush on interface [17] {B2D272BC-FB6A-4E7F-AEF5-3C0369CD9AB3}
Mon Aug 17 16:34:41 2020 MANAGEMENT: &gt;STATE:1597649681,ASSIGN_IP,,10.x.x.2,,,,
Mon Aug 17 16:34:46 2020 TEST ROUTES: 1/1 succeeded len=1 ret=1 a=0 u/d=up
Mon Aug 17 16:34:46 2020 MANAGEMENT: &gt;STATE:1597649686,ADD_ROUTES,,,,,,
Mon Aug 17 16:34:46 2020 C:\Windows\system32\route.exe ADD 10.x.x.0 MASK 255.255.248.0 10.x.x.1
Mon Aug 17 16:34:46 2020 ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=20 and dwForwardType=4
Mon Aug 17 16:34:46 2020 Route addition via IPAPI succeeded [adaptive]
Mon Aug 17 16:34:46 2020 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
Mon Aug 17 16:34:46 2020 Initialization Sequence Completed
Mon Aug 17 16:34:46 2020 MANAGEMENT: &gt;STATE:1597649686,CONNECTED,SUCCESS,10.x.x.2,10.x.x.190,1194,127.0.0.1,49281</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Сергей Оглы)]]></author>
			<pubDate>Mon, 17 Aug 2020 08:33:37 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/14684/#p14684</guid>
		</item>
		<item>
			<title><![CDATA[Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)]]></title>
			<link>https://forum.rutoken.ru/post/14651/#p14651</link>
			<description><![CDATA[<p><strong>Сергей Оглы</strong>, сложность в том, что тех.специалист по RutokenVpn сейчас отсутствует. Мы постараемся решить Ваш основной вопрос.&nbsp; <br />На данный момент могу предоставить лог-файл успешного подключения к серверу RutokenVpn с помощью ГОСТ сертификата, хранящегося на ЭЦП2.0&nbsp; + RutokenVpn клиент (win64). </p><div class="codebox"><pre><code>FRI AUG 07 22:24:31 2020 LOADING STATIC ENGINE SUPPORT
FRI AUG 07 22:24:31 2020 INITIALIZING OPENSSL SUPPORT FOR ENGINE &#039;GOST&#039;
&#039;
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 &#039;C:\\PROGRAM FILES (X86)\\RUTOKENVPNCLIENT\\RESOURCES\\APP\\EXECUTABLES\\RTPKCS11ECP.DLL&#039;
&#039;
FRI AUG 07 22:24:31 2020 PKCS#11: __PKCS11H_OPENSSL_SESSION_SETGOST - ENTERED OPENSSL_SESSION=02F09A78, EVP=02EF0BB0
&#039;
FRI AUG 07 22:24:31 2020 OUTGOING CONTROL CHANNEL AUTHENTICATION: USING 512 BIT MESSAGE HASH &#039;MD_GOST12_512&#039; FOR HMAC AUTHENTICATION
FRI AUG 07 22:24:31 2020 INCOMING CONTROL CHANNEL AUTHENTICATION: USING 512 BIT MESSAGE HASH &#039;MD_GOST12_512&#039; FOR HMAC AUTHENTICATION
&#039;
FRI AUG 07 22:24:31 2020 TCP/UDP: PRESERVING RECENTLY USED REMOTE ADDRESS: [AF_INET]91.х x.xx.xx:1194
&#039;
FRI AUG 07 22:24:31 2020 SOCKET BUFFERS: R=[65536-&gt;65536] S=[65536-&gt;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
&#039;
FRI AUG 07 22:24:31 2020 TLS: INITIAL PACKET FROM [AF_INET]91.xx.xx.xx:1194, SID=0D52FF08 5719DB4F
&#039;
FRI AUG 07 22:24:31 2020 VERIFY OK: DEPTH=1, C=RU, ST=MOSCOW, L=MOSCOW, CN=TETS
&#039;
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
&#039;
ENTER TEST TOKEN PASSWORD:&#039;

&#039;
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
&#039;
FRI AUG 07 22:24:36 2020 SENT CONTROL [VPNSERVER]: &#039;PUSH_REQUEST&#039; (STATUS=1)
&#039;
FRI AUG 07 22:24:36 2020 PUSH: RECEIVED CONTROL MESSAGE: &#039;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&#039;
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
&#039;
FRI AUG 07 22:24:36 2020 DATA CHANNEL ENCRYPT: CIPHER &#039;GRASSHOPPER-CBC&#039; INITIALIZED WITH 256 BIT KEY
FRI AUG 07 22:24:36 2020 DATA CHANNEL ENCRYPT: USING 512 BIT MESSAGE HASH &#039;MD_GOST12_512&#039; FOR HMAC AUTHENTICATION
FRI AUG 07 22:24:36 2020 DATA CHANNEL DECRYPT: CIPHER &#039;GRASSHOPPER-CBC&#039; INITIALIZED WITH 256 BIT KEY
FRI AUG 07 22:24:36 2020 DATA CHANNEL DECRYPT: USING 512 BIT MESSAGE HASH &#039;MD_GOST12_512&#039; FOR HMAC AUTHENTICATION
FRI AUG 07 22:24:36 2020 INTERACTIVE SERVICE MSG_CHANNEL=0
&#039;
FRI AUG 07 22:24:36 2020 OPEN_TUN
&#039;
FRI AUG 07 22:24:36 2020 TAP-WIN32 DEVICE [ETHERNET 2] OPENED: \\.\GLOBAL\{9173257A-7063-4C27-A86F-693536CF8051}.TAP
&#039;
FRI AUG 07 22:24:36 2020 TAP-WINDOWS DRIVER VERSION 9.21 
&#039;
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}
&#039;
FRI AUG 07 22:24:36 2020 DO_IFCONFIG, TT-&gt;DID_IFCONFIG_IPV6_SETUP=0
&#039;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Дмитрий Тимофеевский)]]></author>
			<pubDate>Fri, 07 Aug 2020 19:30:46 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/14651/#p14651</guid>
		</item>
		<item>
			<title><![CDATA[Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)]]></title>
			<link>https://forum.rutoken.ru/post/14649/#p14649</link>
			<description><![CDATA[<p><strong>Дмитрий Тимофеевский</strong>, доброго.<br />Спасибо за предоставленную информацию.<br />В итоге получается на Рутокене храниться не ГОСТ сертификат и клиент ваш не умеет работать с гост сертификатами?<br /></p><div class="codebox"><pre><code>Fri Aug 07 11:08:23 2020 Loading static ENGINE support
Fri Aug 07 11:08:23 2020 Initializing OpenSSL support for engine &#039;gost&#039;
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 &#039;c:\\Program Files (x86)\\RutokenVpnClient\\resources\\app\\executables\\rtPKCS11ECP.dll&#039;
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 &quot;Aktiv\x20Co\x2E/Rutoken\x20ECP/346abfb/Rutoken\x20ECP\x20\x3Cno\x20label\x3E/32303230&quot; 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</code></pre></div><p><span class="postimg"><a class="fancybox fancybox.image" rel="group" href="https://forum.rutoken.ru/uploads/images/2020/08/1a9873327e81cb2ae4e2760a8aaf198a.png"><img class="fb_img" src="https://forum.rutoken.ru/uploads/previews/2020/08/1a9873327e81cb2ae4e2760a8aaf198a.png" alt="" /></a></span></p>]]></description>
			<author><![CDATA[null@example.com (Сергей Оглы)]]></author>
			<pubDate>Fri, 07 Aug 2020 02:19:08 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/14649/#p14649</guid>
		</item>
		<item>
			<title><![CDATA[Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)]]></title>
			<link>https://forum.rutoken.ru/post/14646/#p14646</link>
			<description><![CDATA[<p><strong>Сергей Оглы</strong>, добрый день. </p><p>1) Пример конфигурационного файла RutokenVpn: конфигурация ГОСТ ( Enterprise) + Рутокен ЭЦП2.0</p><div class="codebox"><pre><code>client
verb 3
nobind
dev tun
remote 91.хх.хх.хх
&lt;ca&gt;
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
&lt;/ca&gt;
&lt;dh&gt;
-----BEGIN DH PARAMETERS-----
...
-----END DH PARAMETERS-----
&lt;/dh&gt;
remote-cert-tls server
&lt;tls-auth&gt;
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
...
-----END OpenVPN Static key V1-----
&lt;/tls-auth&gt;
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</code></pre></div><p>Надеюсь, это поможет Вам в решении вашей задачи.</p><p>2) Первичная генерация конфигурационного файла происходит на сервере, после этого файл подгружается в RutokenVpn client, <br />где модифицируется. </p><div class="codebox"><pre><code>pkcs11-providers &#039;C:\\Program Files (x86)\\RutokenVpnClient\\resources\\app\\executables\\rtPKCS11ECP.dll&#039;
pkcs11-id &#039;Aktiv\x20Co\x2E/Rutoken\x20ECP/375a3e2b/test/03651E3C312464CCA51397727E809E0EF4BE0E39\r&#039;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Дмитрий Тимофеевский)]]></author>
			<pubDate>Thu, 06 Aug 2020 12:47:15 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/14646/#p14646</guid>
		</item>
		<item>
			<title><![CDATA[Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)]]></title>
			<link>https://forum.rutoken.ru/post/14644/#p14644</link>
			<description><![CDATA[<p><strong>Павел Анфимов</strong>, публичного запроса вам не достаточно?</p>]]></description>
			<author><![CDATA[null@example.com (Сергей Оглы)]]></author>
			<pubDate>Thu, 06 Aug 2020 11:55:40 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/14644/#p14644</guid>
		</item>
		<item>
			<title><![CDATA[Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)]]></title>
			<link>https://forum.rutoken.ru/post/14643/#p14643</link>
			<description><![CDATA[<p><strong>Сергей Оглы</strong>, отправьте официальный запрос на info@rutoken.ru</p>]]></description>
			<author><![CDATA[null@example.com (Павел Анфимов)]]></author>
			<pubDate>Thu, 06 Aug 2020 11:52:05 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/14643/#p14643</guid>
		</item>
		<item>
			<title><![CDATA[Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)]]></title>
			<link>https://forum.rutoken.ru/post/14641/#p14641</link>
			<description><![CDATA[<p>Как дела с исходниками? или чтение лицензии не дается?</p>]]></description>
			<author><![CDATA[null@example.com (Сергей Оглы)]]></author>
			<pubDate>Thu, 06 Aug 2020 10:53:02 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/14641/#p14641</guid>
		</item>
		<item>
			<title><![CDATA[Re: OpenVPN + rutoken + неэкспортируемая пара ГОСТ = возможно? (решено!)]]></title>
			<link>https://forum.rutoken.ru/post/14634/#p14634</link>
			<description><![CDATA[<div class="quotebox"><cite>Павел Анфимов пишет:</cite><blockquote><p>Сергей Оглы, к сожалению, Рутокен VPN при работе по протоколам ГОСТ не использует механизм файлов *.ovpn.<br />Вся необходимая для подключения информация хранится на токене.</p></blockquote></div><p>Полнейшая чу.., либо сознательно вводите в заблуждение, либо зря получаете зарплату!<br />Внимательно посмотрев на ваш клиент(Рутокен VPN), оказалось ваш клиент не более чем графическая оснастка для OpenVPN, которая получает список ключей с рутокена и формирует файл %APPDATA%\rutokenvpnclient\clientvpn.ovpn, с которым и запускает процесс <strong>OpenVPN</strong>. Все параметры которые которые хранятся на рутокене - это маркер <strong>rutokenVpnClient</strong> по которому определяете годность ЭЦП для работы (через openvpn --show-pkcs11-ids ...) и маркер даты (через split(&quot;_&quot;)) в сабжекте по <strong>CN=</strong>.<br />Далее, перед запуском openvpn, формирется файл <strong>clientvpn.ovpn</strong> и добавляете <strong>pkcs11-providers</strong> и <strong>pkcs11-id</strong> (с параметром выбранной ЭЦП). И здесь начинается самое интересное... <br />Варианта два:<br />1. Дурите клиентов - не оч. хочется верить.<br />2. Есть дополнительный параметр в OpenVPN(в *.ovpn - начальной конфигурации) для запуска дополнительно механизма, такого как в stunnel (использующий методы ENGINE_load_pulibc_key и ENGINE_load_private_key),и&nbsp; не через pkcs11_helper (т.к. ваш родной клиент не определяет тип ключа)</p>]]></description>
			<author><![CDATA[null@example.com (Сергей Оглы)]]></author>
			<pubDate>Wed, 05 Aug 2020 10:22:09 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/14634/#p14634</guid>
		</item>
	</channel>
</rss>
