it-swarm.com.de

Wie installiere ich ein LetsEncrypt SSL-Zertifikat auf Heroku?

Was muss ich tun, um das LetsEncrypt.org-Zertifikat für meine App auf dem Server zu installieren, da Heroku schreibgeschützt ist und Sudo nicht zulässt?

Wenn ich bereits config.force_ssl = true gesetzt habe, spielt das eine Rolle?

13
blnc

Ich habe den Blog-Beitrag in der ersten Antwort hier gelesen, aber ich wollte meine Codebasis nicht mit ACME-URLs und -Logik belasten. Also habe ich etwas Ähnliches gemacht, aber die DNS-Domain-Validierung verwendet ...

Geben Sie mit certbot DNS als Ihre bevorzugte Herausforderung an:

Sudo certbot certonly --manual --preferred-challenges dns

Nach einigen Eingabeaufforderungen werden Sie von certbot aufgefordert, einen DNS TXT -Eintrag zur Validierung Ihrer Domain zu verwenden:

Please deploy a DNS TXT record under the name
_acme-challenge.www.codesy.io with the following value:

CxYdvM...5WvXR0

Once this is deployed,
Press ENTER to continue

Ihr Domain-Registrar verfügt wahrscheinlich über eigene Dokumente zum Bereitstellen eines TXT -Datensatzes. Gehen Sie dazu zu certbot zurück und drücken Sie die EINGABETASTE. Let's Encrypt überprüft den TXT -Datensatz, signiert das Zertifikat und certbot speichert es, damit Sie es auf heroku hochladen können.

Siehe meinen eigenen Blog Post für mehr Details .


Hier sind zwei Bash-Funktionen, die Sie verwenden können, um den Prozess für Sie zu automatisieren

function makessl {
    Sudo certbot certonly --manual --rsa-key-size 4096 --preferred-challenges dns -d ${1}
    Sudo heroku certs:add --type=sni /etc/letsencrypt/live/${1}/fullchain.pem /etc/letsencrypt/live/${1}/privkey.pem
}

function renewssl {
    Sudo certbot certonly --manual --rsa-key-size 4096 --preferred-challenges dns -d ${1}
    Sudo heroku certs:update /etc/letsencrypt/live/${1}/fullchain.pem /etc/letsencrypt/live/${1}/privkey.pem
}

Sie argumentieren mit dem Domainnamen und solange Sie sie aus Ihrem heroku app folder ausführen, müssen Sie keinen --app NAME angeben.

Beispiel: makessl www.domain.com

Beispiel: renewssl www.domain.com


Kombiniere dies mit @Eric und du kannst loslegen:

heroku certs:auto:enable

4
groovecoder

Zu Ihrer Information, Heroku bietet jetzt automatisierte Zertifikatsverwaltung mit Let's Encrypt, wenn Sie einen kostenpflichtigen Prüfstand ausführen. Sie können es aktivieren mit:

heroku certs:auto:enable

Mehr Info:

https://devcenter.heroku.com/articles/automated-certificate-management

4
Eric

Bearbeiten: Diese Antwort gilt nicht mehr.

Es wurde geschrieben, bevor Heroku native Unterstützung für LetsEncrypt implementierte. Den Rest für die Nachwelt zu lassen, ist aber nicht mehr nötig. Benutze @ Erics Antwort jetzt.


Erstes Zertifikat installieren

Sie können certbot im manuellen Modus verwenden, um die Abfrageantwort zu generieren, Ihre Site so zu ändern, dass diese Antwort zurückgegeben wird, und dann den manuellen Prozess für certbot abschließen.

Weitere Informationen finden Sie in diesem Blogbeitrag von Daniel Morrison oder in der verknüpften Antwort unter Zertifikataktualisierungen.

Zertifikatsaktualisierungen

Wie @Flimm bereits erwähnt hat, und wie im verlinkten Blog-Beitrag erwähnt, müssen Sie dies alle 3 Monate aktualisieren, bis Heroku eine bessere Unterstützung für LetsEncrypt bietet. Sie können diesen Prozess reibungsloser gestalten (keine Codeänderungen beim Hochladen), indem Sie eine Umgebungsvariable wie in dieser Antwort beschrieben verwenden (Node/Express, aber die Konzepte sind dieselben): https://stackoverflow.com/a/40199581/37168

Sabayon

Es gibt ein GitHub-Projekt, das all dies für Sie automatisieren kann, indem Sie Ihre Heroku-Umgebungsvariablen festlegen. Es ist eine winzige Webapp, die Sie als eine andere Heroku-App installieren, die wiederum Ihre primäre App konfiguriert. Ich habe es noch nicht ausprobiert, plane aber, es zu verwenden, anstatt mein Zertifikat das nächste Mal zu aktualisieren: https://github.com/dmathieu/sabayon

1
stone

am besten weisen Sie Ihrer Domain die neue SSL-Domain (die mit https beginnt) zu, die die Nicht-HTTP-Domain automatisch überschreibt

0
Apoorv

Die Standardempfehlung von Heroku ist SSL unter Verwendung der Server Name Indication (SNI), die kostenlos ist. Da Sie Ihr Zertifikat und Ihren Schlüssel bereits erhalten haben, können Sie diese folgendermaßen hinzufügen:

heroku certs:add <cert>.pem <key>.key

Wenn Sie ältere Browser-Clients unterstützen müssen, die SNI nicht unterstützen, verwenden Sie das Herkou SSL Endpoint Addon, das 20 USD/Monat kostet:

Fügen Sie dieses Addon hinzu, indem Sie es ausführen

heroku addons:create ssl:endpoint

Fügen Sie dann Ihre LetsEncrypt.org-Zertifikate hinzu:

heroku certs:add <cert>.pem <key>.key
0
Tom König

Ich habe ein Certbot-Plugin erstellt, das mithilfe der Heroku-CLI die Authentifizierung und Installation von Let's Encrypt-Zertifikaten automatisiert: https://github.com/gboudreau/certbot-heroku

Ich habe nur ein Beispiel, das das php-nginx Heroku-Buildpack verwendet, aber dieses Beispiel zu lesen und das Äquivalent für andere Buildpacks zu finden sollte einfach genug sein. Pull Requests helfen gerne weiter!

0