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: помилка читання tls_read_plaintext помилка: помилка: 14090086: SSL підпрограми: SSL3_GET_SERVER_CERTIFICATE: сертифікат не підтверджено
2012-01-11 11:18:26 TLS Помилка: TLS object -> помилка читання в прямому тексті
2012-01-11 11:18:26 Помилка TLS: Помилка передачі TLS
2012-01-11 11:18:26 TCP / UDP: Розетка закриття

Тепер ось рубець. Я створив CSR сам, щоб запросити цей сертифікат, використовуючи файл ca.crt, наданий мені іншою стороною (насправді вони зробили це двічі, щоб переконатися).

Відповідні записи в конфігурації клієнта:

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

і, крім того ... я можу перевірити ключі таким чином:

openssl перевірити -CAfile ca.crt my.crt 
my.crt: Гаразд

Гаразд, тож тепер я досконало загаданий і спотиканий. На даний момент я знаю, що КСВ та ключ були створені за допомогою належного КСВ. Насправді ось та сама команда, яка це виконала:

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

Я також знав це робити:

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

...

(моргай!)

Я щойно це знайшов ?

Вихід цієї команди виглядає приблизно так: (дещо відредагований)

тема = / C = US / ST = VA / L = ** / O = ** / CN = ** CA / emailAddress = **
емітент = (те саме)

тоді як у повідомленні про помилку від OpenVPN ST = точно не збігається:

ВЕРИФІЧНА ПОМИЛКА: глибина = 1, помилка = самопідписаний сертифікат у ланцюжку сертифікатів: / C = US / ST = Virginia / L = ** / O = ** / CN = ** / emailAddress = **

"VA" точно не дорівнює "Virginia".


2
Спробуйте openssl s_client -connect host:port -showcertsі порівняйте відбиток мініатюри отриманого сертифіката з openssl x509 -noout -text -in ca.crt.
Шейн Мадден

Відповіді:


7

Просто для повного закриття цієї теми: це дійсно було проблемою. "Ca.crt", який я отримав ("Вірджинія"), насправді НЕ був тим, яким користувався мій колега ("VA"), і жоден із нас не помітив того часу.

Отже ... в основному (і, суто кажучи, це стосується мирян ), VPN намагався пройтись по ланцюгу авторитетів, шукаючи ca.crt, який він очікував знайти, але цього ніколи (бо його там не було).

І це одне з тих чудових повідомлень, якими криптосистеми настільки відомі: цілком точні та, тим не менш, зовсім таємничі для непосвячених. (І, якщо чесно, криптосистеми не люблять оприлюднювати інформацію про що-небудь, оскільки вони припускають, що людина, з якою вони розмовляють, - це, звичайно, зла Єва , а не приємна Аліса чи Боб.)


Чесно кажучи, я не переконаний, що це має щось спільне з ланцюжком ЦС і більше пов'язане з тим, що це був в першу чергу інший ЦА і, таким чином, автоматично не довіряв. OpenSSL не повинен багато гуляти. Можливо, саме це ви мали на увазі.
gparent
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.