Назад | Перейти на главную страницу

Ошибка проверки сертификата VPN (OpenVPN)? CentOS и Ubuntu

Хорошо, я объясню, что я сделал ... и в конце квестон. Спасибо!

Чтобы настроить VPN, я установил OpenVPN на серверные и клиентские машины. На сервере я настроил центр сертификации в файле / etc / openvpn / easy-rsa / vars, отредактировав следующие строки:

export KEY_COUNTRY=”ES”
export KEY_PROVINCE=”M”
export KEY_CITY=”Madrid”
export KEY_ORG=”My Organization”
export KEY_EMAIL=”mail@example.com”

затем я создал сертификат:

cd / etc / openvpn / easy-rsa / ln -s openssl-1.0.0.cnf исходные переменные openssl.cnf ./clean-all ./build-ca

Созданы сертификаты cerver:

./build-key-server myServer

Параметры Диффи Хеллмана на сервер

./build-dh

Копируемые сертификаты и ключи / etc / openvpn

cd-ключи / cp myServer.crt myServer.key ca.crt dh1024.pem / etc / openvpn /

Созданы клиентские сертификаты

cd / etc / openvpn / easy-rsa / исходные переменные ./build-key client1

Скопировал эти сертификаты на клиентскую машину и удалил их с сервера:

/etc/openvpn/ca.crt

/etc/openvpn/easy-rsa/keys/cliente.crt

/etc/openvpn/easy-rsa/keys/cliente.key

Отредактировал /etc/openvpn/server.conf для имен моих файлов

ca ca.crt
cert myServer.crt
key myServer.key
dh dh1024.pem

/etc/init.d/openvpn перезапуск

Проверено, что tun0 есть

ifconfig tun0

Включен параметр ip_forward в /etc/sysctl.conf, чтобы пакеты могли течь

net.ipv4.ip_forward = 1

Также включено маскирование виртуальной сети, чтобы клиент мог получить доступ ко всем удаленным машинам.

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

и сохранил конфиг IP-таблиц, чтобы они не пропадали при перезагрузке

Сохранить конф в файл

sudo sh -c «iptables-save> /etc/iptables.rules»

Отредактируйте / etc / network / interfaces, добавив интерфейс (в данном случае eth0)

предварительная установка iptables-restore </etc/iptables.rules

Получение следующего server.conf

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb3

В клиенте я установил OpenVPN и отредактировал файл client.conf, который находится в / etc / openvpn, с сертификатами: ca.cert, client1.key, client1.conf, получив следующий файл client.conf:

client
dev tun
proto udp
remote xxx.xxx.xxx.xxx 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
comp-lzo
verb 3

затем перезапустили:

/etc/init.d/openvpn перезапуск

И когда я хочу убедиться, что интерфейс tun0 существует с ifconfig tun0, его нет.

Итак, я проверил свой журнал на наличие ошибок на клиентской машине и обнаружил эту ошибку:

VERIFY ERROR: depth=0, error=unable to get local issuer certificate: /C=Es/ST=M/L=Madrid/O=xxx/OU=xxx/CN=myServer/name=xxx/emailAddress=mail@xxxx.co
TLS_ERROR: BIO read tls_read_plaintext error: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
user openvpn[7984]: TLS Error: TLS object -> incoming plaintext read error
user openvpn[7984]: TLS Error: TLS handshake failed

и это ошибка в журнале серверов

xxx.xxx.xxx.xxx:59439 SIGUSR1[soft,tls-error] received, client-instance restarting
MULTI: multi_create_instance called
xxx.xxx.xxx.xxx:59485 Re-using SSL/TLS context
xxx.xxx.xxx.xxx:59485 LZO compression initialized
xxx.xxx.xxx.xxx:59485 Control Channel MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ]
xxx.xxx.xxx.xxx:59485 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ]
xxx.xxx.xxx.xxx:59485 Local Options hash (VER=V4): '530fdded'
xxx.xxx.xxx.xxx:59485 Expected Remote Options hash (VER=V4): '41690919'
xxx.xxx.xxx.xxx:59485 TLS: Initial packet from [AF_INET]xxx.xxx.xxx.xxx:59485, sid=0349f4d6 657535c9
xxx.xxx.xxx.xxx:59440 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
xxx.xxx.xxx.xxx:59440 TLS Error: TLS handshake failed
xxx.xxx.xxx.xxx:59440 SIGUSR1[soft,tls-error] received, client-instance restarting

Я снова создал ключи и добавил полный путь к сертификатам в файле client.conf, но он по-прежнему не работает. Также попробовал со всеми отключенными брандмауэрами и все еще не могу подключиться к моему серверу из-за этой ошибки.

Еще одна важная вещь: мой сервер - это ubuntu 12.04 и клиент CentOS 6.3.

Я вижу, что нахожу свой сервер, но соединение не установлено ...

Что я должен делать??

Если нужны еще файлы конфигурации, скажите мне показать вам

Ваше сообщение об ошибке указывает на то, что клиенту по какой-либо причине не нравится сертификат, представленный сервером. Отправьте копию server.crt клиенту, затем запустите:

openssl verify -purpose any -CAfile ca.crt server.crt

Если все в порядке, вы должны получить что-то похожее на server.crt: OK

По сути, вы хотите проверить, что server.crt правильно подписан файлом ca.crt на клиенте. Вы можете поиграть с вариантами, чтобы увидеть, как выглядит сбой, исключив -CAfile ca.crt. В этом случае (или если ca.crt не подписал server.crt) вы получите следующее сообщение:

error 20 at 0 depth lookup:unable to get local issuer certificate

Если это так, просмотрите процесс создания сертификата.

У меня тоже была эта проблема. Проблема заключалась в том, что я использовал ca.crt, созданный easyrsa. Это не верно. Вместо этого используйте cacert.pem в / etc / ssl / misc / demoCA /.