Pinning SSL avec TrustKit

Le pinning SSL « maison », c’est un peu compliqué parfois.

Heureusement, l’excellente équipe de Data Theorem est là.

Ils fournissent depuis plusieurs années la solution TrustKit sur iOS, tvOS, macOS et watchOS qui permet de mettre en place le pinning SSL en 2 temps 3 mouvements.

Ils fournissent maintenant une version Android de TrustKit compatible avec les API 15+.

Pour ceux qui ne connaissent pas le fonctionnement de TrustKit, c’est franchement simple.

En gros,  il faut déterminer ce que l’on va pinner dans la chaîne de confiance, à l’instar de HPKP :

  • le certificat de l’autorité de certification (CA)
  • le certificat de l’autorité de certification intermédiaire (ies)
  • le certificat du serveur (EE, leaf)

À partir de là, on peut calculer les clés publiques actuelles. Il est fortement conseillé d’utiliser une clé de secours. Et, enfin, on peut ajouter une date d’expiration.

En gros, si les clés sont validées, ça passe. Sinon, on regarde côté clé de secours. Et, passé la date d’expiration, on ne fait plus de pinning.

Et ensuite : TrustKit fait le job. Et ça, c’est top.

API Taptic Engine de l’iPhone 7

L’iPhone 7 arrive avec un nouveau type d’interaction. Mais cela mérite une petite explication.

Tout commença avec l’iPhone 6S

Avec l’iPhone 6S, Apple a apporté le 3D Touch. Une technologie qui permet de détecter la pression exercée sur l’écran.

Concrètement, lorsque l’on appuie fort sur une icône, on a un menu supplémentaire qui se déroule. Lorsque l’on appuie sur un contenu, on peut en avoir un aperçu. Et il suffit d’appuyer un peu plus fort pour passer de l’aperçu au contenu en lui-même.

Apple a appelé ce type d’interaction peek & pop. Ce qui correspond au retour « haptique » (un « toc » dans l’écran) que l’on ressent lorsque l’on a l’aperçu (peek) et le contenu en lui-même si on appuie plus fort (pop).

Puis vint l’iPhone 7

La première chose qui surprend avec l’iPhone 7 est que le bouton principal (le bouton rond, le seul présent en façade) n’est plus mécanique mais tactile.

Pour sentir qu’il se passe quelque-chose, Apple propose le même retour haptique que 3D Touch, mais pour le bouton principal. Lorsque l’on appuie sur le bouton principal, on ressent donc un « toc » dans l’iPhone. Ce qui se rapproche du « clic » de l’ancien bouton mécanique.

API Taptic Engine

L’API Taptic Engine permet aux développeurs d’accéder à cette technologie sur iPhone 7.

UIImpactFeedbackGenerator permet de générer un « toc » plus ou moins fort. Qui retentit immédiatement. Ça peut renforcer l’immersion dans les jeux vidéos. Par exemple, dans un jeu de voiture, un petit « toc » correspond à un petit impact, un gros « toc » signifie que la carrosserie a été très endommagée.

UISelectionFeedbackGenerator permet de générer un « toc » plus souple, correspondant à la sélection d’un élément. Par exemple, si je sélectionne un élément dans une liste, je peux utiliser ce « toc » pour renforcer le fait qu’un élément a été sélectionné.

UINotificationFeedbackGenerator permet de générer un « toc » correspondant à une notification. Ces « toc » seront différents s’il s’agit d’une notification d’erreur, de succès ou pour attirer l’attention (warning).

Évidemment, il faut avoir un iPhone 7 entre les mains pour comprendre ce que cela apporte en termes d’expérience utilisateur.

La qualité de l’API se verra donc à moyen/long terme, selon l’adoption par les développeurs.

UIImage, CGImage et CIImage sont sur un bâteau

Cet article s’adresse aux développeurs iOS / tvOS / watchOS et – dans une certaine mesure – macOS.

