Существует два вопроса для рассмотрения при проверке сертификата:
Инфраструктура открытых ключей с помощью спецификации сертификата X.509 определяет структуру для помещения на месте для этого. Это - иерархическая модель, где Вы получаете дерево, корнем которого Центры сертификации (CA) и его листы, сертификаты объекта конца (в особенности сертификаты сервера).
Корневые сертификаты CA имеют тенденцию быть самоподписанными. Набор их включен по умолчанию в Вашей ОС или браузере. Это - "прыжок веры" часть, где Вы доверяете своему поставщику ОС/браузера для проверки АВАРИИ, чтобы сделать их задание правильно. Частью большой коммерческой АВАРИИ является Verisign, Thawte...
CA может затем подписать другие сертификаты. Можно проверить сертификат, который Вы никогда не видели прежде путем проверки, был ли он подписан CA, которому Вы доверяете. Может также быть промежуточная АВАРИЯ. Например, сертификат для https://www.google.com/
был подписан "Thawte SGC CA", который был самостоятельно подписан "VeriSign, Общественностью Inc./Class 3 Основной Центр сертификации" (я закорачиваю имена здесь для упрощения). Задание CA состоит в том, чтобы проверить (средствами, внешними к PKI), что человек/учреждение, которому это выпускает сертификат, является законным владельцем того имени хоста (например. www.google.com
здесь). Путем эта внеполосная проверка варьируется для сертификатов non-EV, это часто делается просто путем посылания электронного письма адресу, который зарегистрировал доменное имя (доступный в whois каталоге).
После того как это сделано, предположите, что Вы не знаете, доверять ли https://www.google.com/
, клиент проверяет этот сертификат против доверительных привязок, которые он имеет (АВАРИЯ, часто предварительно импортируемая поставщиками ОС/браузера). Если Вы соединяетесь с www.google.com
, браузер получает сертификат и затем может разработать цепочку до главного выпускающего (существует запись выпускающего в каждом сертификате), пока это не находит тот, которому это доверяет (в этом случае то от Verisign). Пока неплохо сертификату доверяют. Второй шаг состоит из проверки, что этот сертификат действительно для этой машины. Для HTTPS это сделано путем проверки, что имя хоста находится в подчиненном расширении имени альтернативы сертификата, или как нейтрализация, что это находится в "Общем названии" (CN) запись в подчиненном отличительном имени. Это объяснено в RFC 2818 (идентификационные данные сервера).
Здесь возможные попытки напасть следующие:
www.example.com
. Вы пытаетесь соединиться с www.google.com
, они перенаправляют трафик к своему полю, которое покажет сертификат, который будет поддаваться проверке CA, для которого Вы доверяете, но www.example.com
. Это - то, где проверка имени хоста важна. Ваш браузер предупредит Вас, что Вы не подключены к хосту, который Вы предназначили.Эта система разработана, чтобы гарантировать, что, если MITM перенаправляет трафик к их машине, клиент не примет соединение. Это, конечно, только допустимо, если пользователь не игнорирует предупреждения, показанные браузером.
Это - тот же принцип, за исключением того, что Вы - CA, и этот самоподписанный сертификат может также непосредственно быть сертификатом сервера. Если Вы создаете свой собственный самоподписанный сертификат и помещаете его на Вашу машину, можно также импортировать его в браузере как доверяемые полномочия, в этом случае Вы выполняете ту же процедуру, как описано выше.
Некоторые браузеры, как Firefox, позволят Вам добавить постоянные исключения к этим правилам. Если Вы знаете некоторыми другими средствами (например, администратор дал Вам лично сертификат), каков сертификат для машины, с которой Вы хотите соединиться, можно принять решение доверять им явно, даже если они не были подписаны CA, которому Вы доверяете или если имя не соответствует. Конечно, для этого, действительно необходимо знать априорно и явно каков этот конкретный сертификат должен быть.
Если в любом случаи, пользователь принимает решение проигнорировать предупреждения и принимает, чтобы быть перенаправленным к соединению с недоверяемым сертификатом, то MITM (с тем недоверяемым сертификатом) может видеть/перенаправлять/изменять трафик.
Могу я предложить немного другой подход? Я бы сначала удалил все файлы старше 7 дней, а на втором шаге удалил пустые папки. Примерно так:
$deleted = @()
Get-ChildItem $dump_path -Recurse | Where-Object {
-not $_.PSIsContainer -and $_.CreationTime -lt $del_date
} | ForEach-Object {
$deleted += $_.FullName
$_
} | Remove-Item
function Remove-EmptyFolders($folder) {
Get-ChildItem $folder | Where-Object { $_.PSIsContainer } | ForEach-Object {
$path = $_.FullName
Remove-Emptyfolders $path
if ( @(Get-ChildItem $path -Recurse | Where-Object { -not $_.PSIsContainer}).Length -eq 0 ) {
$deleted += $path
Remove-Item $path -Recurse -Force
}
}
}
Remove-EmptyFolders $dump_path
$html = $deleted | Select-Object @{Name='Path';Expression={$_}} | ConvertTo-Html
Большое спасибо за код. Это очень помогло.
Я добавил следующее, чтобы отправить электронное письмо с результатами удаления:
$style = "<style>BODY{font-family: Arial; font-size: 10pt;}"
$style = $style + "TABLE{border: 1px solid black; border-collapse: collapse;}"
$style = $style + "TH{border: 1px solid black; background: #dddddd; padding: 5px; }"
$style = $style + "TD{border: 1px solid black; padding: 5px; }"
$style = $style + "</style>"
$html = $deleted | Select-Object @{Name='Path';Expression={$_}} | ConvertTo-Html -Head $style
#SMTP server name
$smtpServer = "smtp.xxxx.com"
#Creating a Mail object
$msg = new-object Net.Mail.MailMessage
#Creating SMTP server object
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
#Email structure
$msg.From = "email@xxxx.com"
#$msg.ReplyTo = "replyto@xxxx.com"
$msg.To.Add("email@xxxx.com")
$msg.subject = "Deleted files and folders"
$msg.IsBodyHTML = $true
$msg.body = $html
#Sending email
$smtp.Send($msg)
Я заметил, что сгенерированное электронное письмо содержит только список удаленных файлов, а не папки, так что убежище Не понял, почему папки не указаны (если у вас есть какие-то идеи, которые были бы замечательны).