PowerShell — доверенный сертификат Windows, не аутентифицирующий SSL через FTP

Я выполняю шаги 1-4 этого ответа, который добавляет мой сертификат в "Доверенные корневые центры сертификации" > "Сертификаты, " и сертификат выдается <All> по назначению.

Выполнение приведенного ниже кода PowerShell завершается с ошибкой The remote certificate is invalid according to the validation procedure, когда $ftp_request.EnableSsl = $true. Это удается, когда $ftp_request.EnableSsl = $false.

$file_folder = "C:\Users\username\Desktop"
$file_name = "test.txt"
$file_path = "$file_folder\$file_name"
$ftp_path = "ftp://127.0.0.1/$file_name"

$username = "user"
$pwd = "pass"

# Create a FTPWebRequest object to handle the connection to the ftp server
$ftp_request = [System.Net.FtpWebRequest]::Create($ftp_path)

# set the request's network credentials for an authenticated connection
$ftp_request.Credentials =
    New-Object System.Net.NetworkCredential($username, $pwd)

$ftp_request.UseBinary = $true
$ftp_request.UsePassive = $true
$ftp_request.KeepAlive = $false

$ftp_request.EnableSsl = $true

$ftp_request.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile

$file_contents = Get-Content -en byte $file_path
$ftp_request.ContentLength = $file_contents.Length

$ftp_stream = $ftp_request.GetRequestStream()
$ftp_stream.Write($file_contents, 0, $file_contents.Length)
$ftp_stream.Close()
$ftp_stream.Dispose()

Я знаю, что это можно сделать вручную, написав обработчик для ServicePointManager.ServerCertificateValidationCallback, но я хотел бы, чтобы SSL-сертификаты обрабатывались автоматически диспетчером сертификатов Windows.


person user2426679    schedule 28.12.2015    source источник


Ответы (1)


$ftp_path = "ftp://127.0.0.1/$file_name"

Добавление сертификата в качестве доверенного для всех целей не означает, что сертификат является доверенным для всех хостов. Имя хоста, которое вы используете для подключения, по-прежнему должно соответствовать теме сертификата. И хотя вы не предоставляете никакой информации о самом сертификате, я предполагаю, что ваш сертификат не выдан для субъекта "127.0.0.1".

person Steffen Ullrich    schedule 28.12.2015