Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

  1. Включить поддержку токенов в strongSwan.
    Для этого в файле /etc/strongswan.d/charon/pkcs11.conf в блоке modules указать пути до интерфейсных библиотек используемых токенов:
    Блок кода
    pkcs11 {
    
        # Whether to load the plugin. Can also be an integer to increase the
        # priority of this plugin.
        load = yes
    
        ...
    
        # List of available PKCS#11 modules.
        modules {
            <название_модуля_1> {
                path = <путь_к_интерфейсной_библиотеке_токена_1>
            }
             <название_модуля_2> {
                path = <путь_к_интерфейсной_библиотеке_токена_2>
            } 
        }
    }
    Например, для токенов: Рутокен ЭЦП и Аладдин (закомментирован)  – файл /etc/strongswan.d/charon/pkcs11.conf может выглядеть так:
    Блок кода
    pkcs11 {
      load = yes
    
      modules {
        rutoken {
          path = /usr/lib/librtpkcs11ecp.so
        }
    #    aladdin { 
    #      path = /usr/lib/libjcPKCS11-2.so
    #    }
      }
    }
  2. Настроить strongSwan на использование закрытого ключа клиента, который находится на токене.
    Для этого указать в файле /etc/ipsec.secrets строку с описанием токена и закрытого ключа:
    - с указанием pin-кода в файле:
    Блок кода
    : PIN <токен_и_закрытый_ключ> <pin-код>
    - или более безопасный вариант, при котором pin-код будет вводиться пользователем в командной строке:
    Блок кода
    : PIN <токен_и_закрытый_ключ> %prompt
    где
      - <токен_и_закрытый_ключ> – задаётся по формату: %smartcard[<номер_слота_с_токеном>[@<название_модуля>]]:<идентификатор_ключевой_пары>
                                                                       где
                                                                         - <название_модуля> – название модуля в файле /etc/strongswan.d/charon/pkcs11.conf, в котором указана интерфейсная библиотека для работы с токеном;
                                                                         - <идентификатор_ключевой_пары> – идентификатор, с которым закрытый ключ записан на токен.
                                                                       Например:
    %smartcard0@rutoken:45                                                                   
      - <pin-код> – пользовательский pin-код токена для доступа к объектам на токене.
    Примечание

    Если к компьютеру подключается только один ключевой носитель, то можно достаточно использовать укороченный формат параметра <токен_и_закрытый_ключ>: %smartcard:<идентификатор_ключевой_пары>.

    Например: %smartcard:45


    Примеры файла /etc/ipsec.secrets:
     - для Рутокена с pin-кодом, указанным в файле:
    Блок кода
    : PIN %smartcard0@rutoken:45 12345678
     - для Рутокена с pin-кодом, вводимым пользователем:
    Блок кода
    : PIN %smartcard0@rutoken:45 %prompt
     - при подключении к компьютеру единственного ключевого носителя токена, поддержка которого включена в strongSwan, и с pin-кодом, вводимым пользователем:
    Блок кода
    : PIN %smartcard:45 %prompt
  3. Перезапустить strongSwan для применения настроек:
    Command

    sudo ipsec restart

  4. Если в файле /etc/ipsec.secrets указана опция %prompt, то после каждого запуска (перезапуска) strongSwan необходимо вручную вводить pin-код токена. 
    Для этого выполнить команду:
    Command
    sudo ipsec rereadsecrets
    Если strongSwan-сервер ещё не успел запуститься, то команда завершится без вывода какой-либо информации. Необходимо подождать 5-10 секунд и повторить команду "sudo ipsec rereadsecrets".
    Появится приглашение для ввода pin-кода:
    Блок кода
    Login to '%smartcard0@rutoken:45' required
    PIN:
    Ввести пользовательский pin-код токена, нажать клавишу <ENTER>.

    Выполнить команду, чтобы strongSwan перезагрузил настройки и установил соединение с VPN-сервером:
    Command

    sudo ipsec reload

...

  • для создания сертификата сервера server.cert.pem:
    Command

    sudo pki --pub --in /etc/ipsec.d/private/server.key.pem --type rsa \
      | sudo pki --issue --lifetime 3650 --cacert /etc/ipsec.d/cacerts/ca.cert.pem --cakey /etc/ipsec.d/private/ca.key.pem \
          --dn "CN=<IP-адрес_сервера>" --san "<IP-адрес_сервера>" --san "<IP-адрес_сервера>" --flag serverAuth --outform pem \
      | sudo tee /etc/ipsec.d/certs/server.cert.pem

  • для создания запроса на сертификат клиента client1.cert.csr:
    - при использовании пассивного ключевого носителя
    :
    Command

    openssl req -new -key client1.key.pem -out client1.cert.csr \
      -subj "/CN=<IP-адрес_клиента>"
    -addext "subjectAltName=IP.1:<IP-адрес_клиента>, IP.2:<IP-адрес_клиента>"

    - при использовании активного ключевого носителя:
    Command

    openssl req -new -engine pkcs11 -keyform engine -out client1.cert.csr \
      -key pkcs11:id="%<идентификатор_ключевой_пары>" \
      -subj "/CN=<IP-адрес_клиента>" -addext "subjectAltName=IP.1:<IP-адрес_клиента>, IP.2:<IP-адрес_клиента>"

 Не доступны ресурсы локальной сети при настройке strongSwan-клиента: rightsubnet=0.0.0.0/0

Если в настройках strongSwan-клиента (раздел 5.1) параметру rightsubnet присвоено значение 0.0.0.0/0 и при этом ресурсы локальной сети стали недоступны, то, возможно, решением проблемы будет присвоение параметру rightsubnet значения 0.0.0.1/0.