Кнопка отмены на MFMessageComposeViewController не отображается

У меня была такая же точная проблема

Can't connect to PayPal to validate IPN message: SSL certificate: unable to get local issuer certificate

Я использовал образцы кода, сгенерированные в github paypal, найденные здесь (я использовал PHP): https://github.com/paypal/ipn -code-samples

Я загрузил оба сертификата и попробовал тестирование как от curl: http://curl.haxx.se/docs/caextract.html

. Примерно через 2 часа тестирования (с использованием симулятора ipn Paypal) и googling выяснилось, что paypal ipn не может быть протестирован на localhost, поэтому я нажал код в реальном времени и попробовал тестирование, но все равно получил ту же ошибку (даже с разрешениями, установленными в 777).

Когда я устанавливал CURLOPT_SSL_VERIFYPEER, false, он работал, но это бы побеждало цель иметь сертификат ssl.

После того, как вы просматриваете файлы моего сервера, Я нашел файл curl-ca-bundle.crt в моей папке PHP. Я решил сделать hardcode CURLOPT_CAINFO в моем сценарии PayPal ipn на этом пути. Это, наконец, сработало!

Я заметил, что этот старый .crt-файл включал некоторые сертификаты, которые не были в последнем .crt-файле с сайта curl. Это была куча сертификатов из verisign class 1, verisign class 2, verisign class 3 and verisign class 4.

Вот полный список имен сертификатов, которые я добавил в файл .crt curl:

  • Verisign Class 1 Public Primary Certification Власть
  • Verisign Class 1 Public Primary Certification Authority - G2
  • Verisign Class 1 Public Primary Certification Authority - G3
  • Verisign Class 2 Public Primary Certification Authority - G2
  • Verisign Class 2 Public Primary Certification Authority - G3
  • Verisign Class 3 Public Primary Certification Authority
  • Verisign Class 4 Public Primary Certification Authority - G2

Это может иметь какое-то отношение к тому, что говорил @Andomar: сертификат verisign от PayPal не включен в список по умолчанию (по умолчанию я имею в виду список по умолчанию для скрининга).

Я didn У меня есть время, чтобы отлаживать и точно определять, какой сертификат необходим, поэтому я просто включил их все.

Для тех, кто испытывает эту проблему в в будущем я бы предложил получить последние сертификаты от завитка и добавить один за другим сертификаты в списке выше, пока ошибка не исчезнет.

Вот ссылка на некоторые из этих сертификатов verisign (вам может понадобиться Google для других, не указанных в списке): www.symantec.com/page.jsp?id=roots

Примечание. *: Чтобы просмотреть текущие сертификаты Paypal, вы можете запустить эту команду в терминале:

openssl s_client -connect paypal.com:443 -showcerts

Если у кого-то есть более глубокое понимание этой проблемы, прокомментируйте, поскольку я потратил часы, чтобы понять все вышеизложенное.

0
задан beryllium 26 November 2015 в 23:21
поделиться