AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 820851
Accepted
geonaut
geonaut
Asked: 2016-12-16 02:17:37 +0800 CST2016-12-16 02:17:37 +0800 CST 2016-12-16 02:17:37 +0800 CST

使用客户端身份验证证书 (OpenSSL) 调试 curl FTPS 连接

  • 772

(从 StackOverflow 移出)我被要求使用客户端身份验证证书设置 FTPS 连接。我是客户端,连接到服务器。我在防火墙后面的 Windows 7 工作站上,尽管此连接最终将在专用的 CentOS VM 上使用。其他一些信息:

  • 仅 TLS 1.2
  • 仅被动模式
  • 我的 WAN IP 已列入白名单
  • 我现在正在连接到一个测试 URL
  • 没有出站防火墙(只有入站规则)
  • 密钥应以 PEM 格式发送

我从 Comodo 购买了证书,并使用 IE10 生成了证书。我从 IE 导出了完整的证书,带有私钥和扩展属性,格式为 .pfx。

我使用 OpenSSL 编写了一个小批处理文件来从 .pfx 中提取必要的部分:

::Extract the private key from the PFX
openssl pkcs12 -in comodo.pfx -nocerts -out encrypted.key
::Extract unencrypted private key
openssl rsa -in encrypted.key -out decrypted.key
::Extract the public cert in Base64 from the PFX
openssl pkcs12 -in comodo.pfx -clcerts -nokeys | openssl x509 -out comodo.cer
::Extract the chain bundle from the PFX
openssl pkcs12 -in comodo.pfx -nodes -nokeys -cacerts | openssl x509 -out comodo.crt

使用提取的关键部分,我一直在尝试各种 curl (v7.46.0) 命令来连接到 FTPS 服务器。连接不断失败。我的最新尝试如下。错误几乎总是相同的。

curl -3 -k -v --ftp-ssl --tlsv1.2 --ftp-ssl-reqd --ftp-pasv --key decrypted.key --cacert comodo.crt --cert comodo.cer --user REMOVED:REMOVED ftp://ftps.REMOVED/

输出的一个例子是:

> curl -3 -v -k --user REMOVED:REMOVED --ftp-ssl --tlsv1.2 --ftp-ssl-reqd --ftp-skip-pasv-ip --cert comodo.cer --key priv.pem ftp://ftps.REMOVED/
*   Trying REMOVED_IP.
* Connected to ftps.REMOVED (REMOVED_IP) port 21 (#0)
< 220 Service ready for new user.
> AUTH SSL
< 234 Command AUTH okay; starting SSL connection.
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* Unknown SSL protocol error in connection to ftps.REMOVED:21
* Closing connection 0 curl: (35) Unknown SSL protocol error in connection to ftps.REMOVED:21
>pause
Press any key to continue . . .

奇怪的是,如果我连接 FileZilla,我似乎可以通过 TLS 握手,但是当我尝试上传文件时会遇到不同的错误。由于这种联系最终将通过 curl 建立,因此我专注于这种方法。

我已经尝试了一个多星期。服务器管理员已从我的提供商处购买了证书,并且可以毫无问题地连接。我被这个难住了。任何帮助将不胜感激。一般 curl / ftps 调试技巧也将不胜感激。

ftp ssl ftps openssl curl
  • 1 1 个回答
  • 3669 Views

1 个回答

  • Voted
  1. Best Answer
    geonaut
    2017-03-30T07:50:43+08:002017-03-30T07:50:43+08:00

    这最终成为一个非 FTP 问题。客户端系统只允许一个 CA 证书与一个用户关联,因此我们的一些虚拟用户阻止了 CA 密钥被接受。不过感谢大家的帮助。

    • 0

相关问题

  • 知道任何适用于 Windows 的快速可编写脚本的 ftp 客户端吗?[关闭]

  • 无法连接到我的 FTP 服务器,为什么?

  • 无法再连接到 FTP 站点

  • 您更喜欢哪个 FTP 客户端,为什么?

  • XP下设置FTP服务器时出错

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve