PAYPAL – 2016 changement obligatoire (SSL V3, TLS et IPN)

paypal logo

PayPal change en 2016 divers petites choses. Fin du SSL V3 au profit du TLS 1.2 (le support du TLS 1.0 sera retiré).
Pour en savoir plus, je vous laisse lire la suite de cet article.

PayPal vient de changer la dates limites concernant les mises à niveau de sécurité (01/06/2016) :

30 Juin 2017 : 

  • Mise à niveau vers TLS 1.2 et HTTP/1.1
  • Mise à niveau HTTPS pour les envois IPN
  • Abandon de la méthode GET pour les API SOAP/NVP classiques
  • En savoir +

Tableau des modifications des dates de mise à jour de PayPal (01/06/2016) :

paypal-mises-a-niveau-de-securite

PayPal, ce qui change en 2016 :

17 Juin 2016 :

  • TLS 1.2 sera la référence (le support du TLS 1.0 va prendre fin).
    Il vous faudra OpenSSL 1.0.1 ou supérieur.
    Pour vérifier la version du OpenSSL de votre serveur :
    – En PHP : faite un phpinfo()
    – En SSH tapez : openssl version
    Exemple d’un openssl obsolète ci-dessous :
    ssh-openssl-version
  • Passé le 17/06/2016 toutes les connexions en TLS v1.0 et TLS v1.1 seront refusée.
  • Sur OVH : explication pour passer en OpenSSL 1.0.1k / TLS1.2 (cliquez-ici).
    • Ce qui va ajouter dans .ovhconfig à la racine de votre serveur :
      app.engine=php
      app.engine.version=5.6
      http.firewall=none
      environment=production
      container.image=stable
  • EN GROS : On passe tous au TLS 1.2 avant le 17 juin 2016.
  • En savoir +

14 Avril 2016 :

  • Adresse IP mise à jour pour SFTP Paypal.
  • En savoir +

30 Septembre 2016 (BOOM Certificat SSL – HTTPS) :

  • IPN pour « Instant Payment Notification » (ou « Notification instantanée de paiement »).
  • HTTP/1.1
  • HTTPS
  • TLS 1.2
  • 2048-bit, SHA-256 certificates signed with VeriSign’s G5 root
  • On arrête le support du GET HTTP pour le POST NVP/SOAP (plus d’infos)
    • Après le 17 Juin 2016 (sandbox) :
      •  api.sandbox.paypal.com
      • api-3t.sandbox.paypal.com
      • api-aa.sandbox.paypal.com
      • api-aa-3t.sandbox.paypal.com
    • Après le 30 Septembre 2016 (environnement de production) :
      •  api.paypal.com
      • api-aa.paypal.com
      • api-3t.paypal.com
      • api-aa-3t.paypal.com
  • EN GROS : l’IPN doit-être sur un retour en https (certificat SSL obligatoirement avant le 30/09/2016).
  • En savoir +

Entre le 31 Janvier 2016 et le 1er Janvier 2018 :

  • SHA-256 en 2048-bit expirant tous les 3 ans
  • En savoir +

Pourquoi PayPal change en 2016 :

Qu’est-ce que Poodle ?

Poodle est le nom d’une nouvelle faille de sécurité Internet affectant SSL 3.0 (Secure Sockets Layer), un protocole conçu pour sécuriser les connexions Internet. L’exploitation de cette vulnérabilité permet aux cybercriminels d’accéder à des connexions censées être sécurisées par l’intermédiaire de ce protocole de sécurité particulièrement exploité, mais vieux de 15 ans.

Quelles sont les mesures prises par PayPal ?

Nous allons intégralement cesser notre prise en charge du SSL 3.0 le 3 décembre 2014. Nous sommes toutefois conscients qu’une telle décision peut engendrer des problèmes de compatibilité pour certains clients, les empêchant de payer avec PayPal sur les sites de marchands, entre autres conséquences. Pour évaluer votre situation et trouver une solution à vos éventuelles difficultés, nous avons créé ce Guide des mesures applicables aux marchands. Utilisez-le pour vérifier que votre intégration n’est pas menacée par cette vulnérabilité.

Sandbox Paypal (SSL 3.0 c’est terminé) :

A la date de l’écriture de cet article (04/03/2016), la Sandbox de Paypal (appelé aussi l’environnement de test) accessible à l’adresse https://developer.paypal.com a déjà désactivé le SSL 3.0

Vous aurez les erreurs suivantes en Sandbox si vous utilisez encore le SSL 3.0 :

  • * Erreur protocole SSL inconnu, échec de la connexion sécurisée à api-3t.sandbox.paypal.com:-9824
  • 140062736746144:error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number:s3_pkt.c:337:

Il faudra passer sur du TLS (Transport Layer Security).

