В ранее опубликованной заметке
я показ и задокумментировал какие действия нужно сделать дабы на 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.