【问题标题】:TCPDF: getimagesize(): SSL operation failed with code 1 error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failedTCPDF:getimagesize():SSL 操作失败,代码 1 错误:1416F086:SSL 例程:tls_process_server_certificate:证书验证失败
【发布时间】:2018-07-26 07:10:37
【问题描述】:

我一直在使用 TCPDF。 在我的本地机器上,TCPDF 工作正常,但它在实际服务器中引发错误。错误信息如下。

消息:getimagesize():SSL 操作失败,代码为 1。OpenSSL 错误消息:错误:1416F086:SSL 例程:tls_process_server_certificate:certificate verify failed

消息:getimagesize():启用加密失败

getimagesize(http:/test.com/images/sample.jpg):打开流失败:操作失败

如果我理解正确的话,这个应用程序无法验证服务器的 SSL 证书。

所以,按照this example,我用下面的方式获取签名。

$pdf  = new TCPDF();
$certificate = '/blahblah/certs/certificate.crt';
$pdf->setSignature($certificate, $certificate, 'pdfgen', '', 2, []);

不过,我看到了同样的错误。

当 TCPDF 抛出这个"SSL operation failed with code 1" 错误时,这是​​什么意思?

我们将不胜感激。

【问题讨论】:

  • $pdf->setSignature() 正在为您的文档添加数字签名。加载(远程)图像时,它与 ssl 错误无关。验证图像的 URL。您可以从服务器的外壳测试 URL(例如 curl、openssl s_client)。另外:您使用的是 http 而不是 https (getimagesize)。

标签: php ssl openssl tcpdf


【解决方案1】:

我在使用库 html2pdf 时遇到了同样的问题,该库需要通过 PHP 函数 getsizeimage() 获取图像大小,而我的图像 URL 使用 https,所以我通过在我的 php.ini 文件中指定 SSL 来解决证书。

[openssl]
openssl.cafile="/etc/nginx/tls/yourCert.crt"

【讨论】:

    【解决方案2】:

    或者您可以在本地尝试 HTTP,然后在实时服务器上更改为 HTTPS

    【讨论】:

      【解决方案3】:

      这个问题需要我几个小时!我有一个 ngnix 服务器。我唯一要做的就是将“mykey.ca”文件的内容粘贴到“mykey.crt”文件的末尾,将其保存为新文件“newBothKey.crt”并将该文件设置在“/etc/ nginx/站点可用"

      listen 443 ssl;
      ssl on;
      ssl_certificate /etc/nginx/.ssl/sitename/newBothKey.crt;
      ssl_certificate_key /etc/nginx/.ssl/sitename/mykey.key;
      ssl_protocols TLSv1.2;
      

      别忘了重启nginx:

      sudo systmctl restart nginix
      

      【讨论】:

        猜你喜欢
        • 2019-04-08
        • 2018-12-21
        • 2021-09-04
        • 2019-12-12
        • 2016-12-19
        • 1970-01-01
        • 1970-01-01
        • 2015-08-19
        相关资源
        最近更新 更多