OpenVPN ID-kaardi skriptid

Allikas: lillepuu.com

Juhendi koostamisel kasutatud tarkvaraversioonid:

  • Server: OpenSUSE 11.3 (openvpn-2.1.1-4.1.i586)
  • Klient:
    • Windows XP SP3 x86 (openvpn-2.1.2, ID-kaart 1.4.92, ID-kaardi draiver 0.8.7 Firefoxile)
    • Windows 7 x64 (openvpn-2.1.2, ID-kaart 1.5.71, ID-kaardi draiver 0.8.7 Firefoxile)

Võrk

  • OpenVPN serveri IP: 192.168.99.90
  • OpenVPN võrk: 172.19.0.0/255.255.0.0

Eelduseks on OpenVPN 2.1 või uuema kasutamine nii kliendil kui serveril.

Juhendi koostamise aluseks on http://kuutorvaja.eenet.ee/wiki/OpenVPN_serveri_kasutamine_Eesti_ID-kaardiga, sealt leiab teema kohta põhjalikumat infot. Antud juhend on mõeldud lihtsalt ja kiirelt OpenVPN ID-kaardi toe seadistamiseks.

Server

# cat JUUR-SK.PEM.cer ESTEID-SK.PEM.cer ESTEID-SK\ 2007.PEM.cer KLASS3-SK.PEM.cer KLASS3-SK_2010.pem > /etc/openvpn/SK-ca.pem
  • paigaldame tls-verify skripti, muuda skriptis isikukood enda omaks

# cat /etc/openvpn/tls-verify-esteid.pl

#!/usr/bin/perl
($depth, $x509) = @ARGV;
if ($depth == 0) {
  if ($ENV{X509_0_serialNumber} eq "3780917xxxx") {
    exit 0;
  }
  exit 1;
}
exit 0;
  • openvpn serveri konfiguratsioonifaili näidis:
local 192.168.99.90
port 1194
dev tun0
ca /etc/openvpn/keys/SK-ca.pem
dh /etc/openvpn/keys/dh2048.pem
mode server
tls-server
tls-verify /etc/openvpn/tls-verify-esteid.pl
ifconfig 172.19.0.1 172.19.0.2
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3

client-config-dir /etc/openvpn/ccd
route 172.19.0.0 255.255.0.0


Windowsi klient

  • Kopeeri serverist SK-ca.pem c:\Program Files\OpenVPN\config kataloogi (näiteks FileZilla abil)
  • openvpni konfigratsiooni lisatava pkcs11-id stringi hankimiseks käivita openvpn windowsi käsurealt (cmd.exe)
cd C:\Program Files\OpenVPN\bin
openvpn --show-pkcs11-ids c:\WINDOWS\system32\opensc-pkcs11.dll

kui ID-kaart on korrektselt seadistatud, kuvatakse väljundis midagi sellist:

The following objects are available for use.
Each object shown below may be used as parameter to
--pkcs11-id option please remember to use single quote mark.
Certificate
      DN:             /C=EE/O=ESTEID/OU=authentication/CN=LILLEPUU,MARTIN,3780917xxxx/SN=LILLEPUU/GN=MARTIN/serialNumber=3780917xxxx
      Serial:         xxxxxx54
      Serialized id:  AS\x20Sertifitseerimiskeskus/PKCS\x2315\x20emulated/A000xxxx/MARTIN\x20LILLEPUU\x20\x28PIN1\x29/01
Certificate
      DN:             /C=EE/O=ESTEID/OU=digital signature/CN=LILLEPUU,MARTIN,37809170293/SN=LILLEPUU/GN=MARTIN/serialNumber=3780917xxxx
      Serial:         xxxxxx55
      Serialized id:  AS\x20Sertifitseerimiskeskus/PKCS\x2315\x20emulated/A000xxxx/MARTIN\x20LILLEPUU\x20\x28PIN2\x29/02

Vajalik rida on PIN1 sisaldav Serialized id (esimene), mis tuleb lisada openvpn kliendi pkcs11-id väärtuseks, asendades \ -> \\


  • Kliendi näidiskonfiguratsioonifail (client.ovpn):
client
dev tun
proto udp
remote 192.168.99.90
resolv-retry infinite
nobind
persist-key
persist-tun
ca SK-CA.pem
pkcs11-providers  c:\\windows\\system32\\opensc-pkcs11.dll
pkcs11-id "AS\\x20Sertifitseerimiskeskus/PKCS\\x2315\\x20emulated/A000xxxx/MARTIN\\x20LILLEPUU\\x20\\x28PIN1\\x29/01" 
pkcs11-pin-cache 300
auth-retry nointeract 
comp-lzo
verb 3
  • esmaseks testimiseks võib käivitada OpenVPN käsurealt:
cd \Program Files\OpenVPN\config
..\bin\openvpn.exe --config client.ovpn
  • Lae PKCS11 pin küsimise toega OpenVPN GUI [1]
  • Käivita vpn ühendus, kui kõik läks plaanipäraselt siis küsitakse pin1 ja luuakse vpn ühendus


Viited, mille alusel see juhend kokku pandud on:

Märkus1: Tõenäoliselt töötab ülaltoodud juhend ka Windowsi serveriga, tls-verify skripti käivitamiseks saab kasutada näiteks ActivePerli

Märkus2: kui ID-kaart lugejast eemaldada, toimib aktiivne openvpn ühendus vaikimisi veel 5 minutit. Võtme kontrolli sagedust saab kliendi konfiguratsioonis muuta pkcs11-pin-cache <sekundid> parameetriga.

Märkus3: hetkel ei ole võimalik serveris OCSP abil kontrollida ID-kaardi kliendisertifikaadi kehtivust, kuna tls-verify skriptile ei edastata parameetrina sertifikaati [2]


--martin 29. august 2010, kell 07:48 (UTC)