Kategorie: IT

Die Cloud, collateral damage

Ich brow­se gera­de durch einen Issue bei #Git­lab und lese dies:

As you know, Git­Lab was migra­ted to goog­le cloud and this ser­vice is not acces­si­ble from Iran. I did not know about the sta­te of this issue until you men­ti­on me.

Egal, ob nun Goog­le, Apple, Micro­soft, Ora­cle… — die­ses “der Algo­rith­mus ent­schei­det” ist ganz ganz gro­ßer Mist. Davor soll sich nie­mand ver­ste­cken dürfen.

Opensource ist unwichtig

Mit den Jah­ren reagie­re ich immer all­er­gi­scher auf die völ­lig unre­flek­tier­ten Jubel­ge­sän­ge pro OSS.

OSS hat einen ein­zi­gen Vor­teil: Umsonst in der Anschaf­fung. Jeder wei­te­re behaup­te­te Vor­teil, ins­be­son­de­re daß OSS siche­rer sei weil ja jeder rein­se­hen kann, scheint mir rea­li­täts­fern: Denn es sind IMMER die ande­ren, die ja rein­schau­en kön­nen. Wor­aus folgt: Nie­mand schaut rein. Oder? Wer von euch hat denn den Quell­code zum Linux Ker­nel, zu Open­Of­fice, Fire­fox, Gno­me… gele­sen? Und lesen allein ist ja kom­plett sinn­los, man muß auch noch kom­pe­tent sein. Nein, wir haben nicht ein­mal den Quell­code für /bin/true gele­sen. Oder?
“Die Com­mu­ni­ty” ist auch eine schö­ne Vor­stel­lung — allein: die Ent­wick­lungs­kos­ten für die wirk­lich gro­ßen OSS-Pro­jek­te zah­len Fir­men, indem sie Pro­gram­mie­rer bereit­stel­len. Und die arbei­ten wohl eher nach Vor­ga­ben ihrer Arbeit­ge­ber als nach unse­ren Issue­tra­cker-Tickets. (Mir fal­len auch vie­le Aus­nah­men ein, aber die ändern nichts am Prinzip)

Die Zei­ten, in denen ein Stu­dent einen Ter­mi­nal Emu­la­tor schreibt und hin­ten ver­se­hent­lich ein Ker­nel rau­spur­zelt, der dann die Welt erobert — die sind vorbei.

Nein, es geht um etwas ande­res: offe­ne Pro­to­kol­le und offe­ne Datei­for­ma­te. Im Inter­net, gibt es da noch pro­prie­tä­re Pro­to­kol­le? Mir fällt nichts ein. Außer­halb sicher­lich, aber auch da fällt mir gera­de nichts ein.
Aber die offe­nen Datei­for­ma­te: Da ent­schei­det sich m.E. die Zukunft. Wir sehen ja den Kampf: Micro­soft hat­te sei­ne völ­lig geschlos­se­nen Office-For­ma­te und muß­te dann (wegen der Regie­rungs­auf­trä­ge) neue For­ma­te erfin­den: Office Open XML, das so kom­plex ist, daß nie­mand, auch MS sel­ber nicht, es voll­stän­dig imple­men­tiert. Ange­rei­chert dann um eine zu allen ande­ren inkom­pa­ti­ble Makro­spra­che, so daß auch heu­te noch .docx auto­ma­tisch als “Word-Doku­ment” ver­stan­den wird — was falsch ist. Micro­soft Word kann docx schrei­ben, Apple Pages kann es, Libre­of­fice kann es, Papy­rus Office kann es… Ja, die Doku­men­te sehen viel­leicht über­all leicht anders aus, aber wer defi­niert denn, was “rich­tig” und was “falsch” ist?

Ich bin davon über­zeugt, daß unse­re digi­ta­le Frei­heit zuerst an offe­nen For­ma­ten — und danach viel­leicht an quell­of­fe­nen Ver­ar­bei­tungs­pro­gram­men — hängt.

Und der Titel die­ses Posts ist natür­lich mit Absicht provokant 😉

Umdeutung von Symbolen

Ges­tern woll­te ich der Toch­ter mal wie­der was von vor dem Krieg erzäh­len: Frü­her wur­de auf Dis­ket­ten gespei­chert, Dis­ket­ten sahen so aus, das nimmt man heu­te manch­mal noch als Speichern-Symbol.
Und wie? Nun, indem ich ihr eine moder­ne App mit Spei­chern-Sym­bol zeige:

