Меню

Настройка server conf в openvpn



Настройка OpenVPN

Нам надо соединить удаленного сотрудника к рабочей сети. Это делается в том числе с помощью VPN, в нашем случае, OpenVPN. Это бесплатный, достаточно надежный и не очень сложный в настройке сервер и клиент VPN.

Это статья старая. Ссылка на актуальную статью по настройке OpenVPN.

Структура нашей сети такая:

  • Сеть: 192.168.10.0/24
  • IP-адрес внешнего интерфейса сервера OpenVPN: 444.333.222.111
  • Порт, на котором «висит» OpenVPN: 1194 udp (стандартный для OpenVPN)
  • IP-адрес DNS внутренней сети: 192.168.10.100
  • Сеть VPN: 10.8.0.0/24 (стандартная для OpenVPN)
  • Удаленный сотрудник без определенного адреса

Начальная установка простая для любой популярной операционной системы:

  • CentOS: yum install openvpn (правда, это я немного лукавлю насчет просто, читайте ниже)
  • FreeBSD: cd /usr/ports/security/openvpn -> make -> make install
  • Windows: ну тут уж все специалисты!

Пожалуй, не скажу ничего про Mac OS, т.к. не сталкивался лично.

Установка OpenVPN в Linux

Я использую CentOS, поэтому могу описать установку именно для этого Linux.

Как и везде, скачать пакет и установить не есть гуд, т.к. его будет труднее обновлять. А т.к. » yum install openvpn » выдаст фиг, надо нам подключить репозиторий.

Вариант 1 — попробовать поставить репозиторий с самого openvpn.net:

# cd /etc/yum.repos.d
# wget http://repos.openvpn.net/repos/yum/conf/repos.openvpn.net-CentOS6-snapshots.repo
# yum install openvpn

Эти команды см. в файле http://repos.openvpn.net/repos/yum/conf/repos.openvpn.net-CentOS6-snapshots.txt.

Скоре всего, это у вас не прокатит 🙂

Вариант 2 — репозиторий RPMForge

# rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.5.1-1.el5.rf.i386.rpm

# rpm -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm

# rpm –import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt

Проверим, чего наставили:

Особо не увлекайтесь всякими репозиториями 🙂 Чем меньше их, тем лучше.

Вариант 3 — сложные случаи — попробуйте посмотреть http://pkgs.org/search/?keyword=openvpn.

Итак, чтобы вы ни делали, вы должны успешно выполнить команду:

# yum install openvpn

Installed:
openvpn.i386 0:2.3-3

Dependency Installed:
pkcs11-helper.i686 0:1.08-1.el6.rf

Первичная настройка OpenVPN

Независимо от того, на FreeBSD, Linux или Windows, общие шаги по созданию необходимой инфраструктуры для OpenVPN практически одинаковы.

Копируем файл конфигурации:

# cp /usr/share/doc/openvpn-*/sample-config-files/server.conf /etc/openvpn/

Копируем пакет управления RSA ключами из поставки OpenVPN в /etc/openvpn/easy-rsa :

# cp /usr/share/doc/openvpn-*/easy-rsa/2.0/ /etc/openvpn/
# cd /etc/openvpn/easy-rsa
# cp openssl-1.0.0.cnf openssl.cnf
# mkdir keys

Редактируем файл /etc/openvpn/rsa-keys/vars :

export KEY_COUNTRY=»RU»
export KEY_PROVINCE=»RU»
export KEY_CITY=»Moscow»
export KEY_ORG=»Company»
export KEY_EMAIL=»abuse@company-domain.com»
export KEY_EMAIL=abuse@company-domain.com
export KEY_CN=changeme
export KEY_NAME=changeme
export KEY_OU=Office
export PKCS11_MODULE_PATH=changeme
export PKCS11_PIN=1234

