З тих пір, як наш постачальник електронної пошти змінив свій сертифікат SSL, клієнт POP3, заснований на монографії, відмовляється підключатися до свого захищеного POP-сервера для завантаження електронних листів. Інші клієнти не мають проблеми; наприклад, Thunderbird та Outlook; також більшість сайтів для перевірки SSL, які можуть перевірити непарні порти, крім цього . Я працював з обома постачальниками, намагаючись точно визначити проблему, але нарешті дійшов до тупикової точки з обома, оскільки я не знаю достатньо про сертифікати SSL, щоб можна було направити будь-якого постачальника, щоб зрозуміти, де несправність.
Під час розслідування мою увагу звернула на різницю у виведенні наступних двох команд (я видалив сертифікати з виводу для читабельності):
echo "" | openssl s_client -showcerts -connect pop.gmail.com:995
ПІДКЛЮЧЕНО (00000003)
глибина = 2 / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA
Перевірте помилку: num = 20: неможливо отримати сертифікат місцевого емітента
перевірити повернення: 0
---
Ланцюг сертифікатів
0 s: / C = US / ST = California / L = Mountain View / O = Google Inc / CN = pop.gmail.com
i: / C = US / O = Google Inc / CN = Google Internet Authority G2
----- НАЧАЙТЕ СЕРТИФІКАТ -----
----- ЗАКОННИЙ СЕРТИФІКАТ -----
1 s: / C = US / O = Google Inc / CN = Google Internet Authority G2
i: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA
----- НАЧАЙТЕ СЕРТИФІКАТ -----
----- ЗАКОННИЙ СЕРТИФІКАТ -----
2 с: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA
i: / C = US / O = Equifax / OU = Захищений сертифікатний орган Equifax
----- НАЧАЙТЕ СЕРТИФІКАТ -----
----- ЗАКОННИЙ СЕРТИФІКАТ -----
---
Сертифікат сервера
subject = / C = US / ST = California / L = Mountain View / O = Google Inc / CN = pop.gmail.com
емітент = / C = US / O = Google Inc / CN = Google Internet Authority G2
---
Імена клієнтського сертифіката клієнтів не надіслані
---
Рукостискання SSL прочитало 3236 байт і записало 435 байт
---
Новий, TLSv1 / SSLv3, Шифр RC4-SHA
Публічний ключ сервера - 2048 біт
Підтримується безпечна повторна переговорка
Стиснення: НІКОЛИ
Розширення: NONE
SSL-сесія:
Протокол: TLSv1
Шифр: RC4-SHA
ID сесії: 745F84194498529B91B7D9194363CBBD23425446CF2BFF3BF5557E3C6606CA06
Session-ID-ctx:
Майстер-ключ: DED1AE0A44609F9D6F54626F4370ED96436A561A59F64D66240A277066322DCD2CCB9A6D198C95F4D2B0C7E6781EECD2
Key-Arg: Ні
Час початку: 1397678434
Час очікування: 300 (сек)
Підтвердити код повернення: 20 (не вдається отримати сертифікат місцевого емітента)
---
+ OK Gpop готовий до запитів від 69.3.61.10 c13mb42148040pdj
Зроблено
echo "" | openssl s_client -showcerts -connect secure.emailsrvr.com:995
ПІДКЛЮЧЕНО (00000003)
глибина = 2 / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA
перевірити помилку: num = 19: самопідписаний сертифікат у ланцюжку сертифікатів
перевірити повернення: 0
---
Ланцюг сертифікатів
0 s: / serialNumber = tG0GnsyAUkdX7DEo15ylNBjQJqAWZ / dD / OU = 4159320284 / OU = Див. Www.rapidssl.com/resources/cps (c) 14 / OU = Доменний контроль підтверджено - RapidSSL (R) /CN=secure.emailsrvr.com
i: / C = US / O = GeoTrust, Inc./CN=RapidSSL CA
----- НАЧАЙТЕ СЕРТИФІКАТ -----
----- ЗАКОННИЙ СЕРТИФІКАТ -----
1 с: / C = US / O = GeoTrust, Inc./CN=RapidSSL CA
i: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA
----- НАЧАЙТЕ СЕРТИФІКАТ -----
----- ЗАКОННИЙ СЕРТИФІКАТ -----
2 с: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA
i: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA
----- НАЧАЙТЕ СЕРТИФІКАТ -----
----- ЗАКОННИЙ СЕРТИФІКАТ -----
---
Сертифікат сервера
subject = / serialNumber = tG0GnsyAUkdX7DEo15ylNBjQJqAWZ / dD / OU = 4159320284 / OU = Див. www.rapidssl.com/resources/cps (c) 14 / OU = Доменний контроль підтверджено - RapidSSL (R) /CN=secure.emailsrvr.com
емітент = / C = US / O = GeoTrust, Inc./CN=RapidSSL CA
---
Імена клієнтського сертифіката клієнтів не надіслані
---
Рукостискання SSL прочитало 3876 байт і записало 319 байт
---
Новий, TLSv1 / SSLv3, шифр - DHE-RSA-AES256-SHA
Публічний ключ сервера - 2048 біт
Підтримується безпечна повторна переговорка
Стиснення: НІКОЛИ
Розширення: NONE
SSL-сесія:
Протокол: TLSv1
Шифр: DHE-RSA-AES256-SHA
ID сесії: 3F4EE3992B46727BE2C7C3E76A9A6A8D64D66EE843CB1BB17A76AE2E030C7161
Session-ID-ctx:
Мастер-ключ: 016209E50432EFE2359DB73AB527AF718152BFE6F88215A9CE40604E8FF2E2A3AC97A175F46DF737596866A8BC8E3F7F
Key-Arg: Ні
Час початку: 1397678467
Час очікування: 300 (сек)
Перевірте код повернення: 19 (самопідписаний сертифікат у ланцюжку сертифікатів)
---
Зроблено
Я намагався зрозуміти, чи це має сенс, тому що коли надається -CApathпараметр, команди не створюють помилок:
openssl s_client -CApath /etc/ssl/certs -showcerts -connect secure.emailsrvr.com:995
CONNECTED(00000003)
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = "GeoTrust, Inc.", CN = RapidSSL CA
verify return:1
depth=0 serialNumber = tG0GnsyAUkdX7DEo15ylNBjQJqAWZ/dD, OU = 4159320284, OU = See www.rapidssl.com/resources/cps (c)14, OU = Domain Control Validated - RapidSSL(R), CN = secure.emailsrvr.com
verify return:1
...
openssl s_client -CApath /etc/ssl/certs -showcerts -connect pop.gmail.com:995
CONNECTED(00000003)
depth=3 C = US, O = Equifax, OU = Equifax Secure Certificate Authority
verify return:1
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = Google Inc, CN = Google Internet Authority G2
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google Inc, CN = pop.gmail.com
verify return:1
...
Я також можу -CAfileуспішно використовувати цю опцію після завантаження сертифікату CAfile безпосередньо з GeoTrust.
Тим не менш, Fog Creek, здається, вважає, що проблема полягає в kert, тому що вони намагалися додати cert до Trustмагазину моно без успіху. Я б не погоджувався з ними, але (як згадувалося вище), хоча більшість перевіряючих SSL або не перевіряє порт 995, або успішно під час спроби, я знайшов цю сторінку, яка створює SSL-помилку 7.
Чи правильно витлумачити висновок, щоб це означало, що з cert немає нічого поганого?
openssl s_clientза замовчуванням не імпортуються жодні кореневі серти. Спробуйте це замість цього: openssl s_client -connect secure.emailsrvr.com:995 -showcerts -CApath /etc/ssl/certsі, ймовірно, ви виявите, що помилка самопідписання зникає.