如何通过 curl 获取和使用证书

Jos*_*son 16 certificate curl

  1. 输入以下命令

    curl -k email@mail.com:password https://www.example.com 
    
    Run Code Online (Sandbox Code Playgroud)

    返回以下错误

     <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
    <TITLE>301 Moved</TITLE></HEAD><BODY>
    <H1>301 Moved</H1>
    The document has moved
    <A HREF="http://mail.google.com/mail/">here</A>.
    </BODY></HTML>
    badauth
    
    Run Code Online (Sandbox Code Playgroud)
  2. cacert.crt从这里下载文件后

    http://www.cacert.org/index.php?id=3
    
    Run Code Online (Sandbox Code Playgroud)

    然后将cacert.crt文件重命名为cacert.pem

    然后尝试:

    curl --cacert /path/to/cacert.pem email@mail.com:password https://www.example.com 
    
    Run Code Online (Sandbox Code Playgroud)

    但得到同样的错误。

  3. 然后尝试:

    curl  https://www.example.com 
    
    Run Code Online (Sandbox Code Playgroud)

    我收到这个错误

    curl: (60) SSL 证书问题:无法获得本地颁发者证书 更多详情请点击:http : //curl.haxx.se/docs/sslcerts.html

    curl 默认使用证书颁发机构 (CA) 公钥 (CA 证书) 的“捆绑”执行 SSL 证书验证。如果默认包文件不够用,您可以使用 --cacert 选项指定备用文件。
    如果此 HTTPS 服务器使用由捆绑中表示的 CA 签署的证书,则证书验证可能因证书问题而失败(它可能已过期,或者名称可能与 URL 中的域名不匹配)。
    如果您想关闭 curl 对证书的验证,请使用 -k(或 --insecure)选项

  4. 所以我试过 -k

    curl  -k https://www.example.com 
    
    Run Code Online (Sandbox Code Playgroud)

    但当然得到错误

    Badauth

我猜我的证书文件有问题,但我不知道从哪里获取证书文件,或者一旦我有了它怎么处理它。

我当然使用浏览器登录没有问题,但我想使用命令行自动执行此过程,以便我可以通过 WiFi 在我的 Android 平板电脑上使用 tasker 执行此操作。

小智 1

您可以从此处下载 cacert 根证书:http://www.cacert.org/index.php?id=3

  • 下载后我该如何处理它们?我不能使用浏览器使用的相同证书吗? (2认同)