Установка OpenVpn в CentOS 7
Устанавливаем openvpn на оба наших сервера, которые являются шлюзами в своих сегментах сети. Первым делом подключаем репозиторий epel к centos 7:
# yum -y install epel-release
Выполняем непосредственно установку:
# yum -y install openvpn Создаем директорию для ключей: # mkdir /etc/openvpn/keys Устанавливаем архиватор zip: # yum -y install unzip zip Скачиваем и устанавливаем утилиту Easy-RSA: # yum -y install easy-rsa # cd /etc/openvpn/keys # wget https://github.com/OpenVPN/easy-rsa/archive/master.zip
Если получаете сообщение:
-bash: wget: command not found
То устанавливаете wget:
# yum -y install wget
Продолжаем:
# unzip master.zip # cd /etc/openvpn/keys/easy-rsa-master/easyrsa3
Создаем структуру публичных PKI ключей:
# mv vars.example vars # ./easyrsa init-pki Note: using Easy-RSA configuration from: ./vars init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki
Создайте удостоверяющий центр CA:
# ./easyrsa build-ca
Note: using Easy-RSA configuration from: ./vars Generating a 2048 bit RSA private key .+++ .........................................................................+++ writing new private key to '/etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/private/ca.key.GKwCGouHpy' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- 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) [Easy-RSA CA]:serveradmin.ru CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/ca.crt
Не забудьте указанный пароль. Его нужно будет вводить каждый раз при создании нового сертификата openvpn.
Мы получили 2 ключа:
- /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/private/ca.key
- /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/ca.crt
Первый ключ секретный, его нужно оставить на сервере и никому не отдавать. Второй — открытый, его мы будем вместе с пользовательскими сертификатами передавать клиентам.
Создаем запрос сертификата для сервера без пароля с помощью опции nopass, иначе придется вводить пароль с консоли при каждом запуске сервера:
# ./easyrsa gen-req server nopass Note: using Easy-RSA configuration from: ./vars Generating a 2048 bit RSA private key ........................+++ ..............................................................................................+++ writing new private key to '/etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/private/server.key.vCUQuueIih' ----- 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) [server]: Keypair and certificate request completed. Your files are: req: /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/reqs/server.req key: /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/private/server.key
Подписываем запрос на получение сертификата у нашего CA:
# ./easyrsa sign-req server server
Note: using Easy-RSA configuration from: ./vars You are about to sign the following certificate. 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. Request subject, to be signed as a server certificate for 3650 days: subject= commonName = server Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes Using configuration from /etc/openvpn/keys/easy-rsa-master/easyrsa3/openssl-1.0.cnf Enter pass phrase for /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/private/ca.key: Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows commonName :PRINTABLE:'server' Certificate is to be certified until Sep 10 00:31:21 2025 GMT (3650 days) Write out database with 1 new entries Data Base Updated Certificate created at: /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/issued/server.crt
В процессе работы скрипта вводим пароль от CA, который указывали раньше и отвечаем на вопрос yes. Мы получили подписанный удостоверяющим центром сертификат для сервера — /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/issued/server.crt
Нам еще пригодится ключ Диффи-Хелмана, генерируем его:
# ./easyrsa gen-dh
По завершению работы скрипта получаем файл dh сертификата — /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/dh.pem.
Копируем в папку /etc/openvpn все необходимые для работы openvpn сервера ключи:
# cp pki/ca.crt /etc/openvpn/ca.crt # cp pki/dh.pem /etc/openvpn/dh.pem # cp pki/issued/server.crt /etc/openvpn/server.crt # cp pki/private/server.key /etc/openvpn/server.key
Создадим ключ для клиента openvpn:
# ./easyrsa gen-req client nopass # ./easyrsa sign-req client client
Процедура аналогична созданию сертификата для сервера. Так же вводим пароль, отвечаем yes. В результате получаем подписанный сертификат клиента:
- /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/issued/client.crt
- /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/private/client.key
Клиенту, которым у нас является шлюз филиала нужно будет передать следующий набор файлов — client.crt, client.key, ca.crt.