В ранее опубликованной заметке я показ и задокумментировал какие действия нужно сделать дабы на Windows Server 2016 развернуть OpenVPN сервер версии 2.6.12, теперь если в боевой среде мне нужно будет это сделать у меня есть мое руководство.

Я специально разбиваю большую задачу на под задачи — так легче воспринимать информацию.

Далее я покажу, как нужно сформировать ключи для клиентов OpenVPN которые будет подключаться к серверу OpenVPN.

on srv-s2016a (OpenVPN сервер)

Win + X -> Command Prompt (Admin)

C:\Windows\system32>

C:\Windows\system32>cd /d "c:\Program Files\OpenVPN\easy-rsa"

Шаг №1: Запускаю среду EasyRSA Shell на системе, которая является OpenVPN сервером:

c:\Program Files\OpenVPN\easy-rsa>EasyRSA-Start.bat

Welcome to the EasyRSA 3 Shell for Windows.

Easy-RSA 3 is available under a GNU GPLv2 license.

Invoke 'easyrsa' to call the program. Without commands, help is displayed.

Using directory: c:/Program Files/OpenVPN/easy-rsa

EasyRSA Shell

#

Шаг №2: Генерирую запрос на создание сертификата для alektest:

# ./easyrsa gen-req alektest

Using Easy-RSA 'vars' configuration:

* c:/Program Files/OpenVPN/easy-rsa/vars

...+.........+...+++++++++++++++++++++++++++++++++++++++*.+..+.+.....+...+....+..+.+...+++++++++++++++++++++++++++++++++++++++*...........+....+...........+...+.+..+....+.....+...+.............+...+.....+.........+.+......+.....+.........................+...+...+..................+..+....+...+...+.....+....+...+..+.+.....+.........+....+......+...........+...+.........+...+............+.+.....+.+........+...+...+....+..+...+......+.+...+..+.............+...+..+..........+..+...+................+..+...+.+.....+.........+......+.+..+..........+..+...+......+.+......+.....+..........+...+..+....+...+...........+....+........+..........+..................+......+.....+.+.........+...+...+........+....+..+...+..........+....................+.+...........+.+...+...........+....+..+.......+........+...+.+...+..+......+.......+.....+.......+.........+..+...+.+...+...+........+....+..+.+...............++++++

...+..+...+....+...+...+.................+.+.....+......+......+....+.........+++++++++++++++++++++++++++++++++++++++*....+.....+....+..+...............+++++++++++++++++++++++++++++++++++++++*......+...+..+...+.............+...............+...+...........+.+........+.+......+..+.......+.........+...........+......+....+..................+.....+......+.+......+.................+.+..+...............+.........+....+.....+.......+..+...............+......+....+......+.....+.+.....+.+..+.+......+......+...+..+....+...+..+..........+...+..+....+.....+....+..+......+............+...+..........++++++

Enter PEM pass phrase: указываю пароль, к примеру Aa1234567aA

Verifying - Enter PEM pass phrase: указываю пароль, к примеру Aa1234567aA

-----

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.

-----

Common Name (eg: your user, host, or server name) [alektest]: указываю именование клиента, к примеру alektest

Notice

------

Private-Key and Public-Certificate-Request files created.

Your files are:

* req: c:/Program Files/OpenVPN/easy-rsa/pki/reqs/alektest.req

* key: c:/Program Files/OpenVPN/easy-rsa/pki/private/alektest.key

 

 

EasyRSA Shell

#

Шаг №3: Подписываю сервером клиентский запрос на получение сертификата пользователя:

# ./easyrsa sign-req client alektest

Using Easy-RSA 'vars' configuration:

* c:/Program Files/OpenVPN/easy-rsa/vars

Please check over the details shown below for accuracy. Note that this request

has not been cryptographically verified. Please be sure it came from a trusted

source or that you have verified the request checksum with the sender.

You are about to sign the following certificate:

  Requested CN:   'alektest'

  Requested type: 'client'

  Valid for:      '825' days

subject=

    commonName                = alektest

Type the word 'yes' to continue, or any other input to abort.

  Confirm request details: соглашаюсь и набираю yes

Using configuration from c:/Program Files/OpenVPN/easy-rsa/pki/9d0be3b3/temp.0.1

Enter pass phrase for c:/Program Files/OpenVPN/easy-rsa/pki/private/ca.key: указываю пароль от приватного ключа, т.е. в моем случае 712mbddr@

Check that the request matches the signature

Signature ok

The Subject's Distinguished Name is as follows

commonName            :ASN.1 12:'alektest'

Certificate is to be certified until Apr 18 08:32:11 2027 GMT (825 days)

Write out database with 1 new entries

Database updated

Notice

------

Certificate created at:

* c:/Program Files/OpenVPN/easy-rsa/pki/issued/alektest.crt

EasyRSA Shell

#

