S, которые Вы видите в "выполнить" положении в пользователе и столбце группы, является SetUID (Идентификатор пользователя аппарата на Выполнении) и SetGID (Идентификатор Set Group на выполнении) биты.
Полномочия файла Unix являются на самом деле 4-разрядным восьмеричным числом SUGO
Можно удалить setuid биты из каталога с chmod ug-s directory
, или chmod 0755 directory
Для получения дополнительной информации см. страницу справочника для chmod
, и эта страница Wikipedia о SetUID укусила.
Ответ - да, вы можете сделать это с помощью 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
Мне не известен плагин для проверки дат выпуска, но проверка даты истечения срока действия сертификатов является стандартной функцией плагина 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 . (Я никогда им не пользовался, но информация об использовании выглядит так, как будто он делает то, что вы хотите.)