У мене проблеми з налаштуванням SSL на 32-бітному сервері Debian 6.0. Я відносно новачок із SSL, тому, будь ласка, терпіть зі мною. Я включаю стільки інформації, скільки можу.
Примітка: Справжнє доменне ім’я було змінено для захисту ідентичності та цілісності сервера.
Конфігурація
Сервер працює за допомогою nginx. Він налаштований таким чином:
ssl_certificate /usr/local/nginx/priv/mysite.ca.chained.crt;
ssl_certificate_key /usr/local/nginx/priv/mysite.ca.key;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_verify_depth 2;
Я прив’язав свій сертифікат методом, описаним тут
cat mysite.ca.crt bundle.crt > mysite.ca.chained.crt
де mysite.ca.crt
сертифікат, який мені надав уповноважений орган, а bundle.crt
також сертифікат ЦС, який мені також надіслав мій орган підписання. Проблема в тому, що я не придбав сертифікат SSL безпосередньо у GlobalSign, а натомість через свого хостинг-провайдера Singlehop.
Тестування
Сертифікат перевіряється належним чином у Safari та Chrome, але не у Firefox. Первинний пошук виявив, що це може бути проблемою із ЦС.
Я дослідив відповідь на подібне запитання , але не зміг знайти рішення, оскільки я насправді не розумію, для чого служить кожен сертифікат.
Я використав s_client openssl для тестування з'єднання і отримав вихід, який, схоже, вказує на ту ж проблему, що і аналогічне питання . Помилка така:
depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=27:certificate not trusted
verify return:1
Повну інформацію про відповідь openssl (із усіченими сертифікатами та непотрібною інформацією) можна знайти тут .
Я також бачу попередження:
No client certificate CA names sent
Чи можливо, що це проблема? Як я можу переконатися, що nginx надсилає ці імена ЦС?
Спроби вирішити проблему
Я спробував вирішити проблему, завантаживши кореневий ЦС безпосередньо з GlobalSign, але отримав ту ж помилку. Я оновив кореневий центр сертифікації на моєму сервері Debian за допомогою update-ca-certificates
команди, але нічого не змінилося. Це, ймовірно, тому, що CA, надісланий від мого постачальника, був правильним, тому це призвело до того, що сертифікат був прив’язаний двічі, що не допомагає.
0 s:/OU=Domain Control Validated/CN=*.mysite.ca
i:/C=BE/O=GlobalSign nv-sa/CN=AlphaSSL CA - SHA256 - G2
1 s:/O=AlphaSSL/CN=AlphaSSL CA - G2
i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
2 s:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
Наступні кроки
Будь ласка, дайте мені знати, чи є щось, що я можу спробувати, або якщо я просто все налаштував неправильно.
AlphaSSL CA - SHA256 - G2
. Однак ваша мережа постачає проміжні продуктиAlphaSSL CA - G2
. Я вважаю, що вам потрібно видалити поточний проміжний сертифікат (AlphaSSL CA - G2
) і замінити його на той, що має відбиток пальцяae:bf:32:c3:c8:32:c7:d7...
(AlphaSSL CA - SHA256 - G2
). Крім того, вам не потрібно надсилатиGlobalSign Root CA
. Клієнт повинен вкорінювати свою довіру (або на проміжний рівень).