在Powershell中使用FtpWebRequest来访问带有证书的Filezilla服务器

时间:2018-01-29 01:40:34

标签: powershell ssl filezilla

我正在尝试使用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"和#34;允许显式FTP通过TLS"。

我可以使用Filezilla Client愉快地访问服务器(尽管它警告服务器的证书未知)。

要从Powershell客户端访问服务器,而不会得到有关证书的投诉,我的理解是最好的办法是在客户端计算机上导入证书。我设法通过下载.crt文件,使用记事本手动剥离私钥部分,然后运行:

Import-Certificate -FilePath .\filezillaCertificate.crt -CertStoreLocation cert:\CurrentUser\My

但是,尝试使用FtpWebRequest进行连接时,我仍会收到错误"根据验证程序,远程证书无效。"

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

这不是PoSH问题。这是一个纯粹的PKI 101(证书实施)问题。

在大多数情况下,自签名证书将始终被视为不受信任,因为无法验证它,没有公共注册机构,也没有与之关联的公共CRL(证书撤销列表/权限)。

您无法为本地计算机上的远程位置创建PKI证书。您必须在远程位置创建证书,或购买公共证书并将其安装在远程位置证书存储区中。公钥和私钥必须驻留在远程服务器/站点上。对于任何服务器/站点,必须将证书注册/发布到该服务器,然后手动分配给站点(FTP / s,HTTP / s)。

然后,从目标下载公共证书并将其安装在本地计算机上。通常安装到本地机器商店。如果您无法使用浏览器下载该公共证书和证书链,请在访问该站点后单击该锁,然后您必须请求目标服务器/站点所有者向您发送公共证书以供您在本地安装。同样,通常安装到本地机器商店。

我知道您的帖子是关于Filezilla服务器的(完全披露:我从未在使用过的服务器上看到过),但是下面有关在IIS上设置FTP over SSL的文章中显示的方法应该类似。< / p>

  

FTP over SSL

     

该元素指定FTP over Secure Sockets Layer(SSL)   FTP服务的设置;最初引入了FTP over SSL   FTP 7.0中的IIS 7。

     

与使用HTTP over SSL不同,后者需要单独的端口和   用于安全(HTTPS)通信的连接,安全的FTP通信   与非安全通信在同一端口上发生。 FTP 7支持   两种不同形式的FTP over SSL:

     
    

https://docs.microsoft.com/en-us/iis/configuration/system.applicationhost/sites/site/ftpserver/security/ssl

  
     

https://docs.microsoft.com/en-us/iis/publish/using-the-ftp-service/using-ftp-over-ssl-in-iis-7

更新以查找FileZilla SSL指南

  

在FileZilla FTP Server上安装SSL证书   https://www.tbs-certificates.co.uk/FAQ/en/FileZilla_FTP_Server.html

     

在基于OpenSSL的服务器上安装证书非常相似   而不是在Apache上这样做:安装Apache证书,除此之外   指示文件路径的说明不一样!   对于FTP FileZilla服务器,通过接口:FileZilla Server   选项 - &gt; SSL / TLS设置:

     

•导入私钥(与CSR一起生成的.key文件)   &#34;私钥文件&#34;。

     

•在同一文件中导入证书和证书链:   1)在您的证书状态页面上,下载&#34; file.cer&#34;文件和   认证链&#34; chain-xxx.txt&#34; 2)连接这两个   将文件合并为一个3)将文件导入&#34;证书文件&#34;

     

如何在FileZilla中通过SSL / TLS连接FTP?

     

创建网站

     
      
  1. 转到文件&gt;&gt;网站管理员&gt;&gt;新网站。

  2.   
  3. 以下是填写所需的详细信息。

  4.         

    •主持人:输入我们的主机名(即ftp.yourdomain.com)或IP地址   已发送欢迎电子邮件。 •端口:21(默认FTP端口为21,你   也可以保持空白)。 •协议:FTP - 文件传输协议。 •   加密:从下拉列表中选择所需的显式FTP over TLS。   •登录类型:从下拉列表中选择“正常”。 •用户:您的FTP   用户名。 •密码:您的FTP密码。

         

    https://manage.accuwebhosting.com/knowledgebase/761/How-to-connect-FTP-over-SSLorTLS-in-FileZilla.html

FileZilla wiki还讨论了如何进行SSL实施。