1

Eine App, die ich baue, integriert sich in eine API von Drittanbietern. Für den Zugriff auf diese API authentifiziert sie sich über oauth mit der RSA-SHA1-Signaturmethode, die eine Zertifikatsdatei benötigt.Bereitstellen einer geheimen Zertifikatsdatei für Heroku von CI (Codeship)

Die App wird kontinuierlich auf Heroku (PHP) mit Codeship bereitgestellt.

Ich möchte das Zertifikat aus verschiedenen Gründen nicht in die Quellcodeverwaltung einchecken, sondern muss jedes Mal, wenn die App bereitgestellt wird, das Zertifikat in den Produktionsprüfstand kopieren. Dies liegt daran, dass Heroku-Dynas statusfrei sind und sich selbst wiederherstellen, wenn die App bereitgestellt wird (wie ich es verstehe).

Was ist der beste Weg, dieses Zertifikat auf meinen Prüfstand zu kopieren? Ich dachte an einen Befehl wie diesen verwenden, aber es funktioniert nicht:

heroku run "echo \"${CERTDATA}\" > ./storage/certs/my_cert.pem" 

ich die aktuellen Zertifikatsdaten in einer Umgebungsvariablen auf Codeship speichern könnte, so wäre es immer verfügbar sein.

Alternativ könnte ich die Cert-Datei in Codeship erstellen und erzwingen dann fügen Sie es der Git-Bereitstellung zu Heroku. Kann jemand hier eine Anleitung geben?

Antwort

0

Warum nicht nur die eigentlichen Zertifikatsdaten in einer env var auf Heroku speichern?

+0

Angenommen, ich habe das Zertifikat als 'private_key.pem' Datei, wie würde ich es als Umgebungsvariable speichern, so dass [' openssl_pkey_get_private() '] (http://php.net/manual/en/function. openssl-pkey-get-private.php) kann es lesen? – harryg

+1

Die Lösung, die ich verwendete, bestand darin, den Inhalt der Cert-Datei zu Base64 zu kodieren (so dass er als env-Variable gespeichert werden kann), und base64 dekodierte ihn zur Verwendung mit der oauth-Bibliothek. – harryg

Verwandte Themen