Na, Toch­ter, was glaubst Du, wor­auf man zum Spei­chern tip­pen muß?”

Sie zeigt ziel­si­cher auf die Dis­ket­te, ich stau­ne Bau­klöt­zer. “Wor­an hast Du das erkannt???” “Na das ist doch eine Spei­cher­kar­te!” ant­wor­tet sie verwirrt…

Firmware-Update für Logitech

Die klei­ne Toch­ter hat an ihrem Odroid eine draht­lo­se Kom­bi aus Tas­ta­tur und Maus zu hän­gen, für die gibts schein­bar Security-Updates:

root@gerhard:~# fwupdmgr get-upgrades
? BJTD4R has no available firmware updates
Unknown Product
?
??Unifying Receiver:
  ?   Device ID:           71fcf526569a6cf966914382b98edf144b59cf48
  ?   Summary:             A miniaturised USB wireless receiver
  ?   Current version:     RQR24.01_B0023
  ?   Bootloader Version:  BOT03.01_B0008
  ?   Vendor:              USB:0x046D
  ?   Install Duration:    30 seconds
  ?   GUIDs:               cc4cbfa9-bf9d-540b-b92b-172ce31013c1
  ?                        fcf55bf5-767b-51ce-9c17-f6f538c4ee9f ? HIDRAW\VEN_046D&DEV_C52B&REV_00
  ?                        279ed287-3607-549e-bacc-f873bb9838c4 ? HIDRAW\VEN_046D&DEV_C52B
  ?   Device Flags:        ? Updatable
  ?                        ? Supported on remote server
  ?
  ??Unifying Receiver (RQR24) Device Update:
  ?     New version:       RQR24.06_B0030
  ?     Remote ID:         lvfs
  ?     Summary:           Firmware for the Logitech Unifying receiver
  ?     License:           Proprietary
  ?     Size:              86.4?kB
  ?     Vendor:            Logitech
  ?     Duration:          30 seconds
  ?     Flags:             is-upgrade
  ?     Description:       This release addresses an encrypted keystroke injection issue known as Bastille security issue #13. The vulnerability is complex to replicate and would require a hacker to be physically close to a target.
  ?
  ?     A few of Logitech's devices used to send select buttons in an unencrypted way, and in an effort to protect against this vulnerability, Logitech removed the feature. Affected hardware is:
  ?
  ?      ? Wireless Mouse M335
  ?      ? Zone Touch Mouse T400
  ?      ? Wireless Mouse M545
  ?      ? Wireless Mouse M560
  ?      ? Touch Mouse M600
  ?      ? Touch Mouse T620
  ?      ? Wireless Rechargeable Touchpad T650
  ?
  ?     Although Logitech does not recommend it, these features may be re-activated by keeping/downgrading the receiver to an older firmware.
  ?
  ??Unifying Receiver (RQR24) Device Update:
        New version:       RQR24.05_B0029
        Remote ID:         lvfs
        Summary:           Firmware for the Logitech Unifying receiver
        License:           Proprietary
        Size:              86.4?kB
        Vendor:            Logitech
        Duration:          30 seconds
        Flags:             is-upgrade
        Description:       This release addresses an unencrypted keystroke injection issue known as Bastille security issue #11. The vulnerability is complex to replicate and would require a hacker to be physically close to a target.

root@gerhard:~#

Was mache ich nun?

Angst vor Angrif­fen habe ich wirk­lich nicht.

fail2ban umgehen

Gera­de sehe ich mal durch die Logs des sshd, da fällt auf:

Mar  2 09:59:46 big sshd[7021]: Invalid user admin from 141.98.80.69 port 45833
Mar  2 09:59:46 big sshd[7024]: Invalid user admin from 141.98.80.70 port 35859
Mar  2 09:59:54 big sshd[7037]: Invalid user user from 141.98.80.71 port 46773
Mar  2 09:59:55 big sshd[7468]: Invalid user admin from 141.98.80.82 port 43473
Mar  2 09:59:56 big sshd[7573]: Invalid user operator from 141.98.80.85 port 50042
Mar  2 09:59:57 big sshd[7599]: Invalid user test from 141.98.80.69 port 33773
Mar  2 10:00:06 big sshd[7684]: Invalid user guest from 141.98.80.71 port 42305
Mar  2 10:00:07 big sshd[8321]: Invalid user ubnt from 141.98.80.82 port 38095
Mar  2 10:00:07 big sshd[8997]: Invalid user guest from 141.98.80.83 port 35895
Mar  2 10:00:07 big sshd[9004]: Invalid user support from 141.98.80.85 port 52444

Das heißt, der Angrei­fer hat meh­re­re IPs unter sei­ner Kon­trol­le und kann die wech­seln. Sinn­voll ist das nur, um ein IDS zu umgehen.

Gigabit @home, wofür nochmal?

Ich habe (Voda­fone Kabel) Giga­bit zu Hau­se, natür­lich nur im Down­load, momen­tan gera­de (was macht der Rest der Fami­lie? Inter­net kopieren?)

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   447 MBytes   375 Mbits/sec  162             sender
[  5]   0.00-10.00  sec   444 MBytes   372 Mbits/sec                  receiver

Und Upload:

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  64.8 MBytes  54.4 Mbits/sec   57             sender
[  5]   0.00-10.00  sec  63.0 MBytes  52.9 Mbits/sec                  receiver

Im Down­load habe ich aber auch schon Wer­te im die 980 gesehen.
Und was nut­zen wir davon?

Das ist der Traf­fic eines Jah­res, mit durch­ge­hend Home­of­fice, zwei Kin­dern im Home­schoo­ling, jedes mit eige­nem Rechner.
Gut, wir zocken kaum, das biß­chen Mine­craft des Soh­nes fällt nicht auf.

Ich ver­ste­he nicht, wes­we­gen alle Welt Giga­bit haben will.

Ins Knie schießen für Fortgeschrittene

Ges­tern ging @workplace das Dra­ma los:
DNS-Reso­lu­ti­on für unse­re Hosts ging mal, mal nicht mit SRVFAIL. Unser eige­ner auto­ri­ta­ti­ver Ser­ver hat­te kei­ne Pro­blem, aber der Rest der Welt: 1.1.1.1, 8.8.8.8, 9.9.9.9 und so wei­ter. Alle wie ein Blin­ker: An-Aus-An-Aus.
Als anstän­di­ger Hob­by-Admin betrei­be ich die frag­li­che Zone natür­lich mit DNSSEC, seit vie­len Jah­ren völ­lig schmerzlos.
Doch ges­tern zeig­te mir Dns­viz viel rot:

Very uncool. Nun KANN das eigent­lich gar nicht pas­sie­ren, ich habe in mei­nem bind die Zone so konfiguriert:

zone "sagich.nicht" {                                                                                                                                                                                                                          
  type master;                                                                                                                                                                                                                           
  auto-dnssec maintain;                                                                                                                                                                                                                  
  key-directory "/keys";                                                                                                                                                                                                                 
  inline-signing yes;                                                                                                                                                                                                                    
  file "sagich.nicht";                                                                                                                                                                                                         };

Das gan­ze Sig­ning pas­siert also auto­ma­tisch, und das seit Jah­ren, und dar­an hat sich auch nichts geän­dert. Kru­zi­tür­kn! Ich bin kein DNS­SEC-Pro­fi, wie gesagt, das läuft seit Jah­ren sta­bil und ohne mensch­li­ches Eingreifen.

Heu­te früh dann noch mal mit fri­schem Tee einen Blick in die Run­de gewor­fen: Mein Pri­ma­ry hat eine Seri­al von 2021021014, wäh­rend der Secon­da­ry 2021070247 hat. Let’s do the math: 2021021014 < 2021070247. Wenn man Seri­al schreibt, hat sich die Schreib­wei­se YYYYMMDDzwei­stel­li­ge­sin­kre­ment bewährt. Es gibt im Fir­men-DNS (hof­fent­lich) nur zwei Men­schen, die da schrei­ben können/dürfen — einen Kol­le­gen und mich. Der höhe­ren Seri­al 2021070247 nach zu urtei­len, hat jemand am 07. 02. 2021 die Seri­al erhöht, um einen gewal­ti­gen Sprung. Was zur Fol­ge hat­te, daß der Secon­da­ry ab die­sem Zeit­punkt kei­ne Noti­fies mehr ent­ge­gen­nahm, war­um auch. Auch nicht die Noti­fies, daß sie die RRSIGs geän­dert haben…
Ich für mei­nen Teil kann mich nicht erin­nern, am 7. 2. im DNS geschmiert zu haben — was aber nicht all­zu­viel bedeu­tet, viel­leicht habe ja doch ich das vergeigt.
Jetzt müs­sen wir war­ten, bis der Admin des Secon­da­ries die Zone bei sich löscht und neu zieht, dann ist hof­fent­lich alles wie­der schön.