En savoir +

Une question ?

  • Vous pouvez me contacter par mail ou sur la page de contact.

Source : 

Michael

Développeur / intégrateur, travaillant en agence web depuis 2005, je viens à présent vous proposer de venir découvrir mes créations personnelles de plugins / themes pour le CMS Wordpress & Prestashop, quelques solutions en mode SAAS & un peu d'actualité web ( / Twitter).

Vous aimerez aussi...

16 réponses

  1. planete dit :

    Bonjour,

    Merci pour votre article, lorsqu’un site n’utilise pas de certificat et est en HTTP: devons nous faire quelque chose pour ce changement prévu en Juin 2016 ?

    Il y a aussi eu une maj du module Paypal le 12/04/2016 pour Prestashop, pourtant en Sandbox il y a les même problèmes qu’avant:
    PayPal response:
    ->
    Making new connection to ‘api-3t.sandbox.paypal.com/nvp’
    Connect with CURL method successful
    Sending this params:
    METHOD=SetExpressCheckout&VERSION=106&PWD=EK2DVEJ3UFJNF9JJ&USER=(…)
    Send with CURL method failed ! Error: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
    Connect failed with fsockopen method

    Les lignes du api/paypal-connect.php ont changés dans cette version, maintenant c’est inscrit :
    @curl_setopt($ch, CURLOPT_SSLVERSION, Configuration::get(‘PAYPAL_VERSION_TLS_CHECKED’) == ‘1.2’ ? 6 : 1);

    Savez vous quels sont les modifications à faire ?

    merci de votre retour

    • Michael dit :

      Bonjour « Planete »,

      Oui effectivement pour Juin 2016 il faut s’assurer que votre OpenSSL est bien à jour.
      S’il s’agit d’un serveur mutualisé, c’est votre hébergeur (ex : OVH, Gandi, 1and1, …) qui va s’en occuper.
      S’il s’agit d’un serveur dédié, c’est sans doute à vous de le faire.

      Pour le nouveau module du 12/04/2016, je n’ai pas essayer encore.

  2. Mohamed dit :

    Bonsoir,
    tout d’abord je souhaite vous remercier pour la qualité de votre article.
    Je me trouve dans la même situation que celle expliquée dans votre article. J’ai une boutique prestashop qui est hébergée sur un serveur ovh (debian squeeze +ispconfig).Apache/2.2.16
    En effectuant votre manip sur ssh, ça m’affiche la version OpenSSL 0.9.8o 01 Jun 2010.
    D’après ce que j’ai pu lire cette version ne supporte pas tls1.2.
    Selon vous, ma configuration actuelle (debian 6 et apache2.2.16) me permet-elle de passer à la version Openssl 1.0.1

    En vous remerciant pour votre aide

  3. Antoine dit :

    Bonjour,
    Je dispose d’un hébergement mutualité 1&1.
    Effectivement, IPN ne marche pas, suite à l’erreur : « Can’t connect to PayPal to validate IPN message: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure ».

    OpenSSL version me donne : OpenSSL 0.9.8o 01 Jun 2010

    Comment faire pour upgrader tout ça, étant mutualité je n’ai pas accès à grand chose.

    Merci 🙂

    • Michael dit :

      Bonjour Antoine,
      Vous n’avez rien à changer si vous êtes sur un mutualisé.
      Votre hébergeur 1and1 va s’en occuper.
      Vérifier si OpenSSL est à jour 1 fois / mois.
      NB : PayPal a repoussé certaine mise à jour à 2017.

  4. LudoLCG dit :

    Bonjour, merci pour votre article mais tous ces termes techniques me laissent un peu perplexe 🙁

    Pour faire simple, j’ai crée un site joomla pour un client (le CMS est à jour).
    Ce n’est pas une boutique E-commerce et le site n’utilise donc pas un serveur sécurisé type SSL, mais un http classique.
    Néanmoins nous utilisons un composant permettant de remplir un formulaire de réservation avec un acompte paypal, et la cliente à reçu de nombreux mails de Paypal l’informant de ce grand chamboulement. (en gros pour valider l’acompte on arrive sur une page de paiement paypal standard, en https, puis on est redirigé ensuite sur le site de la cliente)

    N’étant pas assez technique pour savoir et comprendre vraiment de quoi il s’agit, j’aimerai trouver une âme charitable qui puisse répondre à ces quelques questions que je me pose.

    1 – Ma cliente est-elle concerné si son serveur est un http classique ?
    2 – Doit-elle forcément passer sur une connexion sécurisée, et changer son offre d’hébergement chez OVH ?
    3 – Comment son site, qui fonctionne encore parfaitement au jour d’aujourd’hui, peut-être affecté par la mise à jour ?

    N’hésitez pas à m’en dire un peu plus sur tout ça, je patoge un peu 🙁

    Merci d’avance, voici l’url de son site que vous puissiez vous faire une idée : http://pedaledouce.com/reservation

    • Michael dit :

      Bonjour LudoLCG,
      1 – Le https est conseillé pour sécuriser le tunnel d’achat sur votre site.
      2 – Non (pas obligatoire)
      3 – Il faut vérifier votre version du Open SSL de votre hébergement (OVH va effectuer la mise à jour sur votre mutualisé prochaine, si cela n’est pas déjà le cas)

  5. Jimmy dit :

    bonjour,
    je suis en train de développer un site marchand sur Prestashop 1.6.1.5 mais suis bloqué depuis plusieurs jours en local lorsque je teste la sandbox avec Paypal.
    mon module PayPal est une version v3.11.1
    j’ai créé les comptes fictifs perso et business sur la sandbox, et renseigné les codes API du compte business qui m’ont été généré sur ma plateforme Prestashop. TOUT EST OK
    mais quand j’e simule un achat avec la sandbox, j’ai le message suivant :

    Error occurred:
    Veuillez contacter le marchant:
    PayPal response:

    je suis sous Apache/2.2.29 (Unix) mod_wsgi/3.5 Python/2.7.10 PHP/7.0.0 mod_ssl/2.2.29 OpenSSL/0.9.8zg DAV/2 mod_fastcgi/2.4.6 mod_perl/2.0.9 Perl/v5.22.0

    je constate que mon OpenSSL est 0.9.8

    pourriez-vous SVP m’aider à trouver la solution et si le problème vient du Openssl, me dire surtout comment faire pour upgrader la version.

    merci infiniment de votre aide très précieuse

    • Michael dit :

      Bonjour Jimmy,

      Essaies de basculer PayPal en « production », puis achète un produit.
      Il faut aussi que ton serveur soit en OpenSSL 1.0.1 ou supérieur.

      NB : prend un hébergeur assez rapidement pour basculer ton code directement dessus, et pouvoir effectuer des tests online.

      Bon week-end

  6. Salut Michael,

    Merci beaucoup pour cette explication limpide…

    J’ai créé un site qui fonctionne très bien avec Paypal…
    J’ai basculé en https et effectué les modifications sur le fichier ipn… Pourtant celui-ci fonctionne toujours en production mais pas avec la sandbox.
    J’ai reçu ce message de paypal…

    Mise à niveau TLS 1.2 et HTTP/1.1 – Effectuer d’ici au 30 juin 2017
    Mise à jour nécessaire : %%TLS %%
    Protocole HTTPS pour les envois de vérification IPN – Effectuer d’ici au 30 juin 2017
    Mise à jour nécessaire : Oui

    Je suis hébergé chez infomaniak en mutualisé et mon phpinfo() donne ceci:
    SSL Version OpenSSL/1.0.1t

    Et mon ipn se connecte comme ceci:
    $header = « POST /cgi-bin/webscr HTTP/1.0\r\n »;
    $header .= « Host: ipnpb.paypal.com:443\r\n »;
    $header .= « Content-Type: application/x-www-form-urlencoded\r\n »;
    $header .= « Content-Length:  » . strlen($req) . « \r\n\r\n »;
    $fp = fsockopen (‘ssl://ipnpb.paypal.com’, 443, $errno, $errstr, 30);

    Je ne trouve NULLE PART un code à jour pour ipn, l’employé helpdesk de chez Paypal m’assure que ma configuration ne peut pas fonctionner, or ça marche pour le moment… et ne me propose pas de solution… 🙁

    Aurais-tu une piste à me conseiller?

    Mille mercis

  7. Jojo dit :

    Depuis ce jour je n’arrive plus à me connecter sur paypal. j’ai toujours ce message sur Iphone et Pc
    dernier paiement effectué avant hier

    Access Denied
    You don’t have permission to access « http://www.paypal.com/fr/ewf/f=pps_prohib » on this server.

    Reference #18.8d0fdd58.1499546644.4e82cfe
    c’est seulement chez moi à la maison car mon fils et une amie avaient le même problème ici et une fois retournés chez eux ils pouvaient se connecter

    faute hébergeur ou ??

  8. poulma dit :

    Bonjour
    j’ai le même problème que Antoine , en connectant sur l’API sandbox paypal j’ai le message:
    error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure ».
    Sachant que mon hebergeur est AMEN ? en excecutant phpinfo() , j’au remarqué que la version openssl est: OpenSSL/0.9.8o
    est ce que c’est le problème?

    Merci

    • Michael dit :

      Effectivement OpenSSL/0.9.8o doit-être mise à jour.
      Le changement doit être réalisé par votre fournisseur AMEN s’il s’agit d’un serveur mutualisé.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.