Далее следует экспортировать переменные KEY_*, они необходимы для работы скриптов build-*, генерирующих сертификаты. На этом шаге могу отметить, что у меня не сразу получилось экспортировать переменные из файла /etc/openvpn/easy-rsa/keys , пришлось делать скрипт с экспортом системной переменной $PATH, но, как мне кажется, это чисто у меня такая проблема была (в Windows-версии C:Program FilesOpenVPNeasy-rsavars.bat переменные экспортировались без проблем):

# cd /etc/openvpn/easy-rsa
# ./vars

Дополнение: прочел следующее на http://www.lissyara.su/?id=1549: Внимание! Если у вас по умолчанию не баш, то перед следующими операциями нужно набрать в консоли «sh», советую для «100-%-ного» результата всё же наверняка сделайте это, даже если у вас шелл sh. Загружаем переменные в оболочку (для выхода из режима sh ввести exit):
# cd /etc/openvpn/easy-rsa
# sh
# . ./vars

В Windows откройте командную строку «cmd» :

cd «C:Program FilesOpenVPNeasy-rsa
vars.bat

Отмечу на всякий случай, что если вы не можете выполнить какой-либо скрипт, вероятнее всего у него просто нет прав на запуск, например, при запуске ./build-ca я сначала получил такое сообщение:

Please edit the vars script to reflect your configuration,
then source it with «source ./vars».
Next, to start with a fresh PKI configuration and to delete any
previous certificates and keys, run «./clean-all».
Finally, you can run this tool (pkitool) to build certificates/keys.

О чем это? А просто-напросто переменные из файла vars не экпортировались, т.к. vars не выполнился, т.к. ему нужны права на запуск, т.е. «chmod +x vars». Мне пришлось дать права на запуск нескольким файлам, в том числе:
build-ca, clean-all, pkitool, vars, whichopensslcnf.

Удаляем все предыдущие файлы ключей и сертифкатов из директории /etc/openvpn/easy-rsa/keys (эта директория указана в переменной KEY_DIR файла vars):

# chmod +x clean-all
# ./clean-all

Создаем сертификат подлинности (Certificate Authority) сервера:

# chmod +x build-ca
# chmod +x pkitool
# ./build-ca

.++++++
. ++++++
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) [Company]:
Organizational Unit Name (eg, section) [Office]:
Common Name (eg, your name or your server’s hostname) [changeme]:VPNServer
Name [changeme]:Name
Email Address [abuse@company-domain.com]:

Ок, мы вроде бы все сделали.

Читайте также:  Plex dlna сервер настройка

Будьте внимательны при заполнени данных сертификатов, поле Common Name обязательно к заполнению, причем для сервера оно должно быть одно, а для клиента другое. Например в поле Common Name при генерации сертификата X.509 для сервера можно написать «server», а для клиента соотвественно «client».

Создаем сертификат X.509 для сервера.

# chmod +x build-key-server
# ./build-key-server server
Generating a 1024 bit RSA private key
.++++++
. ++++++
writing new private key to ‘server.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) [Company]:
Organizational Unit Name (eg, section) [Office]:
Common Name (eg, your name or your server’s hostname) [server]:
Name [changeme]:IAmServer
Email Address [abuse@company-domain.com]:

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/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:’Company’
organizationalUnitName:PRINTABLE:’Office’
commonName :PRINTABLE:’server’
name :PRINTABLE:’IAmServer’
emailAddress :IA5STRING:’abuse@company-domain.com’
Certificate is to be certified until Apr 7 12:15:29 2022 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

Для создания файла параметров Диффи-Хелмана, предназначенного для обеспечения более надежной защиты данных при установке соединения клиента с сервером, выполняем:

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

Создаем сертификаты для удаленного клиента:

# ./build-key-pass Client1
Generating a 1024 bit RSA private key
. ++++++
. ++++++
writing new private key to ‘Client1.key’
.

.
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