#sel­flart #dns #dns­sec

Home Assistant auf Docker umgestellt

Ich hat­te bis­lang Home Assistant in einem Python vir­tu­al envi­ron­ment zu lau­fen — war­um? Nun, es gibt wohl ein Image auf SD-Kar­te: Ein­schie­ben, boo­ten, HA läuft. Aller­dings ist ein Pi viel zu potent, als daß man ihn mit einer ein­zi­gen Auf­ga­be belei­di­gend unter­for­dern wollte.
Da kam die venv-Vari­an­te gera­de recht: Man kann rum­schwei­nen, Python-Packa­ges nach­in­stal­lie­ren nach Gus­to, ohne das sys­tem-Python anfas­sen zu müs­sen. Mit einer Ein­schrän­kung: Man ist an das System-Python(3) gebun­den, und das ist bei einem aktu­el­len Raspbi­an 3.7.3 — und HA mault das seit Mona­ten als depre­ca­ted an.
Ein neue­res Python gibt es aber nicht als Paket (jeden­falls habe ich nichts gefun­den). Also ich bin ja ein uber­he­ro, habe vie­le vie­le Jah­re send­mail aus den Quel­len über­setzt und mei­ne aller­ers­te sendmail.cf tat­säch­lich sel­ber geschrie­ben (und danach m4 ent­deckt), also so ein pop­li­ges Python sel­ber bau­en, ist ja wohl kei­ne Her­aus­fo­de­rung! Stellt sich raus: In der Tat, ist es nicht, geht ganz smooth. Also schnell noch Ali­a­se gesetzt und los: python-venv gestar­tet, HA gestartet.

Wel­co­me tot the depen­den­ci­es hell!¹

Ach was da alles nicht ver­füg­bar ist! xz,sqlite3 — danach habe ich aufgegeben.

Die Lösung?

systemctl stop home-assistant@homeassistant.service
systemctl disable home-assistant@homeassistant.service
docker run --init -d --name="home-assistant" -e "TZ=Europe/Berlin" -v /home/homeassistant/.homeassistant:/config/ --net=host --restart=always homeassistant/raspberrypi4-homeassistant:stable

Löppt. So ein­fach kann es sein!

root@r4:~# python3 --version
Python 3.7.3
root@r4:~# docker exec -ti home-assistant python3 --version
Python 3.8.7
root@r4:~#

Dann will man natür­lich gleich Watch­tower haben. Das meckert zwar beim Star­ten, läuft dann aber wohl doch:

root@r4:~# docker run -d --name watchtower --restart always -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm/v7) and no specific platform was requested
33f87b78d1ba24793b0272db247f7f4fc9315e0e4aee335128e1049db6fe3aa3
root@r4:~# docker ps
CONTAINER ID   IMAGE                                             COMMAND         CREATED          STATUS          PORTS      NAMES
33f87b78d1ba   containrrr/watchtower                             "/watchtower"   13 seconds ago   Up 11 seconds   8080/tcp   watchtower
bfebd671b8fd   homeassistant/raspberrypi4-homeassistant:stable   "/init"         43 minutes ago   Up 43 minutes              home-assistant
root@r4:~#

Wun­der­bar! War­um habe ich das nicht seit lan­gem so???


¹ OK, wer schon mal Ruby Depen­den­ci­es hin­be­kom­men hat, der wird das­sel­be bei Python noch voll­trun­ken hinbekommen.

Projekt Phoenix

Das ist eine “Rezen­si­on”, die ich 2016-11-16 12:58:39+0100 bei Goog­le+ geschrie­ben hat­te. und nun aus Grün­den re-pos­ten möchte.

—–8<—–

Pro­jekt Phoe­nix — Der Roman über IT und DevOps

Die Sto­ry:
Der Held (Bill Pal­mer) wird anfangs zum IT-Chef (genau­er: VP IT
Ope­ra­ti­ons) der Fir­ma Parts Unli­mi­t­ed beför­dert — eigent­lich läßt er
sich eher breit­schla­gen, die­sen Pos­ten zu über­neh­men. Parts Unlimited
ist eine Zulie­fer­fir­ma (Auto­bau?, das wird nicht genau­er erklärt) und
hat ca. 4000 Mit­ar­bei­ter. Der Fir­ma geht es nicht gut, die Konkurrenz
ist schnel­ler und beweg­li­cher. Des­halb wur­de das Pro­gramm Phoe­nix ins
Leben geru­fen, das nun alles ändern soll. An Phoe­nix hängt die Zukunft
der Fir­ma. Phoe­nix selbst ist en gro­ßer Klum­pen aus Prozessen,
Ver­ant­wort­lich­kei­ten — und eben auch (selbst­ge­schrie­be­ner) Software.
Sehr viel hängt dabei von der völ­lig über­for­der­ten IT ab.

Der ers­te Teil des Romans führt die han­deln­den Per­so­nen ein, und
illus­triert ansons­ten die depri­mie­ren­de Situa­ti­on in der Fir­ma. Auf jede
Kata­stro­phe folgt eine noch grö­ße­re Kata­stro­phe. Bill ver­sucht zu
ret­ten, was zu ret­ten ist, aber die ihm zur Ver­fü­gung ste­hen­de Zeit ist
ein­fach zu kurz. Natür­lich lei­det auch sei­ne Fami­lie. Am Ende wird das
Pro­jekt Phoe­nix mit Schma­ckes gegen die Wand gefah­ren (erin­nert sich
jemand an die zusam­men­stür­zen­de Seil­bahn bei Alexis Sor­bas — genau so!)
Ver­ant­wort­lich letzt­lich ist der völ­lig inkom­pe­ten­te CEO der Fir­ma, der
sämt­li­che War­nun­gen Bills in den Wind geschla­gen hat. Bill kündigt
daraufhin.

In Teil 2 wird genau der­sel­be CEO über Nacht geläu­tert und sieht seine
Feh­ler ein. Bill wird wie­der ein­ge­stellt und bekommt fak­tisch freie
Hand. Bereits im vori­gen Teil tauch­te ein Auf­sichts­rats-Kan­di­dat auf:
Erik, der fort­an als Bills Men­tor auf­tritt. In den Gesprä­chen zwischen
Erik und Bill geht es immer dar­um, ers­tens die IT als Pro­duk­ti­on zu
ver­ste­hen und zwei­tens Bill begreif­lich zu machen, daß er die
Gesamt­or­ga­ni­sa­ti­on im Blick haben muß, nicht nur die IT. Dabei ist Erik
eine merk­wür­di­ge Mischung aus einem wei­sen alten Kung­fu-Leh­rer und
Sokra­tes (Mäeu­tik) In die­sem zwei­ten Teil schafft Bill es, die
wich­tigs­ten Eng­päs­se zu loka­li­sie­ren und beginnt mit ihrer Beseitigung.

In Teil 3 dann wird die Ern­te ein­ge­fah­ren, die in Teil 2 gesät wurde.
Alles wird fein, die Fir­ma läßt die Kon­kur­renz hin­ter sich, Bill steht
eine glän­zen­de Kar­rie­re an der Fir­men­spit­ze in Aussicht.

Mein Senf:
Ein grau­en­voll schlech­ter Roman. Die han­deln­den Per­so­nen sind allesamt
Kli­schees, die Hand­lung ist völ­lig vor­her­seh­bar, die Per­so­nen entwickeln
sich nicht. Die plötz­li­che Läu­te­rung des CEOs über Nacht wird weder
her­bei­ge­führt noch irgend­wie begrün­det. Es ist ein­fach pas­siert. Die
Dia­lo­ge sind schmerz­haft gestelzt und könn­ten einer Image-Kam­pa­gne für
irgend­was ent­nom­men sein. Kei­ne Les­emp­feh­lung von mir.

Es sei denn, man hat irgend­wie mit IT und Ent­wick­lung zu tun. Der Autor
ist ehe­ma­li­ger Mit­grün­der von Trip­wire und ver­steht also etwas vom
Gegen­stand des Buches: Wie baue ich ein funk­tio­nie­ren­des Softwareprodukt
in mög­lichst kur­zer Zeit? In Teil 1 wird die Ist-Situa­ti­on dargestellt:
ein ein­zi­ges Kud­del­mud­del. Jeder Ent­wick­ler darf über­all­hin einchecken,
es gibt kei­ne sta­ble bran­ches, CI/CD gibt es auch nicht, keine
defi­nier­ten Test­um­ge­bun­gen usw. usf. Ab der Bestands­auf­nah­me und auch
im gan­zen Teil 2 kommt Erik die Rol­le zu, Bill und damit dem Leser die
Prin­zi­pi­en von DevOPs nahe­zu­brin­gen. Dabei tritt er wie ein asiatischer
Guru auf. Teil 3 spielt gar kei­ne Rol­le mehr, der ist nur fürs Happy
End zustän­dig. Und da könn­te dann auch der Lese­ge­winn für den
inter­es­sier­ten IT-ler/­Ent­wick­ler lie­gen: die Her­lei­tung von modernen
Prin­zi­pi­en in der Soft­ware-Ent­wick­lung. Nur ist die Fra­ge, ob man dafür
nicht bes­ser ein tro­cke­nes Lehr­buch gele­sen hät­te. Apro­pos Lehrbücher:
Die (es sind eini­ge) wer­den auch kurz gewür­digt, da tau­chen dann
pene­trant sol­che Epi­the­ta wie “weg­wei­send, fantastisch,
beein­dru­ckend…” auf. Nicht mein Ding jedenfalls.
Offen­sicht­lich aber woll­te der Autor (genau­ge­nom­men die 3 Autoren) einen
Roman und kein Lehr­buch schrei­ben. Der Roman, der dabei herausgekommen
ist, ist lei­der eine Ent­täu­schung geworden.

Anhang:
Das bezieht sich alles auf das Ebook bei Ama­zon, und das ist leider
lieb­los gemacht. Kei­ne Sil­ben­tren­nung, aber Block­satz, dadurch teils
häß­lich gro­ße Wort­ab­stän­de. Völ­lig unmo­ti­vier­te kur­siv gesetzte
Pas­sa­gen, meist am Absatz­an­fang. Scha­de, von O’Reil­ly darf man
mehr Sorg­falt erwarten.

—–8<—–

#aus­ge­le­sen

Heimrouter ein LE-Zertifikat verpaßt

Seit län­ge­rem schon wer­den die gro­ßen Brow­ser immer ping­li­ger bei Zer­ti­fi­ak­ten: Selbst­si­gnier­te mögen sie nicht, neu­er­dings sol­che mit Lauf­zei­ten von > 395 Tagen, wenn der CN bzw. SAN nicht stim­men; wer weiß, was nächs­ten Monat passiert.

Also habe ich es nun end­lich in Angriff genom­men: Dem Rou­ter­chen im Kel­ler ein sau­be­res Zer­ti­fi­kat geben. Da ich sowie­so schon über­all ein Wild­card für *.sokoll.com ver­wen­de, war­um nicht für den Rou­ter? Also zunächst im DNS den Rou­ter bekannt machen (eigent­lich fin­de ich pri­va­te Adres­sen im DNS uncool, aber nun ja)

~$ host homerouter.sokoll.com
homerouter.sokoll.com has address 192.168.1.254
~$

Das war schon mal einfach!
Nun noch schnell das Zer­ti­fi­kat rüber­schie­ben. Das macht dann der Raspi daneben:

root@r4:~/bin# cat le_for_router.sh
#!/bin/sh
rsync -aL big.sokoll.com:/etc/dehydrated/certs/wildcard_sokoll.com/{fullchain,privkey}.pem /tmp/
cat /tmp/privkey.pem /tmp/fullchain.pem > /tmp/server.pem
rsync -a /tmp/server.pem 192.168.1.254:/etc/lighttpd/ 2>/dev/null
ssh 192.168.1.254 'kill -SIGINT $(cat /var/run/lighttpd.pid) ; /usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf' 2>/dev/null
rm /tmp/*.pem
root@r4:~/bin#

Dum­mer­wei­se inter­es­siert ein SIGHUP den ligh­ty über­haupt nicht, so daß man ihn töten und hin­ter­her neu star­ten muß. Das gan­ze wird dann ein­mal täg­lich via cron aufgerufen.
Ich soll­te noch etwas verschönern:Wenn sich das Zer­ti­fi­kat nicht geän­dert hat, kann man eigent­lich gleich nach dem ers­ten rsync aufhören.
Das wird dann Ver­si­on 0.0.1 😉