Lors de la conception d’une application, on rencontre généralement pas mal de problématiques autour des images et on ne sait pas forcément quelle technique utiliser.

Ce court article en est une synthèse.

UIImage : images « statiques »

UIImage fait partie de UIKit.

UIImage est utilisé pour afficher une image plutôt statique dans un contexte où l’enjeu sera un affichage rapide sans consommer trop de ressources.

Par exemple, on va utiliser UIImage pour afficher une photo venant d’un service web. La photo est déjà prête et calibrée, elle ne risque pas de changer.

UIImage travaille véritablement dans l’environnement de l’interface graphique.

CGImage : transformer une image

CGImage fait partie de Core Graphics.

Vous souhaitez effectuer une rotation d’image, réaliser un découpage d’image, etc ? En clair, vous souhaitez modifier les données bitmap d’une image ?

CGImage fournit tous les outils nécessaires pour effectuer ces transformations et son accélération matérielle vient de Quartz 2D, l’API de dessin 2D propre à Apple.

CGImage se positionne dans l’environnement de l’image, avec beaucoup plus d’autonomie que UIImage.

CIImage : appliquer des filtres en temps réel

CIImage fait partie de Core Image.

CIImage ne représente pas vraiment une image, mais peu importe. L’idée est que Core Image permet d’appliquer en temps réel – grâce à la combinaison du CPU et du GPU – des filtres sur les images.

Ces filtres permettent des déformations d’images, mais ils sont surtout optimisés pour le traitement de la couleur. (filtre noir et blanc, sépia, sur-exposition, modification du contraste, pixellisation, etc)

Core Image est vraiment optimisé pour travailler avec les API comme OpenGL ES ou Metal qui permettent d’effectuer très rapidement des millions d’opérations très simples et très spécifiques.

Core Image est également utilisé pour détecter des visages ou des objets par exemple.

iOS 9 serait installé sur 90 % de appareils compatibles

iOS 9 aurait atteint – si ce n’est dépassé – les 90 % de parts de marché des iPhone et iPad. (source : Mixpanel)

Rien d’étonnant à cela. Son prédécesseur iOS 8 avait connu la même progression en passant les 90 % fin août – début septembre. (sources: Mixpanel, iGen)

Sachant que iOS 7 a dépassé officiellement cette barre symbolique en juillet également (source: iGen)

Pour rappel, iOS 9 est compatible avec les mêmes appareils que iOS 8 : iPhone 4S (2011) et supérieurs. Il n’y a donc aucun frein à son adoption.

Pour iOS 8, sortie fin 2014, Apple avait mis de côté les iPhone 4 (2010).

iOS 10 mettra de côté les iPhone 4S, qui auront 5 ans et représentent aujourd’hui une infime partie (< 4 %) des appareils en circulation. (sources: David Smith, Unity)

En prenant en considération les faits suivants :

  • iOS 8 et versions antérieures sont installés sur moins de 10 % des appareils en circulation
  • les appareils non-compatibles iOS 9 représentent moins de 5 % du marché
  • ces mêmes appareils vont être – au moins en partie – renouvelés pour des iPhone qui sortiront en fin d’année.

Il est certain qu’il vaut mieux aujourd’hui se focaliser sur le développement iOS 9 + qui ne pénalisera que 3 à 4 % des utilisateurs tout au plus. Si toutefois ils auraient pu être des utilisateurs potentiels, ce qui est loin d’être une certitude. (et qui auront toujours accès aux anciennes versions des apps)

Des petits problèmes entre CORS et CloudFront ?

Information : si vous souhaitez juste comprendre l’illustration jointe, rendez-vous directement à la fin de l’article. 😀

Si vous aussi vous avez rencontré depuis quelques mois (avril 2016 a priori) des petits problèmes entre CloudFront et les polices CSS par exemple, voici la solution.

Dans la configuration de CloudFront, section Behaviour de votre distribution, vous avez la possibilité de transférer des en-têtes en liste blanche. (Forward Headers -> Whitelist)

Dans cette liste blanche, il vous faut :

  • Access-Control-Allow-Headers
  • Access-Control-Allow-Methods
  • Access-Control-Allow-Origin
  • Access-Control-Max-Age
  • Origin

C’est en effet ce dernier petit en-tête qui doit être ajouté.

En gros, cela permet de forcer l’interprétation par CloudFront du « Vary: Origin » renvoyé par votre implémentation de CORS.

C’est curieux, mais c’est comme ça.

Du coup, j’ai ramé pendant quelques jours. J’espère vous éviter cette galère !

Ruby on Rails 5 est sorti… et après ?

Pour le développement web, j’utilise Ruby on Rails depuis des années.

Ruby quoi ?

Ruby est un langage de programmation qui, en synthèse, n’est pas le plus rapide d’un point de vue technique mais est extrêmement rapide en termes d’écriture de code et en termes d’exécution dans un cadre concret. Vous connaissez le lièvre et la tortue ? C’est la tortue.

Ruby on Rails est un framework web reposant sur le langage Ruby. Un framework étant – grossièrement – un ensemble d’outils permettant d’atteindre un objectif. Dans le cadre de Ruby on Rails, il s’agit du serveur web, de la connexion aux base de données, la gestion du cache, le rendu du contenu web, les tests unitaires et j’en passe. Tout ce qui permet de concevoir une plateforme web solide et performante.

Ruby on Rails a quelques beaux succès à son actif (Basecamp, GitHub, AirBnB, Twitch, SoundCloud, Hulu, Zendesk, Square et j’en passe). C’est du sérieux.

On passe la cinquième

Ruby on Rails est né en 2004. Et, en 12 ans, le web a bien évolué.

Le framework web a suivi ces évolutions. A son rythme, pour garder sa solidité.

C’est donc dans les derniers jours de juin 2016 que Ruby on Rails 5 a vu le jour.

Action Cable : du temps réel

Le temps réel, qu’est-ce que c’est ?

En général, sur le web, un client (navigateur web, application mobile) effectue une requête auprès d’un serveur. Et le serveur renvoie une réponse.

Le client a donc à l’instant T une réponse datant de sa dernière requête.

S’il veut une réponse plus « fraîche », il doit effectuer une nouvelle requête. Qui lui dira si oui ou non il y a un nouveau contenu. Le tout en faisant transiter sur le réseau tout un tas d’informations à l’utilité douteuse.

Puis sont apparues les WebSocket, qui sont une réponse à cette problématique.

Les WebSocket sont disponibles depuis un certain temps, mais sont devenues « populaires » seulement récemment. Depuis un certain temps sur Firefox, Chrome et Safari. Depuis Internet Explorer 11 (version 10 en théorie), qui commence juste à être populaire. Et bien sûr son successeur Edge. Côté mobile, c’est disponible depuis iOS 4.2 (autant dire, tous les iOS en circulation), et depuis Android 4.4 (77 % des appareils, mais beaucoup utilisent également le navigateur Chrome, plus récent).

C’est encore un peu neuf, mais c’est tout de même disponible sur une très grosse majorité des appareils. Mais au fait : à quoi ça sert ?

On l’a vu : le web tel qu’il existe ne permet pas l’instantanéité. Les WebSocket répondent à cette problématique en permettant au serveur et au client d’avoir une connexion ouverte en permanence, en utilisant la connexion réseau HTTP(S).

Client et serveur peuvent donc s’envoyer l’un et l’autre des messages à tout moment, sans avoir tout une couche de protocole.

Quand une information nouvelle arrive, c’est le serveur qui déclenche un événement sur le client. Par exemple, dans le cadre d’une messagerie, le client 1 envoie un message au serveur qui va lui même le renvoyer au client 2.

Le client 2 n’aura pas besoin d’aller chercher l’info : elle vient a lui.

Action Cable, qui a un historique suffisant, est maintenant directement intégré – de manière optionnelle mais standardisée – au sein de Ruby on Rails.

En quelques manipulations, on crée des canaux de communication côté serveur (ruby) comme côté client (javascript).

J’ai eu l’occasion de le mettre en application dans un projet client. Je l’ai déployé sur Heroku. Ça marche du tonnerre.

Le mode API

En 2016, on ne fait pas seulement des sites web : on réalise aussi beaucoup d’API. Notamment pour les applications mobiles.

Pour les plus novices des lecteurs, les API web sont des interfaces qui ne sont visibles que par les programmes en eux-mêmes. Il s’agit d’échanger des données, dans des formats spécifiques. Mais il ne s’agit pas, comme sur un site web, d’échanger le contenu affiché.

Par exemple, un navigateur web va demander au site web de lui fournir le code HTML, les feuilles de style CSS, les images, etc.

Une application mobile va demander au service web de lui fournir les données uniquement. L’application mobile se chargera ensuite elle-même de la mise en forme. Ce type d’échanges de données est une API web.

Et l’API web fonctionne différemment d’un site web. On a globalement besoin de moins de choses, et les besoins sont plus spécifiques.

Ruby on Rails 5 permet de concevoir des applications web ayant spécifiquement le rôle d’API. Alors que c’est par défaut prévu pour concevoir des sites web.

C’est efficace. Pour l’avoir mis en place dans un projet d’application mobile, ça fait bien le job.

Les autres nouveautés

2-3 autres nouveautés permettent de renforcer la standardisation, les performances et la sécurité.

Le HSTS a notamment été renforcé. Cette technologie disponible sur les navigateurs web les moins anciens permet de s’assurer que tous les liens du site sont sécurisés en HTTPS.

Donc Ruby on Rails, c’est cool ?

Ouais, c’est cool. 🙂

Les nouveautés Apple 2016 en synthèse

Cette semaine, nous avons pu découvrir les nouveautés présentées par Apple :

  • watchOS 3
  • iOS 10
  • tvOS 10
  • macOS 10.12

Quelle sont les opportunités offertes aux développeurs cette année ? Faisons un très rapide tour d’horizon.

Sur toutes les plateformes

Les 4 plateformes ont beaucoup de choses en commun.

Swift 3

Le fameux langage Swift passe de la version 2 à la version 3. XCode 8 permettra de passer facilement de l’un à l’autre. Sachant que la compatibilité avec Swift 2.3 sera conservée de sorte à ce que la migration puisse se faire en douceur.

XCode 8

XCode 8 propose plein de nouveaux outils. Et, grosse nouveauté, XCode permet enfin de concevoir officiellement des extensions pour l’éditeur.

La sécurité

Les exigences en matière de sécurité ont été relevées.

D’après TechCrunch, les connexions aux serveurs devront se faire en HTTPS dès le 1er janvier 2017. Sinon, les apps ne pourront pas être validées.

Et de nombreux mécanismes similaires ont été mis en place pour renforcer la sécurité.

De nouveaux algorithmes de sécurité sont disponibles. Les plus risqués sont devenus obsolètes.

On peut aussi faire un copier-coller sécurisé entre 2 appareils.

Plus de détails ici : https://developer.apple.com/security/

La confidentialité

Là encore, Apple ne rigole pas. Le niveau d’exigence en matière de confidentialité des données a été relevé, même si on est globalement sur des aspects techniques gérés par l’OS en lui-même.

C’est notamment le cas pour l’intelligence artificielle qui permet de retrouver les photos : l’algorithme mis en place est exploitable sans avoir à transmettre d’informations précises. C’est la technologie Apple qui gère. Et, en un sens, c’est tant mieux.

Les performances

Sur watchOS, les applications se lanceront (enfin) instantanément.

De manière générale, les performances ont été améliorées. Notamment au niveau des connexions à Internet : un système de priorité est maintenant intégré au système.

