Это старая версия документа!


OpenVPN


Так как в SlackWare 12.0 OpenVPN уже установлен (если нет, просто качаем и ставим :), просто переходим к его настройке:

  • eth0(22.22.22.22) - внешний интерфейс и IP-адрес сервера
  • eth1(192.168.10.250) - внутренний интерфейс и IP-адрес сервера
  • tap0(192.168.111.1) - VPN интерфейс и IP-адрес сервера
  • 192.168.10.244 - внутренний DNS сервер

Генерация сертификатов и ключей

Если у Вас нет необходимости создавать свой центр сертификации, и вы будете генерировать ключи только для OpenVPN, можно воспользоваться набором скриптов Easy RSA, который поставляются в комплекте с OpenVPN. Они находятся в директории с документацией: /usr/share/doc/openvpn-версия/easy-rsa.

В первую очередь следует перейти в эту директорию.

 # cd /usr/share/doc/openvpn-2.0.5/easy-rsa

Теперь отредактируйте файл vars.

 export D=`pwd`
 export KEY_CONFIG=$D/openssl.cnf
 export KEY_DIR=/etc/openvpn/keys
 echo NOTE: when you run ./clean-all, I will be doing a rm -rf on $KEY_DIR
 export KEY_SIZE=1024
 export KEY_COUNTRY=RU
 export KEY_PROVINCE=RU
 export KEY_CITY=MOSCOW
 export KEY_ORG="MYORG"
 export KEY_EMAIL="it@myorg.ru"

Этот файл предназначен для установок переменных среды окружения, перед генерацией ключей. Запускаем его при помощи точки:

 # . ./vars
 NOTE: when you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/keys
 #

Теперь запускаем программу очистки (на всякий пожарный, т.е. очистит весь каталог с ключами).

 # ./clean-all
 #

Осталось запустить процесс генерации ключей и сертификата СА.

 # ./build-ca
 Generating a 1024 bit RSA private key
 ..................++++++
 ......................................................++++++
 writing new private key to 'ca.key'
 -----
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [RU]:
 State or Province Name (full name) [RU]:
 Locality Name (eg, city) [MOSCOW]:
 Organization Name (eg, company) [MYORG]:
 Organizational Unit Name (eg, section) []:myorg
 Common Name (eg, your name or your server's hostname) []:vpnsrv.myorg
 Email Address [it@myorg.ru]:
 #

Некоторые поля заполняются автоматически, ведь не зря мы изменяли содержимое файла vars. Хотя ответы по умолчанию можно было поместить в конфигурационный файл программы openssh ― openssl.cnf.

В директории /etc/openvpn появилась директория keys, в которой находятся файлы сертификата и ключ. Теперь следует создать ключ и сертификат для сервера.

 # ./build-key-server vpnsrv.myorg
 Generating a 1024 bit RSA private key
 ...++++++
 ..++++++
 writing new private key to 'vpnsrv.myorg.key'
 -----
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [RU]:
 State or Province Name (full name) [RU]:
 Locality Name (eg, city) [MOSCOW]:
 Organization Name (eg, company) [MYORG]:
 Organizational Unit Name (eg, section) []:myorg
 Common Name (eg, your name or your server's hostname) []:vpnsrv.myorg
 Email Address [it@myorg.ru]: 
 
 Please enter the following 'extra' attributes
 to be sent with your certificate request
 A challenge password []:password
 An optional company name []:
 Using configuration from /usr/share/doc/openvpn-2.0.5/easy-rsa/openssl.cnf
 Check that the request matches the signature
 Signature ok
 The Subject's Distinguished Name is as follows 
 
 countryName           :PRINTABLE:'RU'
 stateOrProvinceName   :PRINTABLE:'RU'
 localityName          :PRINTABLE:'MOSCOW'
 organizationName      :PRINTABLE:'MYORG'
 organizationalUnitName:PRINTABLE:'myorg'
 commonName            :PRINTABLE:'vpnsrv.myorg'
 emailAddress          :IA5STRING:'it@myorg.ru'
 Certificate is to be certified until Dec 11 14:31:19 2015 GMT (3650 days)
 Sign the certificate? [y/n]:y
 
 1 out of 1 certificate requests certified, commit? [y/n]y
 Write out database with 1 new entries
 Data Base Updated
 #

Сгенерируем сертификаты и ключи для клиентской машины. (для каждой новой машины лучше генерировать сертификат по ее имени)

 # ./build-key mashina_01
 Generating a 1024 bit RSA private key
 .......++++++
 .............................................++++++
 writing new private key to 'mashina_01.key'
 -----
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [RU]:
 State or Province Name (full name) [RU]:
 Locality Name (eg, city) [MOSCOW]:
 Organization Name (eg, company) [MYORG]:
 Organizational Unit Name (eg, section) []: myorg
 Common Name (eg, your name or your server's hostname) []:mashina_01
 Email Address [it@myorg.ru]:user@yandex.ru 
 
 Please enter the following 'extra' attributes
 to be sent with your certificate request
 A challenge password []:password
 An optional company name []:
 Using configuration from /usr/share/doc/openvpn-2.0.5/easy-rsa/openssl.cnf
 DEBUG[load_index]: unique_subject = "yes"
 Check that the request matches the signature
 Signature ok
 The Subject's Distinguished Name is as follows
 countryName           :PRINTABLE:'RU'
 stateOrProvinceName   :PRINTABLE:'RU'
 localityName          :PRINTABLE:'MOSCOW'
 organizationName      :PRINTABLE:'MYORG'
 commonName            :PRINTABLE:'mashina_01'
 emailAddress          :IA5STRING:'user@yandex.ru'
 Certificate is to be certified until Dec 11 14:39:59 2015 GMT (3650 days)
 Sign the certificate? [y/n]:y 
 
 1 out of 1 certificate requests certified, commit? [y/n]y
 Write out database with 1 new entries
 Data Base Updated
 #

В заключении следует создать Diffie Hellman параметры.

 # ./build-dh
 Generating DH parameters, 1024 bit long safe prime, generator 2
 This is going to take a long time
 ..+.......................................................................+...+
 .....+.....+...................................................................
 ............................+..................+.+...........+.................
 ...+.....++*++*++*
 #

И создать секретный ключ.

 # openvpn --genkey --secret /etc/openvpn/keys/ta.key

Посмотрим содержимое директории /etc/openvpn/keys:

 
 # ls /etc/openvpn/keys/
 01.pem                ca.key               index.txt.old
 02.pem                dh1024.pem           serial      
 03.pem                mashina_01.crt       serial.old
 vpnsrv.myorg.crt      mashina_01.csr       ta.key 
 vpnsrv.myorg.csr      mashina_01.key       
 vpnsrv.myorg.key      index.txt            
 ca.crt                index.txt.attr
                       index.txt.attr.old
 #
Навигация
Печать/экспорт
QR Code
QR Code wiki:articles:openvpn (generated for current page)