Configurer Let's Encrypt avec plusieurs domaines / redirections

Je viens de mettre à jour ceci car l’ancienne version ne fonctionnait plus. Je l’ai testé sur deux sites, donc je pense que cela devrait aller.

3 « J'aime »

EDIT : Correction trouvée, ignorez tout ce qui suit, mais je laisse cela pour les futures personnes. La correction se trouve tout en bas.

Je viens de tomber sur ce fil. Donc, mon site est : forums.mysite.me. J’ai 3 domaines dans ma configuration NGINX et chez mon fournisseur de domaine que j’utilise pour les CNAME DNS qui reviennent comme non sécurisés :

mysite.me
www.mysite.me
forum.mysite.me (sans le "s" si quelqu'un fait une faute de frappe ou devine l'URL)

Dois-je utiliser mon domaine de base dans la configuration de l’article original ? Ou comment dois-je le configurer pour les 3 ?

after_ssl:
   # dire à letsencrypt quels certificats supplémentaires obtenir
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--keylength/
        to: "-d forums.mysite.me --keylength"
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--fullchainpath/
        to: "-d forums.mysite.me  --fullchainpath"

Je suis confus car la première section “replace” a un from: /--keylength/ et celle en dessous a from: /--fullchainpath/. Donc, dois-je faire 2 entrées comme celles-ci pour chacune des 3 URL que j’ai listées ou ?.. Ou serait-ce ceci ?

after_ssl:
   # dire à letsencrypt quels certificats supplémentaires obtenir
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--keylength/
        to: "-d mysite.me -d www.mysite.me -d forum.mysite.me --keylength"
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--fullchainpath/
        to: "-d mysite.me -d www.mysite.me -d forum.mysite.me  --fullchainpath"

^ Oui, la boîte ci-dessus est la correction pour plusieurs sites/LetsEncrypt. Tellement excité.

1 « J'aime »

Oui. Il y a deux remplacements différents dans le fichier qui doivent être mis à jour avec les noms d’hôte.

N’est-ce pas ce que le message en haut vous a donné lorsque vous avez entré les noms comme décrit ?

Comment pouvons-nous modifier le message d’origine afin qu’il ne soit pas déroutant ?

1 « J'aime »

Personnellement, je dirais de déplacer cela au-dessus de la zone de saisie, pour que vous le voyiez pendant que vous tapez.

Le post a donné ça, ouais, mais je n’ai pas compris parce que

Pourquoi la section « si vous devez ajouter plusieurs domaines » que j’ai citée ne répond-elle pas à cette question ?

1 « J'aime »

OK. Qu’en est-il de ceci :

et ensuite, après le code à copier, il continue :

Est-ce que cela a du sens ?

1 « J'aime »

Je pense qu’il est tout simplement plus facile de mettre le code réel avec plusieurs sites comme exemple que j’ai utilisé ci-dessus :

after_ssl:
   # dire à letsencrypt quels certificats supplémentaires obtenir
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--keylength/
        to: "-d mysite.me -d www.mysite.me --keylength"
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--fullchainpath/
        to: "-d mysite.me -d www.mysite.me --fullchainpath"

Je pense que la plupart des gens voudront ajouter un seul domaine supplémentaire, donc ma méthode est plus simple et fournit un moyen facile d’obtenir le texte exact dont vous avez besoin sans avoir à y apporter de modifications.

Peut-être est-il toujours clair que si votre site est discourse.y.com et que vous souhaitez des certificats pour discourse.y.com et y.com, vous n’avez qu’à entrer y.com dans le champ « domain2 » et cliquer sur l’icône de copie ?

Dans votre exemple, si vous avez configuré votre Discourse sur mysite.com, vous n’avez pas besoin de la partie -d mysite.me dans votre exemple (ou si votre site est www.mysite.me, vous n’avez besoin que de la partie -d mysite.me).

4 « J'aime »

Dans quel fichier ce code est-il ajouté, s’il vous plaît ?

1 « J'aime »

Le code doit être ajouté vers la fin de votre fichier app.yml, dans la section hooks :