На последок генерируем общий для клиента и сервера TLS-ключ, служащий дополнительной защитой. TLS предоставляет возможности аутентификации и безопасной передачи данных через Интернет с использованием криптографических средств. Часто происходит лишь аутентификация сервера, в то время как клиент остается неаутентифицированным. Для взаимной аутентификации каждая из сторон должна поддерживать инфраструктуру открытого ключа (PKI), которая позволяет защитить клиент-серверные приложения от перехвата сообщений, редактирования существующих сообщений и создания поддельных (источник: wikipedia).

openvpn —genkey —secret ta.key

В результате в папке /etc/openvpn/easy-rsa/keys мы имеем следующие файлы:

ca.crt — главный сертификат подлинности (Certificate Authority), этот файл нужен и клиенту и серверу
dh1024.pem — ключ Диффи Хельмана, этот файл нужен только серверу
server.crt — сертификат X.509 сервера (стандарт X.509 ITU-T является фундаментальным стандартом, лежащим в основе всех остальных, используемых в Инфраструктуре Открытых Ключей (ИОК). Основное его назначение — определение формата электронного сертификата и списков отозванных сертификатов), нужен только серверу
server.key — ключ сервера, нужен только серверу (СЕКРЕТНЫЙ файл)
client1.crt — сертификат X.509 клиента, нужен только клиенту
client1.key — ключ клиента, нужен только клиенту (СЕКРЕТНЫЙ файл)
ta.key — TLS-ключ, нужен и клиенту и серверу

Серверу — одно, клиенту — другое

Теперь в папку /etc/openvpn/keys на будущем сервере OpenVPN скопируем файлы ca.crt, dh1024.pem, server.crt, server.key и ta.key:

# mkdir /etc/openvpn/keys
# cp /etc/openvpn/easy-rsa/keys/ca.crt dh1024.pem server.crt server.key ta.key /etc/openvpn/keys

В папку будущего клиента /etc/openvpn/client1 скопируем файлы ca.crt, client1.crt, client1.key и ta.key:

# mkdir /etc/openvpn/client1
# cp /etc/openvpn/easy-rsa/keys/ca.crt client1.crt client1.key ta.key /etc/openvpn/client1

Теперь подкаталог «client1» можно скопировать в папку конфигурации будущего удаленного клиента Windows.

В принципе, в папке /etc/openvpn/easy-rsa/keys/ все файлы можно оставить, на всякий случай 🙂 Права на доступ к папке openvpn лучше обновить до правильных:

# chown -R root:wheel /etc/openvpn

Конфиг сервера OpenVPN

Расположение файла конфигурации сервера: » /etc/openvpn/config/server.conf » (для Windows: » C:Program FilesOpenVPNconfigserver.ovpn «).

Пример файла конфигурации сервера OpenVPN (подходит для Windows, Linux, FreeBSD с минимальными изменениями):

# на сайте разработчиков рекомендуется использовать udp в том числе
# по соображениям безопасности
proto udp

ca «/etc/openvpn/keys/ca.crt»
cert «/etc/openvpn/keys/server.crt»
key «/etc/openvpn/keys/server.key» # Этот файл хранить в секрете!

# включаем TLS аутификацию
tls-server
# указываем tls-ключ, и указываем 0 для сервера, а 1 для клиента
tls-auth «/etc/openvpn/keys/ta.key» 0
# таймаут до реконекта
tls-timeout 120
auth MD5

# задаем IP-адрес сервера и маску подсети
server 10.8.0.0 255.255.255.0

# задаем МАРШРУТ который передаём клиенту
# и маску подсети для того чтобы он «видел»
# сеть за OpenVPN сервером (сеть 192.168.10.0/24)
push «route 192.168.10.0 255.255.255.0»

route 192.168.10.0 255.255.255.0

Читайте также:  Установка и настройка сервера postgresql

