【问题标题】:PowerShell - Windows Trusted Certificate not Authenticating SSL over FTPPowerShell - Windows 受信任证书未通过 FTP 验证 SSL
【发布时间】:2023-03-26 19:38:01
【问题描述】:

我完成了this answer 的步骤 1-4,这会将我的证书添加到“受信任的根证书颁发机构”>“证书”中,并且该证书被授予 <All> 预期用途。

$ftp_request.EnableSsl = $true 时,执行下面的 PowerShell 代码失败,The remote certificate is invalid according to the validation procedure。当$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 写入处理程序来手动处理此问题,但我希望 Windows 证书管理器自动处理 SSL 证书。

【问题讨论】:

    标签: powershell ssl ftp filezilla ftps


    【解决方案1】:
    $ftp_path = "ftp://127.0.0.1/$file_name"
    

    将证书添加为所有用途的受信任证书并不意味着证书对所有主机都是受信任的。您用于连接的主机名仍然必须与证书的主题相匹配。虽然您没有提供有关证书本身的任何信息,但我的猜测是您的证书不是为主题“127.0.0.1”颁发的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-03
      • 2016-01-15
      • 1970-01-01
      • 2016-01-17
      • 2016-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多