我正在尝试使用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进行连接时,我仍会收到错误"根据验证程序,远程证书无效。"
有人能指出我正确的方向吗?
答案 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/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?
创建网站
转到文件&gt;&gt;网站管理员&gt;&gt;新网站。
- 醇>
以下是填写所需的详细信息。
•主持人:输入我们的主机名(即ftp.yourdomain.com)或IP地址 已发送欢迎电子邮件。 •端口:21(默认FTP端口为21,你 也可以保持空白)。 •协议:FTP - 文件传输协议。 • 加密:从下拉列表中选择所需的显式FTP over TLS。 •登录类型:从下拉列表中选择“正常”。 •用户:您的FTP 用户名。 •密码:您的FTP密码。
FileZilla wiki还讨论了如何进行SSL实施。