openssl проверяют ошибку 7 на 1 глубине lookup:certificate отказ подписи

Я установил сервер OpenVPN на CentOS. У меня есть два клиента - сначала под CentOS (все работы), и судящий клиент Windows подключения теперь.

Я генерировал сертификаты клиента с build-key утилита.

Если я проверяю его на стороне сервера - все, кажется, в порядке:

# openssl verify -CAfile /etc/openvpn/clients/setevoy/ca.crt /etc/openvpn/clients/setevoy/setevoy.crt
/etc/openvpn/clients/setevoy/setevoy.crt: OK

Но - когда я проверяю, те же сертификаты в соответствии с Windows - получили ошибку:

$ openssl verify -CAfile ca.crt setevoy.crt
setevoy.crt: /C=UA/ST=CA/L=Kiev/O=Fort-Funston/OU=MyOrganizationalUnit/CN=venti.setevoy.org.ua/name=openvpn_root/emailAddress=root@setevoy.org.ua
error 7 at 1 depth lookup:certificate signature failure

Файлы, кажется, идентичны на сервере (от того, где я скопировал их), и на клиенте Windows (куда они размещаются в c/Program Files (x86)/OpenVPN/config:

# md5sum /etc/openvpn/clients/setevoy/ca.crt
53984cf44daffb708cdb937fa3d30438  /etc/openvpn/clients/setevoy/ca.crt

$ md5sum ca.crt
53984cf44daffb708cdb937fa3d30438 *ca.crt

# md5sum /etc/openvpn/clients/setevoy/setevoy.crt
c818d312e58db514a9a2afae4c687241  /etc/openvpn/clients/setevoy/setevoy.crt

$ md5sum setevoy.crt
c818d312e58db514a9a2afae4c687241 *setevoy.crt

Я принимаю, что-то не так с механизмом Windows OpenSSL... Или что-то подобная проблема:

$ head setevoy.crt | grep Signature
    Signature Algorithm: sha256WithRSAEncryption

Затем когда я пробую, запускаются, OpenVNP GUI - получил ошибку:

Среда 17 декабря 11:44:25 2 014 TLS_ERROR: БИО чтение tls_read_plaintext ошибка: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate проверяет отказавший среда 17 декабря Ошибка TLS 11:44:25 2014: объект TLS-> поступающий простой текст считал ошибку среда 17 декабря Ошибка TLS 11:44:25 2014: квитирование TLS перестало работать

UPD

На сервере:

# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013

и на клиенте Windows:

$ openssl.exe version
OpenSSL 0.9.7l 28 Sep 2006

UPD 2

Я обновил OpenSSL для OpenVPN GUI, теперь это 1.0.1, и verify работы:

$ ../bin/openssl.exe version
OpenSSL 1.0.1j 15 Oct 2014

$ ../bin/openssl.exe verify -CAfile ca.crt setevoy.crt
setevoy.crt: OK

Но - Я все еще не могу соединиться с той же ошибкой в журнале.

Я также установил новый сервер CentOS, только для тестирования и клиента OpenVPN там - все работы. Проблема с клиентом Windows только.

3
задан 17 December 2014 в 16:22
2 ответа

Проблема была вызвана Windows OpenSSL , которая не может работать с алгоритмом sha256 .

Решение, которое я нашел - отредактируйте файл конфигурации /etc/openvpn/easy-rsa/openssl-1.0.0.cnf (или другой, в зависимости от версии OpenSSL на вашем сервере) и установите:

default_md      = md5

вместо

default_md      = sha256

Затем повторно сгенерируйте все сертификаты и ключи вашего сервера и клиента (включая ключ Хоффмана).

После этого - Графический интерфейс OpenVPN почти работает ...

0
ответ дан 3 December 2019 в 08:11

OpenSSL 0.9.7 УЖЕ устарел и не поддерживает SHA256, поэтому не может проверить сертификат вашего сервера. Вы должны либо обновить клиентский OpenSSL как минимум до версии 0.9.8 (которая несовместима с двоичным кодом, поэтому, вероятно, потребуется перекомпиляция или получение другой компиляции OpenVPN), либо перейти на сертификат сервера, подписанный с помощью SHA1-RSA.

«SHA1 плохой»: Браузеры и центры сертификации в общедоступной сети, которые чаще всего используют SSL / TLS, принудительно отказываются от сертификатов, подписанных SHA1, потому что ожидается, что они скоро станут уязвимыми для атак коллизий. Но VPN - это (обычно) управляемая ситуация, когда вы запускаете CA, а количество клиентов невелико, и вы знаете их заранее; тогда вам не нужно беспокоиться об атаке коллизий, и SHA1 достаточно безопасен - пока вы не подпадаете под действие каких-либо правил или политик, которые просто запрещают SHA1 быть в безопасности, и вы не можете получить отказ.

Как? Я не знаю, где OpenVPN / easy-rsa устанавливает параметры, которые OpenSSL использует для подписания сертификатов (это может быть файл CONF или командная строка, и в любом случае можно использовать envvar); помечено как сообщество, так что любой может легко помочь. Если никто этого не сделает и вы укажете конкретную версию или загрузите, я могу взглянуть.

PS - может помочь, если вы пометите openvpn специально вместо vpn.

0
ответ дан 3 December 2019 в 08:11

Теги

Похожие вопросы