# If enabled, this directive will configure
# all clients to redirect their default
# network gateway through the VPN, causing
# all IP traffic such as web browsing and
# and DNS lookups to go through the VPN
# (The OpenVPN server machine may need to NAT
# or bridge the TUN/TAP interface to the internet
# in order for this to work properly).
# Фактически означает, что даже в интернет вы будете ходить через
# рабочий интернет-шлюз. Имейте это ввиду!
# После отключения от VPN-соединения вполне возможно вам будет необходимо
# выполнить команду в консоли cmd: ipconfig /renew .
push «redirect-gateway def1 bypass-dhcp»

# Сообщаем удаленному клиенту адрес внутреннего DNS-сервера
# чтобы клиент мог по именам обращаться к компьютерам локальной сети
push «dhcp-option DNS 192.168.10.100»

# удерживать соединение (полезно при работе через nat, proxy и т.п.)
keepalive 10 120

# включаем шифрацию пакетов
cipher BF-CBC

# включить сжатие (если есть проблемы при соединении — выключите эту опцию на клиенте и сервере)
comp-lzo

# максимум клиентов
max-clients 5

;user nobody
;group nobody

# Не перечитывать ключи после получения
# SIGUSR1 или ping-restart
persist-key
# Не закрывать и переоткрывать TUNTAP
# устройство, после получения
# SIGUSR1 или ping-restart
persist-tun

# клиенты могут «видеть» друг друга
client-to-client

log «/etc/openvpn/log/openvpn.log»
log-append «/etc/openvpn/log/openvpn.log»

# уровень детализации отчетов
verb 3

Примечания к конфигурационному файлу сервера OpenVPN

В данном конфиге будут только два различия в версиях сервера для Unix или для Windows.

1. Пути расположения файлов конфигурации, сертификатов и пр. в конфиге для Windows должны прописываться так:

dh «C:Program FilesOpenvpnconfigdh1024.pem»

а в Linux/FreeBSD так:

2. В конфиге для Windows следующие строки должны быть закомментированы:

;user nobody
;group nobody

а в Linux/FreeBSD (по желанию или по соображениям безопасности, но режиме отладки самого сервера OpenVPN можно сначала запускать сервер OpenVPN под админом, чтобы в случае проблем не грешить на права доступа, но потом обязательно сменить запуск на nobody. ) раскомментированы:

user nobody
group nobody

С конфигом для сервера, в принципе, все. Для начала работы вполне достаточно того конфига, который указан выше.

Автозапуск сервера OpenVPN в Linux/FreeBSD