Sur ces différents aspects, aucun travail complémentaire n’est nécessaire du côté des développeurs.

SiriKit : Siri accessible aux développeurs

Les applications iOS pourront être commandées par Siri. Dans des cadres pré-définis :

  • appels audio / vidéo (Skype)
  • envoi de messages (WhatsApp)
  • paiements (Leetchi, MacDo ?)
  • recherche de photos (Instagram)
  • entrainements (Runtastic)
  • réservation de véhicule. (Uber)

Les interactions permettront d’interpréter le message et afficher un contenu personnalisé (sauf sur Carplay, pour garder le regard sur la route)

Les suggestions pro-actives

Dans iOS 9, on pouvait intégrer les suggestions dans Spotlight et les recherches dans Safari.

iOS 10 va plus loin en intégrant notamment les recherches basées sur la géolocalisation.

On peut également intégrer les trajets via un service d’auto-partage.

Si on recherche un album audio, l’application pourra suggérer un morceau.

Intégration dans l’app Messages

Messages – l’application utilisée pour envoyer des SMS et des iMessage –  a été optimisée et enrichie en termes de fonctionnalités.

Les développeurs pourront ainsi proposer, via un App Store spécifique, des fonctionnalités supplémentaires :

  • des stickers pour agrémenter les messages
  • des applications permettant l’interaction au sein de l’app de messagerie.

Cela peut-être utilisé, par exemple, pour proposer un restaurant à un ami et lui proposer de choisir son menu. Une fois que l’ami a validé son repas, on valide soi-même le sien, on paye (via Apple Pay) et c’est fait.

Des notifications push plus riches

De nombreuses possibilités ont été ajoutées au sein des notifications push.

Les alertes locales peuvent être conditionnées par une date et un lieu par exemple.

Et l’apparence des alertes peut également être personnalisée.

La reconnaissance vocale

Une nouvelle API permet, au sein d’une application, de transformer un fichier audio en texte.

C’est ce qui est utilisé dans la nouvelle application téléphone pour transformer les messages audio du répondeur en messages texte.

Amélioration de la recherche dans les apps

Dans iOS 9, le contenu des apps pouvait être référencé.

Avec iOS 10, on va plus loin. Tout en conservant le respect de la vie privée.

Amélioration des widgets

iOS 9 a permis de créer ses propres widgets. iOS 10 améliore les choses, en profitant des améliorations du système d’exploitation en lui-même.

Intégration Apple Pay améliorée

Apple Pay arrive en France en juillet ! (plafond à 300 €, et non 20 € comme les autres paiements sans contact)

De nouveaux modes de paiement ont été intégrés. On peut également maintenant payer directement depuis watchOS ou depuis un site web.

CallKit

iOS 10 propose une interaction améliorée aussi bien pour les apps de VoIP que pour l’intégration générale avec le système.

Par exemple, des extensions permettant le blocage des appels ou l’identification des appelants. Ce qui ouvre des possibilités intéressantes.

Actualités

L’application Actualités a été améliorée. De nouvelles options sont présentées ici : https://newsresources.apple.com.

Les comptes pour abonnés à la TV

La gestion des abonnées aux chaînes de TV peut être gérée directement dans les apps.

Utile, surtout sur AppleTV, pour proposer du contenu réservé aux abonnés.

Les extensions d’apps

Là, c’est du lourd.

On peut étendre le système avec encore plus de possibilités :

  • Accès aux appels
  • Suggestions dans Plans et Siri (+ interface personnalisée)
  • Messages
  • Contenu des notifications
  • Services liés aux notifications
  • Packs de stickers (pour Messages)
  • D’autres améliorations, notamment pour les claviers personnalisés.

Autres améliorations

Les photos RAW et les LivePhotos sont maintenant gérées dans les apps.

Core Data a été (un peu) amélioré.

Core Image a été amélioré, avec 9 nouveaux filtres et une gestion des couleurs étendue.

