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

Ключ

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

...

  1. Подключить ключевой носитель к клиентскому узлу.
  2. Записать на ключевой носитель сертификат и закрытый ключ клиента:
    Command

    p11tool --login --write --load-certificate="<путь_к_клиентскому_сертификату>" --id=<идентификатор_объекта> --label="<название_объекта>"

    p11tool --login --write --load-privkey="<путь_к_клиентскому_закрытому_ключу>" --id=<идентификатор_объекта> --label="<название_объекта>"

    где
      - <идентификатор_объекта> – идентификатор, с которым сертификат и ключ будут храниться на токене;
      - <название_объекта> – название, с которым сертификат и ключ будут храниться на токене.

    Пример команд:
    Command

    p11tool --login --write --load-certificate="client.cert.pem" --id=45 --label="mykey"

    p11tool --login --write --load-privkey="client.key.pem" --id=45 --label="mykey"

  3. Включить поддержку токенов в 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 {
            <название_модуля> {
                path = <путь_к_интерфейсной_библиотеке_токена>
            }
        }
    }
    Например, для Рутокена файл /etc/strongswan.d/charon/pkcs11.conf может выглядеть так:
    Блок кода
    pkcs11 {
      load = yes
    
      modules {
        rutoken {
          path = /usr/lib/librtpkcs11ecp.so
        }
      }
    }
  4. Настроить strongSwan на использование закрытого ключа клиента, который находится на токене.
    Для этого в файле /etc/ipsec.secrets указать строку с описанием токена и закрытого ключа:
    Блок кода
    : PIN <токен_и_закрытый_ключ> <pin-код_токена>
    где
      - <токен_и_закрытый_ключ> – задаётся по формату: %smartcard[<номер_слота_с_токеном>[@<название_модуля>]]:<идентификатор_объекта>
      - <название_модуля> – вышезаданное в настройках название модуля;
      - <идентификатор_объекта> – идентификатор закрытого ключа, хранящегося на токене.

    Пример описания для вышеприведённого Рутокена:
    Блок кода
    : PIN %smartcard0@rutoken:45 12345678
  5. Перезапустить strongSwan для применения настроек:
    Command

    sudo systemctl restart strongswan-starter


Для просмотра состояния установленного VPN-соединения используется команда:

Command

sudo ipsec status

Пример вывода команды:

Блок кода
Routed Connections:
      client{1}:  ROUTED, TUNNEL, reqid 1
      client{1}:   10.192.6.110/32 === 10.1.1.0/24
Security Associations (1 up, 0 connecting):
      client[1]: ESTABLISHED 5 minutes ago, 10.192.6.110[CN=10.192.6.110]...10.192.6.108[10.192.6.108]
      client{2}:  INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: cd036fde_i c829d2f1_o
      client{2}:   10.1.1.1/32 === 10.1.1.0/24

Либо для вывода более подробной информации о соединении:

Command

sudo ipsec statusall

Раскрыть
titleПример вывода команды...
Блок кода
Status of IKE charon daemon (strongSwan 5.9.8, Linux 6.1.141-1-generic, x86_64):
  uptime: 6 minutes, since Sep 25 08:47:09 2025
  malloc: sbrk 3805184, mmap 405504, used 2036464, free 1768720
  worker threads: 10 of 16 idle, 6/0/0/0 working, job queue: 0/0/0/0, scheduled: 2
  loaded plugins: charon test-vectors ldap pkcs11 aes rc2 sha2 sha1 md5 mgf1 random nonce x509 revocation constraints pubkey pkcs1 pkcs7 pkcs12 pgp dnskey sshkey pem openssl gcrypt pkcs8 af-alg fips-prf gmp curve25519 agent chapoly xcbc cmac hmac kdf ctr ccm gcm drbg curl attr kernel-netlink resolve socket-default connmark forecast farp stroke updown eap-identity eap-aka eap-md5 eap-gtc eap-mschapv2 eap-radius eap-tls eap-ttls eap-tnc xauth-generic xauth-eap xauth-pam tnc-tnccs dhcp lookip error-notify certexpire led addrblock unity counters
Listening IP addresses:
  10.192.6.110
Connections:
      client:  %any...10.192.6.108  IKEv2
      client:   local:  [CN=10.192.6.110] uses public key authentication
      client:    cert:  "CN=10.192.6.110"
      client:   remote: [10.192.6.108] uses public key authentication
      client:   child:  dynamic === 10.1.1.0/24 TUNNEL
Routed Connections:
      client{1}:  ROUTED, TUNNEL, reqid 1
      client{1}:   10.192.6.110/32 === 10.1.1.0/24
Security Associations (1 up, 0 connecting):
      client[1]: ESTABLISHED 5 minutes ago, 10.192.6.110[CN=10.192.6.110]...10.192.6.108[10.192.6.108]
      client[1]: IKEv2 SPIs: d770b3aced125439_i* 20eee7bd8ad5d3a6_r, public key reauthentication in 2 hours
      client[1]: IKE proposal: AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
      client{2}:  INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: cd036fde_i c829d2f1_o
      client{2}:  AES_CBC_256/HMAC_SHA1_96, 0 bytes_i, 1092 bytes_o (13 pkts, 313s ago), rekeying in 37 minutes
      client{2}:   10.1.1.1/32 === 10.1.1.0/24