Для автоматического запуска сервера OpenVPN можно использовать следующий скрипт (# — комментарий), например, start_openvpn.sh (не забудьте сделать его исполняемым » chmod +x start_openvpn.sh «):

#!/bin/sh
dir=/etc/openvpn/config
modprobe tun
echo 1 > /proc/sys/net/ipv4/ip_forward
openvpn —cd $dir —daemon —config /etc/openvpn/config/server.conf
# кстати, здесь можно запускать несколько серверов OpenVPN одновременно:
# openvpn —cd $dir —daemon —config /etc/openvpn/config/server2.conf

либо такой (например, во FreeBSD):

openvpn_enable=»YES»
openvpn_if=»tun» #
openvpn_configfile=»/etc/openvpn/config/server.conf»
openvpn_dir=»/etc/openvpn» # —cd directory

Конфиг клиента OpenVPN на Windows XP

Файлы клиента берем из папки /etc/openvpn/client1 на сервере и копируем их в папку » C:Program FilesOpenVPNconfig » на клиенте.

Расположение файла конфигурации клиента: » C:Program FilesOpenVPNconfigclient1.ovpn » (для Linux/FreeBSD расположение, полагаю, где-либо в домашней папке юзера, к примеру, » /home/vpn/client1.ovpn» ).

Пример файла конфигурации клиента OpenVPN :

# IP-адрес и порт сервера OpenVPN)
remote 444.333.222.111 1194

ca «C:Program FilesOpenVPNconfigca.crt»
cert «C:Program FilesOpenVPNconfigclient1.crt»
key «C:Program FilesOpenVPNconfigclient1.key»

tls-client
tls-auth «C:Program FilesOpenVPNconfigta.key» 1
auth MD5

#Это еще одна защита, на этот раз от «man in the middle» атаки
ns-cert-type server

Также надо настроить брандмауэр для того, чтобы внешние клиенты OpenVPN могли «видеть» сеть «за NAT». Я приведу часть конфига iptables работающего шлюза CentOS / Squid (внутренняя сеть 192.168.10.0/24):

С этими конфигами клиент VPN может работать с компьютерами локальной сети. Если у вас есть свои соображения по поводу настроек iptables и маршрутизации — буду очень признателен. Да и читатели также. Ведь если вы читаете эту статью, вы наверняка знаете, что на эту тему сломано немало копий.

Отзыв клиентского сертификата

Чтобы отозвать сертификат какого-либо клиента (например, при утере планшета с настроенным OpenVPN), т.е. сделать так, чтобы клиент больше не смог подключиться к серверу, используя свой сертификат, надо сделать несколько простых действий.

# cd /etc/openvpn/easy-rsa/2.0/
# . /etc/openvpn/easy-rsa/2.0/vars
# ./revoke-full client25

.
error 23 at 0 depth lookup:certificate revoked

После успешного выполнения последней команды (вы должны увидеть последнюю строчку) в директории /etc/openvpn/easy-rsa/2.0/keys будет создан файл файл crl.pem (CRL — certificate revocation list — список отозванных сертификатов). Скопируйте его в директорию, где у вас находятся остальные файлы, имеющие отношение к работающему серверу OpenVPN. По идее, это директория /etc/openvpn. На всякий случай, проверьте существование в этой директории старого файла crl.pem (есть хорошая практика — сначала сделать резервную копию). Учтите, что в команде подразумеваются относительные пути, а не абсолютные:

# cp keys/crl.pem /etc/openvpn/

А теперь укажем нашему серверу проверять список отозванных сертификатов каждый раз при подключении нового клиента. Для этого надо добавить в конфиг сервера (возможно, /etc/openvpn/server.conf) одну строчку:

Перезагрузим сервер OpenVPN:

# service openvpn restart

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

Источник

Настройка OpenVPN клиента

В данной инструкции подробно описан процесс настройки клиента OpenVPN на примере операционных систем Windows и Linux. Также, с ее помощью можно настроить скиента на Android.

Читайте также:  Sql server настройка порта

Установка

Windows

Заходим на официальную страницу загрузки openvpn и скачиваем клиента для нужной Windows:

Запускаем скачанный файл и устанавливаем программу, нажимая «Далее».

Linux CentOS

Устанавливаем репозиторий EPEL:

yum install epel-release

yum install openvpn

Linux Ubuntu

apt install openvpn

Android

Установка выполняется из Google Play. Набираем в поиске OpenVPN Connect — нажимаем установить и принимаем условия.

Настройка

После установки программы конфигурационный файл не создается автоматически и его нужно создать вручную.

В системах Windows создаем файл config.ovpn в папке %programfiles%\OpenVPN\config.

* имя файла может быть любым, расширение должно быть .ovpn.

Для создания конфигурационного файла в Linux выполняем команду:

* чтобы служба openvpn автоматически выполняла соединение, необходимо, чтобы конфигурационный файл назывался client.conf.

Пример конфигурационного файла

client
dev tun
proto udp
remote 192.168.0.15 443
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
dh dh2048.pem
tls-client
tls-auth ta.key 1
float
keepalive 10 120
comp-lzo
verb 0

Параметры конфигурационного файла

Параметр Значения Описание
client Строка говорит о том, что конфигурационный файл описывает клиентское подключение (программа сама устанавливает соединение, а не ждет, как сервер).
dev tap или tun Выбор виртуального сетевого драйвера. TUN — сетевой уровень модели OSI, оперирует IP-пакетами. TAP — эмулирует Ethernet устройство и работает на канальном уровне модели OSI, оперируя кадрами Ethernet. Настраивая OpenVPN клиента, в большинстве случаев, необходимо выбирать tun. TAP необходимо использовать для работы определенных сервисов, например DHCP.
dev-node любая строка Параметр используется в системах Windows в случаях, если имеется несколько сетевых интерфейсов. Значение этого параметра должно содержать название сетевого подключения, через который должен работать OpenVPN.
proto udp или tcp Указывает, какой протокол использовать для передачи данных. В большинстве случаев, лучше использовать UDP, так как данный протокол создает меньше нагрузки на сеть.
remote VPN-сервер и порт Задает сервер, к которому должен подключаться клиент, а также сетевой порт, на котором OpenVPN принимает запросы. Можно указать несколько строк.
remote-random Если указано несколько строк remote, данный параметр говорит, что необходимо подключаться к удаленным серверам в случайном порядке.
resolv-retry количество секунд или infinite Используется в тех случаях, когда в качестве сервера указано доменное имя. Параметр задает время в секундах для повторного переподключения, если не удалось узнать имя сервера. infinite — держать связь с сервером постоянно.
nobind Клиент использует динамический порт для подключения.
user учетная запись Задает определенного пользователя для работы клиента (только для UNIX-систем).
group группа Задает определенную группу для работы клиента (только для UNIX-систем).
persist-key Не перечитывает ключи при перезагрузке сервиса OpenVPN.
persist-tun Не перечитывает параметры туннеля при перезагрузке сервиса OpenVPN.
http-proxy сервер прокси и порт Использовать прокси-сервер для подключения.
http-proxy-retry Переподключаться к прокси-серверу, если связь была разорвана.
http-proxy-timeout количество секунд Время, через которое выполнять попытки переподключения к прокси-серверу.
mute-replay-warnings Параметр стоит задавать при использовании беспроводного соединения. Он отключит дублирование предупреждений пакетов.
ca пут к сертификату Корневой сертификат удостоверяющего центра. Генерируем на сервере.
cert пут к сертификату Открытый ключ клиента. Генерируем на сервере.
key пут к сертификату Закрытый ключ клиента. Генерируем на сервере.
dh пут к сертификату Ключ с алгоритмом Diffie-Hellman (Диффи-Хеллмана).
remote-cert-tls сервер Исключает возможность mitm атаки, включая верификацию сертификата сервера.
tls-client Указание на то, что это клиент TLS.
tls-auth ta.key 1 Дополнительный уровень аутентификации посредством ключа TLS.
float Удаленный хост может менять IP-адрес в процессе соединения, при этом последнее не будет разорвано.
keepalive секунд1 секунд2 Пинговать каждые секунд1 сервер и если в течение секунд2 не будут получены ответные пакеты, перезапустить подключение.
cipher алгоритм Указывает алгоритм шифрования. Примеры: AES-256-CBC, AES-128-CBC, BF-CBC, DES-EDE3-CBC.
comp-lzo Использовать сжатие.
verb число от 0 до 9 Уровень детализации лога. 0 отключает отладочную информацию.
mute число Указывает сколько лог-сообщений может отображаться для каждой категории события.
auth-user-pass ничего или путь к файлу Говорит клиенту, что необходима аутентификация. Если не указан путь к файлу, клиент выкинет окно для авторизации, иначе прочитает данные из файла.
ipchange команда или путь к скрипту Выполняет команду при смене IP.
connect-retry секунд Переподключиться к серверу через указанное количество секунд, если соединение было разорвано.
connect-retry-max число Сколько раз повторять соединение, если оно было разорвано.
shaper байт Задает максимальную скорость передачи данных для исходящего трафика.
tun-mtu число Задает MTU.
status путь к файлу Путь к фалу хранения статуса.
log путь к файлу Путь к лог-файлу.

Наиболее полный и актуальный список параметров для OpenVPN можно получить командой openvpn —help (в Linux и Windows).

Сертификаты

Клиентские сертификаты генерируются на стороне сервера. Процедура следующая.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector