Hallo,
hat von euch schon jemand ein Zertifikat für eine Domains mit letsencrypt erstellt?
Ich hatte mir vorhin letsencrypt heruntergeladen und mit letsencrypt-auto aufgerufen. Nach einigen Installationprozessen kam dann eine Auswahl wo bereits alle auf meinem Server befindlichen Domains für die Erstellung eines Zertifikates aktiviert waren. Ich hätte Stunden gesessen, dort überall den Haken zu entfernen. Wie kann ich gezielt für eine Domain ein Zertifikat erstellen lassen?
-
-
-
-
Hi
Ich habe mir den Thread durchgelesen und die Lösung für die Kunden-SSL-Zertifikate finde ich leider sehr unbequem. Die Let's encrypt Zerts müssen alle 3 Monate aktualisiert werden, da sie sonst ablaufen. Diesen Prozesse kann man ja noch automatisieren, aber die Inhalte der PEM Files dann über das Adminpanel einpflegen ist ziemlich unschön.
Ich habe hierzu die domain.com_ssl Dateien unter /etc/apache2/sites-enabled angepasst und dort den Pfad zu /etc/letsencryp/live/domain.com eingefügt. So muss ich nur noch alle drei Monate die Zertifikate über
erneuern und anschließend die Prozessdurchstarten. Die Pflege im Adminpanel entfällt!
So lange es kein i-mscp Update gibt, dass über die Config-Dateien rüberschrubbt, sollte dies stabil funktionieren!
Spricht was dagegen?
Dies wäre dann auch direkt ein Wunsch für ein zukünftiges i-mscp update, die Pfade der Pem-Files eingeben zu können, neben dem Inhalt der Zertifikatsdateien. Schön bequem!
-
Die Zertifikate werden von imscp in der Datenbank abgelegt. Es sprich VIELES gegen diesen Weg. Ein automatisiertes Skript, welches anschließend die Zertifikate in die Datenbank importiert und den Domainstatus auf tochange stellt, wäre sicherlich um Einiges sauberer und imscp-komform.
Wie auch immer, wir hoffen, dass wir in nächster Zeit ein Plugin für LetsEncrypt entwickeln können -
-
Klar, ein vernünftiges Plugin würde wirklich vielen helfen
Nur was hat denn das in der DB abgespeicherte "Zertifikat" mit den Pfaden in der *_ssl.conf zu tun?
i-mscp wird die Zertifikatsdateien über die Daten aus der DB ja sicherlich erstellen und dann in der *_ssl.conf verlinken, aber so lange ich an der Domain und deren Einstellung nichts ändere, werden auch die domain.de.conf und domain.de_ssl.conf nicht neu generiert bzw. geändert. Die Lösung funktioniert ja nicht großartig anders, wie der Weg die Zerts für das Adminpanel per cat "auszutauschen*
-
Wenn du den autoinstall neu ausführst, dürften die Zertifikate von denen aus der db neu erstellt werden.
-
-
Die Zertifikate werden von imscp in der Datenbank abgelegt. Es sprich VIELES gegen diesen Weg. Ein automatisiertes Skript, welches anschließend die Zertifikate in die Datenbank importiert und den Domainstatus auf tochange stellt, wäre sicherlich um Einiges sauberer und imscp-komform.
Wie auch immer, wir hoffen, dass wir in nächster Zeit ein Plugin für LetsEncrypt entwickeln könnenIch hab da mal gerade was zusammengebastelt.
Python: letsencrypt.py- import subprocess
- import os
- import MySQLdb
- username="root"
- pw=""
- pfadLetsencryptauto="/root/letsencrypt-entwicklung/letsencrypt/letsencrypt-auto"
- db = MySQLdb.connect( host="localhost",
- user=username,
- passwd=pw,
- db="imscp")
- cur = db.cursor()
- cur.execute("SELECT domain_name from domain;");
- for domainTmp in cur.fetchall():
- domain = domainTmp[0]
- print domain
- domainListe = []
- cmd = pfadLetsencryptauto+" certonly --renew-by-default --webroot -w /var/www/virtual/"+domain+"/htdocs/ -d "+domain+" -d www."+domain
- cur.execute("select subdomain_name,subdomain_mount from subdomain where domain_id=(select domain_id from domain where domain_name='"+domain+"');");
- for subdomain in cur.fetchall():
- domainListe.append(subdomain[0]+"."+domain);
- cmd = cmd +" -w /var/www/virtual/"+(domain+subdomain[1])+"/htdocs/ -d "+(subdomain[0]+"."+domain)
- print domainListe
- print cmd
- os.system(cmd)
- pkey = open("/etc/letsencrypt/live/"+domain+"/privkey.pem",'r').read() #default-pfad
- chain = open("/etc/letsencrypt/live/"+domain+"/chain.pem",'r').read() #default-pfad
- cert = open("/etc/letsencrypt/live/"+domain+"/cert.pem",'r').read() #default-pfad
- cur.execute("""update ssl_certs set
- ca_bundle=%s,
- private_key=%s,
- certificate=%s,
- status=%s
- where
- domain_type='dmn'
- AND domain_id=(select domain_id from domain where domain_name=%s)
- """
- ,(chain,pkey,cert,'tochange',domain));
- foo = cur.execute("""update ssl_certs set
- ca_bundle=%s,
- private_key=%s,
- certificate=%s,
- status=%s
- where domain_type='sub'
- AND domain_id IN (select subdomain_id
- from subdomain
- where domain_id= (select domain_id from domain where domain_name=%s)
- );
- """,(chain,pkey,cert,'tochange',domain));
- cur.execute("update domain set domain_status='tochange'");
- cur.execute("update subdomain set subdomain_status='tochange'");
- db.commit();
- os.system("/var/www/imscp/engine/imscp-rqst-mngr")
all zu viel arbeit ist nicht reingeflossen, dementsprechend auch nicht sehr sauber etc bla, funktioniert aber bei uns auf dem server problemlos so. zugangsdaten rein,pfade anpassen und ab gehts.
wer es erstmal nur testen will kann im obersten statement noch eine where-clause hinzufügen "where domain_name='i-mscp.net'" und das ganze dann erstmal nur dafür ausprobieren.Am anfang sollte man einmal Lets Encrypt laufen lassen oder die entsprechenden flags für die EMail-adresse und zum akzeptierend er TOS setzen
-
Ich hoffe doch das da noch ein Plugin folgt.
-
-
Die Zertifikate werden von imscp in der Datenbank abgelegt. Es sprich VIELES gegen diesen Weg. Ein automatisiertes Skript, welches anschließend die Zertifikate in die Datenbank importiert und den Domainstatus auf tochange stellt, wäre sicherlich um Einiges sauberer und imscp-komform.
Wie auch immer, wir hoffen, dass wir in nächster Zeit ein Plugin für LetsEncrypt entwickeln könnenHi Ninos,
ich würde bei der Plugin-Entwicklung helfen, hast du schon einen Plan?
Ich sehe vier Szenarien:
I. (Sub-)Domain anlegen
1. Zertifikat "erstellen"
2. Zertifikat in die DB übertragen
3. Apache domain.tld_ssl.conf erstellenII. Zertifikat erneuern:
Alle 75 Tage
1. Zertifikat erneuern
2. Zertifikat in die DB übertragenIII. Domain löschen:
1. Zertifikat revozieren
2. Zertifikat aus DB löschen und Apache domain.tld_ssl.conf löschen (macht imscp)IV. Zertifikat revozieren:
Nutzer kann ein Zertifikat in der GUI revozieren und ein neues erstellenTrägt der Nutzer ein anderes Zertifikat in der GUI ein, könnte man das let's encrypt Zertifikat auch revozieren.
-
Hey hey, ich würde wahrscheinlich nach dem Release von der 1.3.x mit dem Plugin beginnen. So ähnlich hatte ich es grob vor, klingt schonmal gut. Den revoke kann man später immer noch ausbauen..
-