3 « J'aime »

18 messages ont été déplacées vers un nouveau sujet : Let’s Encrypt avec plusieurs domaines ne fonctionnait pas pour les certificats ECC

Ai-je encore besoin des deux autres remplacements d’extraits de code ou cet nouvel extrait de code est-il tout ce dont j’ai besoin ?

Je l’ai ajouté et recompilé, mais j’obtiens toujours une erreur de confidentialité SSL lorsque je vais sur l’un des domaines https que je veux rediriger.

En regardant le certificat, son nom commun est forum.domain.com, avec O et OU ne faisant pas partie du certificat.
J’essaie de rediriger https://domain.com et https://www.domain.com vers https://forum.domain.com.

Lorsque j’utilise http://domain.com et http://www.domain.com, cela redirige correctement vers https://forum.domain.com.

Qu’avez-vous inséré ? À quoi ressemble votre stanza after_ssl ?

On dirait ceci (J’ai changé le nom de domaine réel)

  after_ssl:
    - replace:
        filename: /etc/runit/1.d/letsencrypt
        from: /-d forum.mydomain.com /
        to: -d forum.mydomain.com -d www.mydomain.com -d mydomain.com
        global: true

J’ai aussi ajouté ceci

LETSENCRYPT_ALTERNATE_NAMES: mydomain.com,www.mydomain.com

L’erreur du navigateur est
net::ERR_CERT_COMMON_NAME_INVALID

Est-ce que tous les noms sont résolus ? N’ont-ils pas Cloudflare devant eux ? Avez-vous atteint les limites de requêtes ? Vous pouvez regarder dans le conteneur et exécuter /etc/runit/1.d/letsencrypt et voir ce qui se passe

Tous les noms se résolvent, pas de cloudflare, les taux de réussite devraient être corrects.

Voici le résultat de l’exécution de letsencrypt ;

(Nom de domaine remplacé)

/var/www/discourse# /etc/runit/1.d/letsencrypt
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
[Tue Apr 29 04:02:13 PM UTC 2025] Unknown parameter : 4096
[Tue Apr 29 04:02:13 PM UTC 2025] Installing key to: /shared/ssl/forum.domain.com.key
[Tue Apr 29 04:02:13 PM UTC 2025] Installing full chain to: /shared/ssl/forum.domain.com.cer
[Tue Apr 29 04:02:13 PM UTC 2025] Run reload cmd: sv reload nginx
ok: run: nginx: (pid 429) 10662s
[Tue Apr 29 04:02:13 PM UTC 2025] Reload success
[Tue Apr 29 04:02:13 PM UTC 2025] Unknown parameter : ec-256
[Tue Apr 29 04:02:14 PM UTC 2025] Installing key to: /shared/ssl/forum.domain.com_ecc.key
[Tue Apr 29 04:02:14 PM UTC 2025] Installing full chain to: /shared/ssl/forum.domain.com_ecc.cer
[Tue Apr 29 04:02:14 PM UTC 2025] Run reload cmd: sv reload nginx
ok: run: nginx: (pid 429) 10663s
[Tue Apr 29 04:02:14 PM UTC 2025] Reload success

J’ai regardé à l’intérieur du fichier, voici un truc amusant

issue_cert() {
  LE_WORKING_DIR="${LETSENCRYPT_DIR}" /shared/letsencrypt/acme.sh --issue $2 -d forum.domain.com -d www.domain.com -d domain.com--keylength $1 -w /var/www/discourse/public
}

Il semble qu’il manque un espace entre le dernier domaine et --keylength ?

domain.com--keylength

La correction du problème a résolu le problème, merci pour votre aide

Je suppose que la correction devrait également consister à ajouter / au champ to: ?

  after_ssl:
    - replace:
        filename: /etc/runit/1.d/letsencrypt
        from: /-d forum.domain.com /
        to: "-d forum.domain.com -d www.domain.com "
        global: true

Ce devrait être des guillemets, pas des barres obliques. J’ai modifié votre publication et celle de l’OP. Ce que vous avez maintenant devrait fonctionner.