Shell-Skript: Fehlermeldung mit iconv

Status
Für weitere Antworten geschlossen.

Burny92

Benutzer
Mitglied seit
13. Aug 2017
Beiträge
18
Punkte für Reaktionen
0
Punkte
1
Gerade mal ausprobiert:
Das Script von efzwo funktioniert! Immerhin.
Nur warum das von dir, geimist, nicht geht, ist weiterhin fraglich. Werde da einfach mal weiter mit spielen, vielleicht bekomme ich es ja irgendwie noch hin. Das wäre super.
Und nochmals vielen Dank für deine Hilfe! Ohne hätte ich das wohl nicht so schnell lösen können :)
Ich bedanke mich natürlich auch noch bei efzwo für das bereitstellen des Scriptes, und bei allen anderen, die mir geholfen haben!
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
Wenn du es rausbekommst, kannst du es ja bitte posten. Wäre interessant. Ich habe ja auch sein Skript genommen und nur die Zert-Quelle geändert.
Vielleicht als Ansatz:
Was bringt ein Vergleich von den beiden $TMP's? Die sollten ja eigentlich identisch sein.
 

Burny92

Benutzer
Mitglied seit
13. Aug 2017
Beiträge
18
Punkte für Reaktionen
0
Punkte
1
Sollte ich einen Unterschied oder einen Fehler finden, werde ich natürlich berichten :)
Vielleicht probiere es nachher nochmal.

Mit freundlichen Grüßen
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
In der letzten Zeit funktionierte der Import des Zertifikats in die Fritz!Box leider nicht mehr. Die Box quittierte den Import zwar positiv ("Das Zertifikat wurde erfolgreich importiert"), aber von der Box wurde weiterhin das alte ausgeliefert. In der Fritz!Box GUI waren gar keine Zertifikatsinfos einsehbar. Bei meinen Tests hat sich herausgestellt, dass die von Let'sEncrypt erstellte Datei cert.pem keinen abschließenden Zeilenumbruch mehr hat.

Abhilfe:
  1. Fügt man einen zusätzlichen Zeilenumbruch ein, funktioniert es wieder.
  2. man greift auf die Dateien privkey.pem und fullchain.pem zu

Rich (BBCode):
#!/bin/bash 
# https://gist.github.com/wikrie/f1d5747a714e0a34d0582981f7cb4cfb
# https://www.ip-phone-forum.de/threads/lets-encrypt-zertifikat-auf-der-fritzbox.282964/page-2#post-2145225

# Parameter 
    DOMAIN="example.org"
    USERNAME="Fritz-User"
    PASSWORD="Fritz-PW" 
    HOST=192.168.170.1

    CERTPASSWORD="" # optional


########## ab hier nichts mehr ändern ########## 
    skriptuser=`whoami`
    if [ ${skriptuser} != "root" ]; then
        echo "Dieses Skript muss von Root ausgeführt werden!"
        exit 1
    fi

# den passenden Zertifikatsordner suchen:
    for domain_cert in /usr/syno/etc/certificate/_archive/*; do
        if [ -d ${domain_cert} ] && [ -f ${domain_cert}/cert.pem ];then
            openssl x509 -in ${domain_cert}/cert.pem -text | grep DNS:${DOMAIN} > /dev/null 2>&1
            domain_found=$?
            if [ "${domain_found}" = "0" ]; then
                CERTPATH=${domain_cert}
                echo "Zertifikat für $DOMAIN liegt hier: $CERTPATH"
            fi
        fi
    done

# make and secure a temporary file 
    TMP="$(mktemp -t XXXXXX)" 
    chmod 600 $TMP 

# login to the box and get a valid SID 
    CHALLENGE=`wget -q -O - $HOST/login_sid.lua | sed -e 's/^.*<Challenge>//' -e 's/<\/Challenge>.*$//'` 
    HASH=`echo -n $CHALLENGE-$PASSWORD | perl -p -e 'use Encode qw/encode/; print encode("UTF-16LE","$_"); $_="";' |md5sum|awk '{print $1}'`
    SID=`wget -O - "$HOST/login_sid.lua?sid=0000000000000000&username=$USERNAME&response=$CHALLENGE-$HASH"| sed -e 's/^.*<SID>//' -e 's/<\/SID>.*$//'` 

# generate our upload request 
    BOUNDARY="---------------------------"`date +%Y%m%d%H%M%S` 
    printf -- "--$BOUNDARY\r\n" >> $TMP 
    printf "Content-Disposition: form-data; name=\"sid\"\r\n\r\n$SID\r\n" >> $TMP 
    printf -- "--$BOUNDARY\r\n" >> $TMP 
    printf "Content-Disposition: form-data; name=\"BoxCertPassword\"\r\n\r\n$CERTPASSWORD\r\n" >> $TMP 
    printf -- "--$BOUNDARY\r\n" >> $TMP 
    printf "Content-Disposition: form-data; name=\"BoxCertImportFile\"; filename=\"BoxCert.pem\"\r\n" >> $TMP 
    printf "Content-Type: application/octet-stream\r\n\r\n" >> $TMP 
#    cat $CERTPATH/cert.pem >> $TMP 
#    echo -e >> $TMP # zusätzlicher Zeilenumbruch
#    cat $CERTPATH/chain.pem >> $TMP 
#    cat $CERTPATH/privkey.pem >> $TMP 
    cat $CERTPATH/privkey.pem >> $TMP
    cat $CERTPATH/fullchain.pem >> $TMP
    printf "\r\n" >> $TMP 
    printf -- "--$BOUNDARY--" >> $TMP 

# upload the certificate to the box
    echo -n "übertrage Zertifikat zur Fritz!Box ? "
    wget -q -O - $HOST/cgi-bin/firmwarecfg --header="Content-type: multipart/form-data boundary=$BOUNDARY" --post-file $TMP | grep SSL 

# clean up 
    rm -f $TMP  

exit 0
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat