Ошибка сертификата клиента openvpn с «неподдерживаемой целью»

Я следовал этой вики-инструкции для создания сертификата клиента OpenVPN. Это включает:

easyrsa gen-req client1 nopass

Я пытался использовать этот сертификат client1 в своей настройке OpenVPN. В журнале сервера отображаются следующие журналы (примечание: IP-адрес изменен с общедоступного IP на 192.168.0.2 по соображениям безопасности):

192.168.0.2:5570 TLS: Initial packet from [AF_INET]192.168.0.2:5570, sid=1e71335b cc13ec8f
192.168.0.2:5570 VERIFY ERROR: depth=0, error=unsupported certificate purpose: CN=client1
192.168.0.2:5570 OpenSSL: error:1417C086:SSL routines:tls_process_client_certificate:certificate verify failed
192.168.0.2:5570 TLS_ERROR: BIO read tls_read_plaintext error
192.168.0.2:5570 TLS Error: TLS object -> incoming plaintext read error
192.168.0.2:5570 TLS Error: TLS handshake failed
192.168.0.2:5570 SIGUSR1[soft,tls-error] received, client-instance restarting

Таким образом, явная ошибка должна быть такой:

VERIFY ERROR: depth=0, error=unsupported certificate purpose: CN=client1

Я проверил сертификат с помощью этой команды:

openssl x509 -in client1.crt -text -noout -purpose

И вывод раздела Цели сертификата выглядит следующим образом:

Certificate purposes:
SSL client : No
SSL client CA : No
SSL server : Yes
SSL server CA : No
Netscape SSL server : Yes
Netscape SSL server CA : No
S/MIME signing : No
S/MIME signing CA : No
S/MIME encryption : No
S/MIME encryption CA : No
CRL signing : No
CRL signing CA : No
Any Purpose : Yes
Any Purpose CA : Yes
OCSP helper : Yes
OCSP helper CA : No
Time Stamp signing : No
Time Stamp signing CA : No

Мои вопросы:

  1. Что не так с моим сертификатом клиента?
  2. Что мне делать, чтобы сгенерировать правильный сертификат?
1
задан 3 April 2018 в 08:55
3 ответа

Правильный способ включить nsCertType - через файл easyrsa vars :

# Support deprecated "Netscape" extensions? (choices "yes" or "no".) The default
# is "no" to discourage use of deprecated extensions. If you require this
# feature to use with --ns-cert-type, set this to "yes" here. This support
# should be replaced with the more modern --remote-cert-tls feature.  If you do
# not use --ns-cert-type in your configs, it is safe (and recommended) to leave
# this defined to "no".  When set to "yes", server-signed certs get the
# nsCertType=server attribute, and also get any NS_COMMENT defined below in the
# nsComment field.

#set_var EASYRSA_NS_SUPPORT "no"
 set_var EASYRSA_NS_SUPPORT "yes"

Полученный сертификат имеет следующую цель:

    X509v3 Extended Key Usage: 
        TLS Web Client Authentication
    X509v3 Key Usage: 
        Digital Signature
    Netscape Comment: 
        Easy-RSA Generated Certificate
    Netscape Cert Type: 
        SSL Client
1
ответ дан 3 December 2019 в 18:27

Оказывается, причиной проблемы является конфигурация клиента по умолчанию easy-rsa (v3.0.3). Содержание по умолчанию файла x509-types / client :

# X509 extensions for a client

basicConstraints = CA:FALSE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer:always
extendedKeyUsage = clientAuth
keyUsage = digitalSignature

Нет определения nsCertType . Чтобы исправить это, вам нужно изменить этот файл (в используемой вами копии easy-rsa) и добавить эту строку:

nsCertType = client

Тогда та же самая команда генерации сертификата клиента работает как чудо.

P.S. Спасибо @lenniey за то, что дал мне идею, где проверить. Спасибо @andrew за альтернативу команде openssl .

1
ответ дан 3 December 2019 в 18:27

Что не так с моим клиентским сертификатом?

Сгенерированные сертификаты не настроены с опцией SSL Client, поэтому что-то с конфигурацией easy-rsa неверно.

Что мне делать, чтобы сгенерировать правильный сертификат?

Вы можете попробовать исправить инструмент easy-rsa или использовать openssl напрямую. Вам потребуется доступ к ключу подписывающей стороны CA, чтобы сделать это с помощью openssl .

openssl x509 -req -in <путь к клиентскому csr> -CAkey <путь к ключу CA> -CA <путь к CA cert> -CAcreateserial -out client1.pem

Это создаст сертификат, подписанный CA (требуется для аутентификации с OpenVPN), а также должен обеспечить использование опций SSL Client и SSL Server.

1
ответ дан 3 December 2019 в 18:27

Теги

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