【发布时间】:2018-01-29 01:40:34
【问题描述】:
我正在尝试在 Powershell 中使用 FtpWebRequest 访问 Filezilla 服务器,如下所示:
$ftprequest = [System.Net.FtpWebRequest]::Create($sourceuri)
$ftprequest.Method = ([System.Net.WebRequestMethods+Ftp]::ListDirectoryDetails + " -a")
$ftprequest.Credentials = New-Object System.Net.NetworkCredential($username,$password)
$ftprequest.EnableSsl = $true
在 Filezilla Server 中有一个“生成新证书”,这是我用来创建证书的。这创建了一个 Filezilla 指向的用于私钥和证书文件的 .crt 文件。
服务器还配置了“启用 FTPS”和“允许显式 FTP over TLS”选项。
我能够使用 Filezilla 客户端愉快地访问服务器(尽管它警告服务器的证书未知)。
要从 Powershell 客户端访问服务器,而不会收到有关证书的投诉,我的理解是最好的办法是在客户端计算机上导入证书。我设法通过下载 .crt 文件,使用记事本手动剥离私钥部分,然后运行来做到这一点:
Import-Certificate -FilePath .\filezillaCertificate.crt -CertStoreLocation cert:\CurrentUser\My
但是,尝试使用 FtpWebRequest 连接时,我仍然收到错误消息“根据验证程序,远程证书无效。”
谁能指出我正确的方向?
【问题讨论】:
-
我也尝试过使用
$cert=New-Object ([System.Security.Cryptography.X509Certificates.X509Certificate]::CreateFromCertFile("D:\Temp\certificate.crt"))$ftprequest.ClientCertificates.Add($cert)将证书直接添加到FtpWebRequest对象
标签: powershell ssl filezilla