OpenVPN: самоподписанный сертификат в цепочке

9

Я пытаюсь очень безуспешно использовать TunnelBlick(клиент OS / X OpenVPN 2.2.1, который известен как хороший) для подключения с использованием сертификатов. Вот (очищенное) сообщение об ошибке, которое я получаю:

2012-01-11 11:18:26 TLS: исходный пакет от **. **. **. **: 1194, sid = 17a4a801 5012e004
2012-01-11 11:18:26 ОШИБКА ПРОВЕРКИ: глубина = 1, ошибка = самозаверяющий сертификат в цепочке сертификатов: / C = US / ST = ** / L = ** / O = ** / CN = ** / EMAILADDRESS = **
2012-01-11 11:18:26 TLS_ERROR: BIO прочитал ошибку tls_read_plaintext: ошибка: 14090086: подпрограммы SSL: SSL3_GET_SERVER_CERTIFICATE: сбой проверки сертификата
2012-01-11 11:18:26 Ошибка TLS: объект TLS -> ошибка чтения входящего открытого текста
2012-01-11 11:18:26 Ошибка TLS: сбой квитирования TLS
2012-01-11 11:18:26 TCP / UDP: Закрытие сокета

Теперь вот руб. Я создал КСО себя , чтобы запросить этот сертификат, используя ca.crt файл предоставленную мне другую сторону (на самом деле, они сделали это дважды , просто чтобы убедиться).

Соответствующие записи в конфигурации клиента:

ca   ca.crt
cert my.crt
key  my.key

и, кроме того ... я могу проверить ключи следующим образом:

openssl проверяет -CAfile ca.crt my.crt 
my.crt: ОК

Хорошо, теперь я полностью озадачен и озадачен. На данный момент я знаю, что CSR и ключ были созданы с использованием правильного CSR. Фактически, вот та самая команда, которая сделала это:

openssl req -newkey rsa:2048 -new -out my.csr -keyout my.key

Я также знал, чтобы сделать это:

openssl x509 -subject -issuer -noout -in ca.crt

...

(Мигает!)

Я только что нашел это?

Вывод этой команды выглядит следующим образом: (отредактировано несколько)

subject = / C = US / ST = VA / L = ** / O = ** / CN = ** CA / emailAddress = **
эмитент = (то же самое)

тогда как в сообщении об ошибке от OpenVPN ST = не совсем то же самое:

ОШИБКА ПРОВЕРКИ: глубина = 1, ошибка = самозаверяющий сертификат в цепочке сертификатов: / C = США / ST = Вирджиния / L = ** / O = ** / CN = ** / emailAddress = **

«VA» не совсем совпадает с «Вирджиния».

user106701
источник
2
Попробуйте openssl s_client -connect host:port -showcertsи сравните отпечаток полученного сертификата с openssl x509 -noout -text -in ca.crt.
Шейн Мэдден

Ответы:

7

Просто чтобы полностью завершить эту тему: проблема действительно была. Полученный мной «ca.crt» («Вирджиния») на самом деле не был тем, который использовал мой коллега («VA»), и никто из нас не заметил в то время.

Итак ... в основном (и чисто с точки зрения непрофессионала) VPN пытался пройтись по цепочке полномочий, ища причину, которую он ожидал найти, но так и не сделал (потому что ее там не было).

И это одно из тех замечательных сообщений, которыми так хорошо известны криптосистемы: совершенно точные, и в то же время совершенно загадочные для непосвященных. (И, честно говоря, криптосистемы не любят разглашать информацию о чем-либо, поскольку предполагают, что человек, с которым они разговаривают, - это, несомненно, злая Ева , а не милая Алиса или Боб.)

Майк Робинсон
источник
Честно говоря, я не уверен, что это имеет какое-либо отношение к цепочке ЦС, а в большей степени связано с тем фактом, что в первую очередь это был другой ЦС, и, следовательно, он автоматически не заслуживает доверия. OpenSSL не нужно много ходить. Может быть, это то, что вы имели в виду, хотя.
gparent