当前位置: 首页 > 知识库问答 >
问题:

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

汤承德
2023-03-14

我试图在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服务器中有一个“生成新证书”,这是我用来创建证书的。这创造了一个新的环境。Filezilla为私钥和证书文件指向的crt文件。

服务器还配置有选项“启用FTPS”和“允许TLS上的显式FTP”。

我能够使用Filezilla客户端愉快地访问服务器(尽管它警告服务器的证书未知)。

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

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

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

谁能给我指出正确的方向吗?

共有1个答案

轩辕乐邦
2023-03-14

这不是一个PoSH问题。这是一个纯粹的PKI101(证书实现)问题。

自签名证书在大多数情况下总是被认为是不可信的,因为没有办法验证它,它没有公共注册机构,也没有与之关联的公共CRL(证书撤销列表/权威机构)。

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

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

我知道你的帖子是关于Filezilla服务器的(完全公开:我从未见过使用过),但是下面文章中关于在IIS上通过SSL设置FTP的方法应该是类似的。

SSL上的FTP

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

与使用超文本传输安全协议不同,超文本传输安全协议需要单独的端口和连接来进行安全(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服务器选项-

•在“私钥文件”中导入私钥(.key文件与CSR一起生成)。

在同一个文件中导入证书和认证链: 1)在您的证书状态页面上,下载file.cer文件和认证链chain-xxx.txt2)将这两个文件连接成一个3)导入文件在"证书文件"

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

创建站点

>

以下是需要填写的详细信息。

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

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

FileZilla wiki还讨论了如何实现SSL。

 类似资料:
  • 问题内容: 一般来说,我从GoDaddy获得了3个文件: 主证书文件 服务器私钥 捆绑文件 通过以下方式在Go服务器中配置了所有这些文件: 网络服务器运行正常,当前发布在。 我使用验证了我的SSL ,它的响应是 您可以转到此链接查看所有详细结果。 我想念什么? 问题答案: 在该线程之后,并从doc中开始: 如果证书是由证书颁发机构签名的,则certFile应该是服务器证书,任何中间件和CA证书的串

  • 所以,标题很简单。我想使用一家公司的Web服务,我有. cers和. p12文件。据说,我应该在发出请求时使用. p12。我已经将. cers导入到windows中,我可以很容易地使用postman发出请求。但是当我尝试使用node.js进行请求时,我会出错。这是代码,我使用模块: 我收到以下错误:

  • 问题内容: 我一直在研究一个简单的API示例,即带有身份验证的ServiceStack Hello World示例的修改版本。概念验证的目的是创建一个RESTful API,该API包含要求身份验证的服务,这些服务完全可以通过Ajax从多个不同的Web项目访问。 我已经阅读了有关Wiki的认证和授权以及实现CORS的实现,(很多,结果[抱歉,没有足够的信誉指向相关链接])。此时,我的Hello服务

  • 使用用户证书验证 SSH (服务端) 在以安全为前提下要保障可靠性、可控性和一致性是非常复杂的。我们可以利用 SSH 又或者说 OpenSSH 来替代所依赖的中央身份验证(比如 LDAP 或者 Kerberos) 除了 通过 PIV 和 PKCS#11 验证 SSH 之外,还可以增加远程 SSH 验证的安全性。Facebook 和 Yahoo 已经更换使用 SSH 用户证书来避免中心认证系统宕机。

  • 我有用于测试的开发人员服务器。它们具有SSL自签名证书,允许我们通过HTTPS测试web应用程序,但带有证书不可验证的显著警告。 这很好,但我有一个服务工作者会用抛出一个错误 SecurityError:无法注册ServiceWorker:获取脚本时发生SSL证书错误。 如何将服务工作者与具有自签名证书的intranet测试服务器一起使用?

  • 我有一个Spring SAML项目,它有一个JKS,其中加载了IDP的公共证书。我有一个理论问题: 如果我将发出请求的根CA或中间CA加载到JKS中,这是否足以信任IDP并验证IDP SAML消息?这样做的好处是,将来有一个共同发行人的IDP将被信任,而无需加载他们的证书。 我的理解是,IDP的实际公共证书需要在JDK中,这样Spring SAML才能验证请求,然而,请求中的X509是否足以完成这