小编Wil*_*ega的帖子

将CURLOPT_CAINFO与更新的CA捆绑包一起使用会导致证书验证失败

我使用cURL验证WordPress插件中的PayPal事务.最近我开始收到有关用户无法完成购买过程的错误报告,因为无法验证交易.我将错误追踪到:

SSL certificate problem, verify that the CA cert is OK. Details: 
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Run Code Online (Sandbox Code Playgroud)

我在StackOverflow中发现了很多与同一问题有关的问题,他们中的大多数人说解决方案是使用CURLOPT_CAINFOcURL选项提供一堆CA. 我下载了这个插件,目前随附了http://curl.haxx.se/ca/cacert.pem的最新版本(2012年6月28日转换).这解决了我收到的大部分问题.

现在的问题是,我刚收到另一份付款失败的报告,错误是一样的:SSL certificate problem, verify that the CA cert is OK..有趣的是,现在的解决方法是删除CURLOPT_CAINFO选项.我想知道是否有解释.我认为使用更新的CA捆绑包(例如我下载的捆绑包)是一般解决方案,但似乎不是这样.

这种问题的一般解决方案是什么?什么可以解释使用更新的CA捆绑导致SSL证书问题,而不是修复它们?

这是cURL configuartion:

<?php
    $ch = curl_init("https://www.paypal.com/cgi-bin/webscr");
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_VERBOSE, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_CAINFO, '/path/to/cacert.pem');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
?>
Run Code Online (Sandbox Code Playgroud)

更新:www.paypal.com的证书由VeriSign签署.证书层次结构(如Firefox中所示)是:

  • VeriSign Class 3公共主要认证机构 - G5
  • VeriSign Class 3扩展验证SSL …

php curl

13
推荐指数
2
解决办法
3万
查看次数

为什么 Google Search Console 移动可用性报告中适合移动设备的页面数量少于索引的页面数量?

我维护的网站之一的移动可用性报告目前显示215 个有效(移动友好页面)。同时,Coverage 报告显示共有399 页有效(已编入索引)

我下载了所有已编入索引的 URL 列表以及当前被认为适合移动设备的所有 URL 的列表。然后我比较了这两个列表,并开始使用 URL 检查工具检查几个已编入索引但未显示为移动友好的 URL。

我检查过的所有 URL 的 URL 检查结果都显示该页面适合移动设备。一个例子如下所示:

URL 检查结果示例

移动可用性报告显示5 个带有错误的 URL,因此我掌握了大约 220 个已编入索引的 URL 总数的信息。

我想了解一些 URL 当前已编入索引,但不被认为适合移动设备,也没有重要的移动可用性问题,这意味着什么。

附加信息:

  • 两个月前(大约 11 月 15 日),适合移动设备的页面数量增加到 248 个,没有显示错误的页面。这个数字开始减少,直到达到当前值,但没有报告相应数量的错误。

    这就像一些页面被简单地从移动可用性报告中删除,但没有明确的原因。

    在同一时间段内,索引页面的数量增加了 1。

  • 11 月 25 日Google 搜索更新表明,一些报告将显示主要来自移动优先索引的数据。不幸的是,我仍然不清楚为什么索引页面>(移动友好页面+有移动问题的页面)。

    期望所有不适合移动设备的索引 URL 都显示错误是否不正确?

感谢您抽出时间来查看这个问题。

google-search-console

5
推荐指数
1
解决办法
1898
查看次数

如何使用 sqlalchemy-migrate 将列类型从字符变化更改为整数

我正在使用 sqlalchemy-migrate 来更改 Postgre SQL 数据库中表中一列的类型。我正在使用的升级脚本是:

# -*- cofing: utf-8 -*-

from sqlalchemy import MetaData, Table, Column, String, Integer
from migrate import changeset


metadata = MetaData()


def upgrade(migrate_engine):
    # ALTER TABLE courses ALTER COLUMN number SET DATA TYPE character varying;
    metadata.bind = migrate_engine
    courses = Table('courses', metadata, Column("number", Integer), extend_existing=True)
    courses.c.number.alter(type=String)


def downgrade(migrate_engine):
    # ALTER TABLE courses ALTER COLUMN number SET DATA TYPE integer;
    metadata.bind = migrate_engine
    courses = Table('courses', metadata, Column("number", String), extend_existing=True)
    courses.c.number.alter(type=Integer, cast='numeric')
Run Code Online (Sandbox Code Playgroud)

升级部分似乎工作,但降级总是失败并出现以下错误:

sqlalchemy.exc.ProgrammingError: (ProgrammingError) column …
Run Code Online (Sandbox Code Playgroud)

python postgresql sqlalchemy sqlalchemy-migrate

0
推荐指数
1
解决办法
9107
查看次数