OpenVPN: openssl verify error 7 at 1 depth lookup:certificat

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
setevoy
рядовой
Сообщения: 21
Зарегистрирован: 2011-11-17 18:27:35
Откуда: Kiev
Контактная информация:

OpenVPN: openssl verify error 7 at 1 depth lookup:certificat

Непрочитанное сообщение setevoy » 2014-12-17 19:48:45

Привет

Знаю, это распространённая проблема, но несколько часов гугления ник чему не привели.

Имеется OpenVPN сервер, ОС CentOS. Имеются два клиента - один под CentOS, второй - Windows 7 c OpenVPN GUI.

Сертификаты создавались для обоих по одной схеме:

Код: Выделить всё

# cd /etc/openvpn/easy-rsa

Код: Выделить всё

# ./build-key client_main
Generating a 2048 bit RSA private key
............+++
..................+++
writing new private key to 'client_main.key'
...
Country Name (2 letter code) [UA]:
State or Province Name (full name) [None]:
Locality Name (eg, city) [Kiev]:
Organization Name (eg, company) [Venti private server]:
Organizational Unit Name (eg, section) [Venti private server]:
Common Name (eg, your name or your server's hostname) [client_main]:
Name [EasyRSA]:
Email Address [root@client.org.ua]:
...
Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnf
...
Certificate is to be certified until Dec 14 13:46:24 2024 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

Код: Выделить всё

# ls -l keys/ | grep main
-rw-r--r-- 1 root root 5566 Dec 17 15:46 client_main.crt
-rw-r--r-- 1 root root 1110 Dec 17 15:46 client_main.csr
-rw------- 1 root root 1708 Dec 17 15:46 client_main.key

Код: Выделить всё

# mkdir /etc/openvpn/clients/client_main

Код: Выделить всё

# cp /etc/openvpn/easy-rsa/keys/client_main.* /etc/openvpn/clients/client_main

Код: Выделить всё

# cp /etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/clients/sclient_main/

Код: Выделить всё

# cp /usr/share/doc/openvpn-2.3.2/sample/sample-config-files/client.conf /etc/openvpn/clients/client_main/client.ovpn
Содержимое файла настроек клиента:

Код: Выделить всё

# cat /etc/openvpn/clients/client_main/client.ovpn
client
;dev tap
dev tun
;dev-node MyTap
;proto tcp
proto udp
remote 77.***.***.20 1194
;remote my-server-2 1194
;remote-random
resolv-retry infinite
nobind
;user nobody
;group nobody
persist-key
persist-tun
;http-proxy-retry
;http-proxy [proxy server] [proxy port ]
;mute-replay-warnings
ca ca.crt
cert client_main.crt
key client_main.key
ns-cert-type server
;tls-auth ta.key 1
;cipher x
comp-lzo
verb 4
;mute 20
Потом - всё залить на Win-машину Cygwin):

Код: Выделить всё

$ pwd
/cygdrive/c/Program Files (x86)/OpenVPN/config

Код: Выделить всё

$ scp -r -P 2222 client@client.org.ua:/etc/openvpn/clients/client_main/* .
client@client.org.ua's password:
ca.crt         100% 1850     1.8KB/s   00:00
client.ovpn          100%  433     0.4KB/s   00:00
client_main.crt        100% 5566     5.4KB/s   00:00
client_main.csr        100% 1110     1.1KB/s   00:00
client_main.key       100% 1708     1.7KB/s   00:00

Код: Выделить всё

15:51:35 [client@client-main /cygdrive/c/Program Files (x86)/OpenVPN/config] $ ls -l
итого 21
-rw-r--r--+ 1 client None 1850 дек 17 15:51 ca.crt
-rw-r--r--+ 1 client None  433 дек 17 15:51 client.ovpn
-rw-r--r--+ 1 client None 5566 дек 17 15:51 client_main.crt
-rw-r--r--+ 1 client None 1110 дек 17 15:51 client_main.csr
-rw-r--r--+ 1 client None 1708 дек 17 15:51 client_main.key
Проверка CA сертификата и сертификата клиента - всё ОК:

Код: Выделить всё

$ ../bin/openssl.exe verify -CAfile ca.crt client_main.crt
client_main.crt: OK
Но при Connect в OpenVPN GUI - постоянно ошибка:
Wed Dec 17 15:53:24 2014 us=641068 TLS: Initial packet from 77.***.***.20:1194, sid=e6e1a07d f581c685
Wed Dec 17 15:53:24 2014 us=667076 VERIFY ERROR: depth=1, error=certificate signature failure: /C=UA/ST=None/L=Kiev/O=Venti_private_server/OU=Venti_private_server/CN=venti.client.org.ua/name=EasyRSA/emailAddress=root@client.org.ua
Wed Dec 17 15:53:24 2014 us=667148 TLS_ERROR: BIO read tls_read_plaintext error: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Wed Dec 17 15:53:24 2014 us=667157 TLS Error: TLS object -> incoming plaintext read error
Wed Dec 17 15:53:24 2014 us=667163 TLS Error: TLS handshake failed
Wed Dec 17 15:53:24 2014 us=667267 TCP/UDP: Closing socket
ЧЯДНТ тут?

На обоих клиентах одинаковый OpenSSL:

На сервере:

Код: Выделить всё

# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
На клиенте:

Код: Выделить всё

15:52:56 [client@client-main /cygdrive/c/Program Files (x86)/OpenVPN/config] $ ../bin/openssl.exe version
OpenSSL 1.0.1j 15 Oct 2014
Для совсем уж проверки - поднял ещё одну CentOS машинку на виртуалке, повторил действия - всё работает замечательно.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
setevoy
рядовой
Сообщения: 21
Зарегистрирован: 2011-11-17 18:27:35
Откуда: Kiev
Контактная информация:

Re: OpenVPN: openssl verify error 7 at 1 depth lookup:certif

Непрочитанное сообщение setevoy » 2014-12-17 21:25:48

OpenSSL под Win не умеет работать с sha256.

В файле openssl-1.0.0.cnf (или другой, а зависимости от версии OpenSSL на сервере) заменить default_md = sha256 на, например, md5:

Код: Выделить всё

[ req ]
default_bits        = $ENV::KEY_SIZE
default_keyfile     = privkey.pem
default_md      = md5

Код: Выделить всё

default_days    = 3650          # how long to certify for
default_crl_days= 30            # how long before next CRL
default_md  = md5       # use public key default MD
И пересоздать все :-( сертификаты и ключи, в т.ч. Хоффмана.