Core Motion permet d’accéder au podomètre.

GameKit et GameplayKit ont également connu quelques améliorations.

HealthKit commence à atteindre un certain niveau de maturité.

HomeKit permet d’accéder à de nouveaux appareils connectés et va un peu plus loin.

Metal propose un meilleur rendu avec de meilleures performances.

Il en va de même pour SceneKit, ReplayKit, UIKit, et les autres.

Les fonctionnalités dépréciées

Tout ce qui concerne iAd va doucement vers la sortie.

CloudKit a connu quelques changements dus au partage de documents. Le code est à ajuster.

Quelques éléments liés à Core Data et SpriteKit passent aussi à la trappe.

Au niveau des notifications, ça évolue aussi.

Au final, on s’en sort bien si on a respecté les recommandations présentées avec iOS 9 et précédents.

Conclusion

En intégrant ces nouvelles possibilités et intégrations avec l’OS, Apple donne un nouveau souffle aux apps.

A chacun de savoir saisir les opportunités offertes par ces nouvelles fonctionnalités.

LZFSE : compression optimisée pour la consommation énergétique

Apple a lancé l’an dernier l’algorithme de compression LZFSE.

En gros, ça compresse aussi bien en consommant jusqu’à 3 fois moins d’énergie que ZLib (3 fois plus rapide).

Nos appareils Apple vont apprécier. Et notre planète aussi.

Cerise sur le gâteau, d’après l’annonce de cette semaine, ce sera bientôt open-source !

Imaginez que l’algorithme soit adapté aux serveurs et aux navigateurs web : l’impact à grande échelle serait énorme. 🙂

Apple met l’intelligence artificielle à votre service

Ce soir, Apple a présenté les nouvelles versions de iOS, tvOS, watchOS et macOS.

Un grand pas a été franchi grâce à un nouveau système d’intelligence artificielle.

Hey, Siri!

Nous sommes nombreux à utiliser Siri au quotidien, pour des tâches assez simples (prendre un RDV, passer un appel, dicter un SMS, effectuer un rappel, etc)

Cette intelligence est « partagée » avec le monde entier.

Le côté pratique : l’enrichissement du vocabulaire, l’apprentissage du langage (accents, etc) est rapide.

Le côté « dommage » : on ne peut traiter que de sujets communs, Apple ne s’amusant pas à récupérer vos informations personnelles.

L’IA respectueuse de la vie privée

Une intelligence artificielle, c’est top. Ça fait des choses à votre place et ça ouvre le champ des possibles.

Mais, aujourd’hui, on a droit – au choix – soit à la confidentialité, soit à l’intelligence artificielle.

Apple a su intégrer, grâce à de véritables prouesses techniques, l’intelligence artificielle directement au coeur du smartphone : vie privée et innovation sont donc compatibles.

Les réseaux de neurones artificiels

Le réseau de neurones est une technique d’apprentissage qui s’inspire des neurones biologiques.

En gros, il s’agit d’un système multi-couches dans lequel les entrées des uns communiquent avec les sorties des autres.

Chaque couche est composée de neurones. Ce sont les neurones qui communiquent entre eux.

Le principe des synapse est bien évidemment totalement imité.

Ensuite, on retrouve les phases de mémorisation et de généralisation.

Voilà pour le fonctionnement dans les grandes lignes

L’approche choisie par Apple

Apple utilise l’approche des réseaux de neurones récurrents (RNN) et en particulier l’architecture de mémoire à court et long terme (LSTM) qui est associée aux techniques d’apprentissage profond (deep learning).

Cette approche a l’avantage d’exploiter les statistiques pour optimiser les performances.

Une API accessible aux développeurs

Les développeurs peuvent utiliser la nouvelle API d’Apple (BNNS) permettant d’exploiter les réseaux de neurones de manière assez basique au sein de leurs propres applications sur iOS, macOS et tvOS.

Il s’agit d’une API d’inférence : elle ne s’occupe pas de l’apprentissage initial mais se base sur des neurones déjà en place.

