Проверка выпущенного и дат окончания срока действия для сертификатов включила цепочку сертификата

S, которые Вы видите в "выполнить" положении в пользователе и столбце группы, является SetUID (Идентификатор пользователя аппарата на Выполнении) и SetGID (Идентификатор Set Group на выполнении) биты.

Полномочия файла Unix являются на самом деле 4-разрядным восьмеричным числом SUGO

  • S управляет SetUID (4), SetGID (2) и "Липкий" (1) биты
  • U управляет Read (4) Запись / (2) / Выполняются (1) биты для владельца файла
  • G управляет Считать/Писать/Выполнить битами для группы файла
  • O управляет Считать/Писать/Выполнить битами для всех остальных.

Можно удалить setuid биты из каталога с chmod ug-s directory, или chmod 0755 directory

Для получения дополнительной информации см. страницу справочника для chmod, и эта страница Wikipedia о SetUID укусила.

0
задан 24 September 2013 в 14:26
2 ответа

Ответ - да, вы можете сделать это с помощью openssl , вы можете легко завершить это как "проверочный" скрипт, но я не знаю плагина, который уже делает это.

Сначала кешируйте сертификат сервера и всю цепочку:

echo Q | openssl s_client -connect www.google.com:443 -showcerts > chain.pem

(этот файл цепочки содержит сертификат сайта, промежуточную цепочку, вместе с другим мусором - это не представляет проблемы для openssl )

Если вы хотите вывести только детали каждого сертификата в файле цепочки:

gawk 'BEGIN { pipe="openssl x509 -noout -subject -dates -serial "} \
  /^-+BEGIN CERT/,/^-+END CERT/ { print | pipe }
  /^-+END CERT/                 { close(pipe); printf("\n")}  ' chain.pem

Добавить / опустить -последовательный , -издатчик , -фингерпринт , -целевой в качестве предпочтительного. Вы даже можете склеить их вместе в одну строку (позаботившись о том, чтобы не указывать перенаправление и вхождения chain.pem ):

echo Q | openssl ... | gawk ...

Если вы хотите правильно проверить цепочку, включая диапазоны дат, читайте дальше.

Затем вытащите только сертификат сайта (первый), я использую здесь sed , потому что я ' m lazy; -)

sed -n '/-BEGIN/,/-END/p;/-END/q' chain.pem > site.pem

Затем проверьте:

openssl verify -verbose -CAfile chain.pem site.pem

Вот здесь и откатываются колеса: Google (правильно) не предоставляет (самоподписанный) корневой CA в цепочке:

site.pem: /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
error 2 at 2 depth lookup:unable to get issuer certificate

Итак, потяните корневой сертификат от Geotrust , сохраните его и настройте соответствующий каталог CA:

cd /usr/local/nagios/var/CA  # example!
wget http://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Certificate_Authority.pem
c_rehash .

И попробуйте еще раз:

openssl verify -verbose -CAfile chain.pem -CApath /usr/local/nagios/var/CA site.pem  

(обратите внимание на дополнительный параметр -CApath ), и вы получите:

site.pem: OK  

А теперь плохие новости: openssl не устанавливает код возврата, указывающий на успех, неудачу или что-то полезное. Вам нужно будет обработать вывод, чтобы убедиться, что все в порядке, в основном все, кроме одной строки с «ОК», указывает на проблему. Сертификаты с истекшим сроком действия, которые вы ищете, будут отображаться как:

error 10 at 2 depth lookup:certificate has expired

(где глубина может варьироваться).

Примечания и предостережения:

  • предоставленная сервером цепочка может не содержать корень (в этом нет необходимости, и если он делает, клиент должен игнорировать это), обойдите это, добавив -CApath / some / path , чтобы указать на каталог с предварительно хешированными доверенными корнями, как показано
  • , это не обнаруживает неправильного порядка файл цепочки и лишние сертификаты в файле цепочки (обычно они не являются проблемой для браузеров, но валидатор сайта обычно их помечает)
  • созданный здесь chain.pem содержит лишний мусор, это не представляет проблемы для openssl
3
ответ дан 4 December 2019 в 11:51

Мне не известен плагин для проверки дат выпуска, но проверка даты истечения срока действия сертификатов является стандартной функцией плагина check_http .

В частности, см. параметр -C. Пример:

./check_http -H www.google.com -C 14
OK - Certificate 'www.google.com' will expire on 09/11/2014 11:04.

Обратите внимание, что это будет работать со всем, что использует SSL (LDAPS, IMAPS и т. Д.), А не только с HTTPS.

Если вы хотите проверить сертификаты в цепочке, вы можете попробовать что-то вроде check_ssl_cert . (Я никогда им не пользовался, но информация об использовании выглядит так, как будто он делает то, что вы хотите.)

1
ответ дан 4 December 2019 в 11:51

Теги

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