Plusieurs certificates SSL dans une application Heroku

Est-il possible d’avoir plusieurs certificates SSL dans l’application Heroku?

Nous avons plusieurs noms de domaine de différents types et TLD qui pointent vers notre application et doivent sécuriser chaque nom de domaine. De préférence sans redirection vers une autre URL sécurisée.

Il existe un moyen d’avoir plusieurs points de terminaison SSL acheminant le trafic vers la même application.

Un sharepoint terminaison SSL fonctionne en mettant fin à la connexion SSL et en réinjectant le trafic non chiffré dans la couche de routage Heroku normale.

Vous pouvez en tirer parti en créant une nouvelle application avec un nouveau sharepoint terminaison SSL pour mettre fin à la connexion SSL et acheminer le trafic vers votre application existante:

  1. Ajoutez votre nom de domaine à votre application:

    $ heroku domains:add ssl.example.com

  2. Créez une nouvelle application:

    $ heroku create endpoint-for-example-com

  3. Ajoutez le module complémentaire de noeud final SSL ($ 20 / mo):

    $ heroku addons:create ssl:endpoint --app endpoint-for-example-com

  4. Ajoutez votre certificate à votre nouvelle application:

      $ heroku certs:add server.crt bundle.pem server.key --app endpoint-for-example-com Resolving trust chain... done Adding SSL Endpoint to endpoint-for-example-com... done endpoint-for-example-com now served by kagawa-1482.herokussl.example.com 
  5. Utilisez le noeud final ssl affecté à votre nouvelle application (par exemple, kagawa-1482.herokussl.example.com ) en tant qu’hôte CNAME pour le nom de domaine que vous souhaitez sécuriser. Cela se fait normalement dans la configuration DNS de votre domaine.

La nouvelle application n’a pas besoin de dynos, mais il y aura des frais de 20 $ / mois pour le complément SSL.

Remarques:

  • Cette solution n’est pas documentée par Heroku, il est donc possible qu’elle supprime ou modifie ce comportement à l’avenir. Heroku a confirmé que cela est sans danger pour la production.
  • Veillez à créer vos points de terminaison dans la même région que votre application principale.
  • Vos modifications DNS peuvent prendre un certain temps.

Récemment, heroku a ajouté des certificates LetsEncrypt TLS automatiques pour les dynos payants, les loisirs et autres. Cela fonctionnera sur n’importe quel nombre de domaines et sous-domaines automatiquement. Cette méthode ne fonctionne que si vous n’avez pas besoin de sous-domaines génériques.

Heroku

De plus, vous pouvez gérer vous-même la certificateion LE sur plusieurs domaines et sous-domaines, avec certbot

certbot certonly --standalone -d example.com -d www.example.com -d test.net

Vous pouvez vous référer à ce doc heroku pour télécharger des certificates personnalisés.

Bien que ce ne soit pas exactement la même que la question d’OP, j’ai été en mesure d’y parvenir avec Heroku avec un seul certificate SAN (Subject Alternative Name) pour environ 25 $ / an.

J’ai généré un CSR avec plusieurs noms de sujet ( subjectAltName ) dans OSX en:

  1. Copier /System/Library/OpenSSL/openssl.cnf dans le répertoire en cours et modifier les sections pertinentes ( [req] et [v3_req] ):

     [req] req_extensions = v3_req [v3_req] subjectAltName=DNS:www.example1.com,DNS:www.example2.com,DNS:www.example3.com 
  2. Ensuite, j’ai utilisé ce nouveau fichier .cnf pour générer le CSR:

     openssl req -nodes -newkey rsa:2048 -keyout server.key -out server.csr -config openssl.cnf 
  3. J’ai acheté le cert de SSLs.com. Leur Comodo “PositiveSSL Multi-Domain” est de $ 25.99 / an à compter de cette écriture et supporte de 3-100 domaines (les domaines sur 3 coûtent quelque chose comme $ 12).

  4. J’ai concaténé l’ensemble CA et .crt que j’ai été envoyé dans un seul fichier .crt (dans cet ordre) et l’ai ajouté à Heroku. Tous les 3 domaines ont été ajoutés à l’application et ont indiqué le même CNAME, et tous sont résolus sur https: // comme prévu.

Beaucoup moins cher que 240 $ / an pour un point final supplémentaire, s’il s’agit d’un itinéraire viable pour toute personne intéressée.

Liens pertinents:

Je traite de ça moi-même. Heroku suggère d’obtenir un certificate SAN / UCC, qui vous permet de lister plusieurs domaines. Je l’ai juste fait avec GoDaddy et ça marche très bien jusqu’à présent.

https://devcenter.heroku.com/articles/ssl-endpoint#serving-multiple-domains

Nous avons plusieurs noms de domaine appartenant à plusieurs sociétés. Un certificate SAN / UCC est uniquement disponible pour les noms de domaine appartenant à la même entité / société / individu. Nous avons créé un iFrame en arrière-plan en guise de solution rapide, mais nous avons depuis déplacé notre plateforme vers notre propre infrastructure.