web-dev-qa-db-fra.com

Comment puis-je obtenir un certificat Let's Encrypt pour un serveur non public?

J'ai un serveur Apache privé, accessible uniquement depuis mon réseau local sur le port 443, avec un certificat StartSSL.

Depuis la sortie de Firefox 51, je ne peux plus me connecter car le certificat racine StartSSL a été supprimé du trust store .

J'ai envisagé de migrer vers Let's Encrypt, mais cela semble nécessiter un serveur HTTP public. Est-il possible d'utiliser Let's Encrypt dans ma situation?

Je préfère éviter de payer pour un certificat SSL, si possible.

9
Calimo

Si vous contrôlez DNS pour le domaine, vous pouvez utiliser la méthode de défi dns-01 pour prouver la propriété en créant un enregistrement TXT.

Cela peut être fait manuellement ou automatisé. Je pense que même le client officiel certbot prend désormais en charge le DNS-01.

Un rapide Google me montre un tas de tutoriels utilisant divers scripts et clients, donc je ne les répéterai pas tous ici. Celui-ci automatise spécifiquement les certificats intranet.

10
Martijn Heemels

Le client certbot a la capacité d'effectuer un défi DNS manuel. La réponse (actuellement la deuxième plus populaire) trouvée dans cette question Comment utiliser la validation de défi DNS Let's Encrypt? a tous les détails, et je viens de la tester comme fonctionnant.

Fondamentalement, vous exécutez cette commande et suivez les instructions:

certbot -d site.your.dom.ain --manual --preferred-challenges dns certonly
5
vick

Vous avez mentionné que vous utilisez Apache, mais si vous n'y êtes pas lié, il existe un chemin très facile en utilisant Caddyserver .

Il vous suffit de définir un Caddyfile avec le contenu suivant:

example.com
tls {
    dns cloudflare
}

Mentionnez le fournisseur DNS que vous utilisez dans la configuration et configurez les clés API que vous utilisez via des variables d'environnement. Tirez parti de la liste des fournisseurs pris en charge dans docs .

C'est tout ce qu'il faut. La sortie au premier démarrage sera quelque chose comme:

Activating privacy features... 2019/10/21 13:36:48 [INFO][cache:0xc0001c8190] Started certificate maintenance routine
[INFO][cache:0xc000092730] Started certificate maintenance routine
2019/10/21 13:24:49 [INFO][example.com] Obtain certificate
2019/10/21 13:24:49 [INFO] [example.com] acme: Obtaining bundled SAN certificate
2019/10/21 13:24:50 [INFO] [example.com] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz-v3/876706285
2019/10/21 13:24:50 [INFO] [example.com] acme: Could not find solver for: tls-alpn-01
2019/10/21 13:24:50 [INFO] [example.com] acme: Could not find solver for: http-01
2019/10/21 13:24:50 [INFO] [example.com] acme: use dns-01 solver
2019/10/21 13:24:50 [INFO] [example.com] acme: Preparing to solve DNS-01
2019/10/21 13:24:50 [INFO] cloudflare: new record for example.com, ID XXX
2019/10/21 13:24:50 [INFO] [example.com] acme: Trying to solve DNS-01
2019/10/21 13:24:50 [INFO] [example.com] acme: Checking DNS record propagation using [127.0.0.11:53]
2019/10/21 13:24:50 [INFO] Wait for propagation [timeout: 2m0s, interval: 2s]
2019/10/21 13:24:50 [INFO] [example.com] acme: Waiting for DNS record propagation.
2019/10/21 13:24:52 [INFO] [example.com] acme: Waiting for DNS record propagation.
2019/10/21 13:24:55 [INFO] [example.com] The server validated our request
2019/10/21 13:24:55 [INFO] [example.com] acme: Cleaning DNS-01 challenge
2019/10/21 13:24:55 [INFO] [example.com] acme: Validations succeeded; requesting certificates
2019/10/21 13:24:56 [INFO] [example.com] Server responded with a certificate.
done.

Serving HTTPS on port 443
https://example.com

2019/10/21 13:36:48 [INFO] Serving https://example.com

Serving HTTP on port 80
http://example.com

2019/10/21 13:36:48 [INFO] Serving http://example.com
0
Gregor Müllegger