L’avantage de cette API est qu’elle est optimisée pour les CPU de chaque plateforme.

Cette API est clairement destinée à l’usage de l’apprentissage d’images. Ce qui a été mis en avant par Apple au travers de sa nouvelle app Photos.

SiriKit : Siri accessible aux développeurs

Là, c’est beaucoup plus simple à appréhender et lié à l’IA de bien plus loin.

SiriKit permet d’utiliser Siri pour interagir avec les applications externes.

Il est possible de demander à Siri :

  • d’effectuer un appel audio ou vidéo avec telle ou telle app (via Skype ou Hangout)
  • d’envoyer un message (via WhatsApp ou Slack)
  • de payer (via PayPal ou Coinbase)
  • de rechercher des photos (dans Instagram ou autre)
  • d’effectuer des entrainements (Yoga, Crossfit, Jogging ou autre)
  • de réserver des choses. (resto, ciné, taxi)

Ce qui est déjà pas mal !

L’application Plans utilisera également ce procédé. Avec une interface personnalisable.

Conclusion

Ceci est un aperçu de ce que proposent les nouveaux OS de chez Apple en matière d’intelligence artificielle.

L’exemple le plus flagrant est l’app Photos qui est capable de reconnaître des visages, des objets, des lieux… tout en conservant la confidentialité de vos données.

Suite au prochain épisode !

Let’s Encrypt + Heroku :-)

Depuis peu, Heroku intègre gratuitement en beta le SSL via SNI.

Let’s Encrypt permet d’obtenir des certificats SSL gratuits.

Comment faire fonctionner l’ensemble avec Ruby on Rails ? C’est l’objet de cet article, fortement inspiré d’un article de Collective Idea.

Après ça, vous n’aurez plus d’excuses pour ne plus sécuriser vos sites !

D’abord, installer Let’s Encrypt

Vous êtes sur Mac et avez installé Homebrew ? C’est facile. Une simple ligne de commande suffit.

brew install letsencrypt

Pour les autres, rendez-vous sur le site officiel.

Premières étapes

Lancez l’invite de commande et suivez doucement les instructions.

sudo letsencrypt certonly --manual

On vous demande ensuite le nom de domaine.

Puis si vous êtes d’accord pour enregistrer votre IP : acceptez.

Ensuite, l’écran passe au noir avec un message de type :


Make sure your web server displays the following content at [...]

Là, stoppez !

On passe à la partie Ruby on Rails.

La partie Ruby on Rails

D’abord, mettez à jour config/routes.rb.


Rails.application.routes.draw do
# ...

# Let’s encrypt
get ‘/.well-known/acme-challenge/:id’ => ‘pages#letsencrypt’

# …

end

 

Le contrôleur s’appelle ici PagesController mais peut être n’importe quel contrôleur de pages statiques.
class PagesController < ApplicationController
def letsencrypt
# utilisez ici le code fourni par Let's Encrypt
render text: "code-fourni-par-lets-encrypt"
end
end

C’est fini pour la partie Ruby on Rails.

On continue via Let’s Encrypt

D’abord, on vérifie l’adresse http://<mon-domaine>/.well-known/acme-challenge/<id&gt; histoire de s’assurer que ça retourne bien le texte en code.

Là, c’est compliqué. On presse Enter.

Vous voyez le message Congratulations! ? C’est gagné !

Mais on ne s’arrête pas là.

Installation sur Heroku

Simple commande :
sudo heroku _certs:add /etc/letsencrypt/live/<domaine>/fullchain.pem /etc/letsencrypt/live/<domaine>/privkey.pem --app <mon-app>

Et voilà.

Pensez ensuite à mettre à jour vos DNS. Attendez quelques instants. Normalement, tout devrait être sécurisé.

[ Edit ]

Un outil permet de faciliter tout ça. Venez le découvrir sur GitHub. (merci @dmathieu)