На заметку: После на клиентскую систему, которая планируется подключаться к OpenVPN серверу нужно передать:

  • Ключ (C:\Program Files\OpenVPN\easy-rsa\pki\private\alektest.key)
  • Сертификат (c:/Program Files/OpenVPN/easy-rsa/pki/issued/alektest.crt)
  • Пароль от этого ключа (Aa1234567aA)

Шаг №4: Если вы хотите сгенерировать ключ, не защищенный паролем, нужно выполнить команду:

./easyrsa gen-req имя_клиента nopass

и на забыть после

./easyrsa sign-req client alektest

# ./easyrsa gen-req alektest nopass

Using Easy-RSA 'vars' configuration:

* c:/Program Files/OpenVPN/easy-rsa/vars

.....+.+...+...+........+....+............+.....+.+.....+.........+.+.....+...+......+.+............+..+...+++++++++++++++++++++++++++++++++++++++*...+..+.......+.....+......+.......+..+............+...+.+.....+............+.........+.+........+....+......+......+.....+...+...+.......+.....+...+.............+......+.........+..+.........+.+............+..+....+..+...+....+.....+.+.................+...+......................+........+.+++++++++++++++++++++++++++++++++++++++*.+...+....+......+......+........+......+.......+........+....+..+.+..+.......+.........+..+..........+...+..+.......+.....+.......+...+......+..+....+.........+............+.........+.....+..........+.....+......+...+....+..++++++

....+...+.....+....+...+..+...+......+..........+++++++++++++++++++++++++++++++++++++++*......+.+........+......................+...+...........+...+...+....+...+..+++++++++++++++++++++++++++++++++++++++*.+.........+.....+.+.....+.+......+..+.+.....+.......+..+.......+...+...+........+....++++++

-----

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.

-----

Common Name (eg: your user, host, or server name) [alektest]: указываю именование клиента, в моем случае — это alektest

mv: replace `c:/program files/openvpn/easy-rsa/pki/reqs/alektest.req', overriding mode 0666? y

Notice

------

Private-Key and Public-Certificate-Request files created.

Your files are:

* req: c:/Program Files/OpenVPN/easy-rsa/pki/reqs/alektest.req

* key: c:/Program Files/OpenVPN/easy-rsa/pki/private/alektest.key

EasyRSA Shell

#

На заметку: В этом случае на клиентскую систему, которая планируется подключаться к OpenVPN серверу нужно передать:

  • Ключ (C:\Program Files\OpenVPN\easy-rsa\pki\private\alektest.key)
  • Сертификат (c:/Program Files/OpenVPN/easy-rsa/pki/issued/alektest.crt)

Шаг №5: Если нужно отозвать сертификат клиента:

# ./easyrsa revoke alektest

Using Easy-RSA 'vars' configuration:

* c:/Program Files/OpenVPN/easy-rsa/vars

WARNING

=======

This process is destructive!

These files will be MOVED to the 'revoked' sub-directory:

* c:/Program Files/OpenVPN/easy-rsa/pki/issued/alektest.crt

* c:/Program Files/OpenVPN/easy-rsa/pki/private/alektest.key

* c:/Program Files/OpenVPN/easy-rsa/pki/reqs/alektest.req

These files will be DELETED:

All PKCS files for commonName : alektest

The inline credentials files:

* c:/Program Files/OpenVPN/easy-rsa/pki/alektest.creds

* c:/Program Files/OpenVPN/easy-rsa/pki/inline/alektest.inline

The duplicate certificate:

* c:/Program Files/OpenVPN/easy-rsa/pki/certs_by_serial/074AE614B0D9FEC6CDF2BABF4E31F668.pem

Please confirm that you wish to revoke the certificate

with the following subject:

subject=

    commonName                = alektest

    serial-number             = 074AE614B0D9FEC6CDF2BABF4E31F668

    Reason: None given

Type the word 'yes' to continue, or any other input to abort.

    Continue with revocation: набираем yes и нажимаем клавишу "ENTER"

Using configuration from c:/Program Files/OpenVPN/easy-rsa/pki/4247112c/temp.0.1

Enter pass phrase for c:/Program Files/OpenVPN/easy-rsa/pki/private/ca.key: указываем пароль 712mbddr@

Revoking Certificate 074AE614B0D9FEC6CDF2BABF4E31F668.

Database updated

Notice

------

                    * IMPORTANT *

Revocation was successful. You must run 'gen-crl' and upload

a new CRL to your infrastructure in order to prevent the revoked

certificate from being accepted.

EasyRSA Shell

#

Шаг №6: Если клиент не подключается к серверу, тогда нужно на сервере необходимо:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

  • Name: IPEnableRouter
  • Type: REG_DWORD

изменить значение с 0 на 1

после сохранить все открытые окна на сервере и отправить его в перезагрузку

и только после OpenVPN соединения клиентов станут доступными.

На этом заметка завершена, с уважением автор блога Олло Александр aka ekzorchik.

От ekzorchik