Kategorie: Web

  • Wechsel von ioBroker zu Home Assistant

    Meine positiven Erfahrungen beim Wechsel von ioBroker zu Home Assistant

    Nach vier Jahren intensiver Nutzung von ioBroker habe ich mich entschieden, auf Home Assistant umzusteigen. Diese Entscheidung war nicht leicht, da ioBroker mir über die Jahre hinweg gute Dienste geleistet hat. Dennoch habe ich schnell gemerkt, dass der Wechsel zu Home Assistant viele Vorteile mit sich bringt, die meine Erwartungen übertroffen haben.

    Einfache Integration und Benutzerfreundlichkeit

    Einer der ersten positiven Aspekte, die mir bei Home Assistant aufgefallen sind, ist die einfache Integration und Benutzerfreundlichkeit. Während ioBroker eine gewisse Einarbeitungszeit erforderte, um alle Funktionen und Möglichkeiten zu verstehen, bietet Home Assistant eine intuitivere Benutzeroberfläche. Die Einrichtung neuer Geräte und Automatisierungen geht schnell von der Hand, und die umfangreiche Dokumentation sowie die aktive Community bieten jederzeit Unterstützung. Besonders die visuelle Darstellung der Automatisierungen und die Möglichkeit, diese per Drag-and-Drop zu erstellen, haben mir den Einstieg erleichtert.

    Leistungsstarke Add-ons

    Ein herausragendes Merkmal von Home Assistant, das mich besonders begeistert, ist die Add-on-Funktionalität. Hier sticht insbesondere das Add-on Cloudflared hervor. Mit Cloudflared kann ich meine Home Assistant-Instanz sicher und einfach über das Internet zugänglich machen, ohne komplizierte Portweiterleitungen oder VPNs einrichten zu müssen. Diese Funktionalität hat meine Smart-Home-Erfahrung erheblich verbessert und bietet mir die Flexibilität, von überall auf meine Geräte zuzugreifen. Darüber hinaus gibt es eine Vielzahl weiterer nützlicher Add-ons, wie den File Editor, der das Bearbeiten von Konfigurationsdateien direkt im Browser ermöglicht, oder Node-RED, das eine visuelle Programmierumgebung für komplexe Automatisierungen bietet.

    Regelmäßige Updates und Verbesserungen

    Ein weiterer großer Vorteil von Home Assistant sind die regelmäßigen Updates und Verbesserungen. Das Entwicklerteam hinter Home Assistant ist äußerst aktiv und bringt kontinuierlich neue Funktionen und Sicherheitsupdates heraus. Dies sorgt nicht nur für eine stetige Weiterentwicklung der Plattform, sondern auch für ein hohes Maß an Sicherheit und Stabilität. Im Vergleich zu ioBroker, wo Updates manchmal unregelmäßig erschienen, fühle ich mich bei Home Assistant stets auf dem neuesten Stand der Technik. Die detaillierten Release Notes und die Möglichkeit, Updates mit einem Klick zu installieren, machen den Prozess zudem sehr benutzerfreundlich.

    Vielfältige Integrationen

    Home Assistant bietet eine beeindruckende Anzahl an Integrationen für verschiedenste Geräte und Dienste. Egal ob es sich um Smart-Home-Geräte, Wetterdienste oder Sprachassistenten handelt – die Integration ist meist unkompliziert und erweitert die Möglichkeiten meines Smart Homes erheblich. Im Vergleich zu ioBroker habe ich festgestellt, dass Home Assistant eine breitere Unterstützung und einfachere Konfigurationsmöglichkeiten bietet. Besonders die nahtlose Integration von Diensten wie Google Assistant und Amazon Alexa hat mich überzeugt, da ich nun meine Geräte bequem per Sprachbefehl steuern kann.

    Flexibilität und Anpassbarkeit

    Die Flexibilität und Anpassbarkeit von Home Assistant sind ebenfalls bemerkenswert. Mit YAML-Konfigurationen und der Möglichkeit, eigene Skripte und Automatisierungen zu erstellen, kann ich mein Smart Home genau nach meinen Vorstellungen gestalten. Diese Anpassungsfähigkeit war einer der Hauptgründe, warum ich mich für Home Assistant entschieden habe, und sie hat mich nicht enttäuscht. Die Möglichkeit, benutzerdefinierte Dashboards zu erstellen und die Oberfläche nach meinen Wünschen anzupassen, bietet mir ein hohes Maß an Individualität. Zudem ermöglicht die Integration von HACS (Home Assistant Community Store) den einfachen Zugriff auf benutzerdefinierte Komponenten und Themes, die von der Community entwickelt wurden.

    Virtualisierung mit Proxmox

    Ein weiterer bedeutender Schritt in meiner Smart-Home-Reise war der Wechsel von einem Raspberry Pi zu einer Virtualisierungslösung mit Proxmox. Diese Entscheidung hat meine Home Assistant-Instanz noch leistungsfähiger und stabiler gemacht. Proxmox bietet eine robuste Plattform für die Virtualisierung, die es mir ermöglicht, mehrere virtuelle Maschinen und Container auf einem einzigen Host zu betreiben. Dies hat nicht nur die Performance verbessert, sondern auch die Verwaltung und Skalierbarkeit meines Smart-Home-Systems vereinfacht. Die Möglichkeit, Snapshots zu erstellen und Backups zu automatisieren, gibt mir zusätzliche Sicherheit und Flexibilität.

    Community und Support

    Ein weiterer Aspekt, der mich bei Home Assistant beeindruckt hat, ist die starke und hilfsbereite Community. In den Foren und auf Plattformen wie GitHub und Discord finde ich stets Unterstützung und kann mich mit anderen Nutzern austauschen. Die Vielzahl an Tutorials, Videos und Blogbeiträgen, die von der Community erstellt werden, haben mir den Umstieg erheblich erleichtert. Bei ioBroker war die Community zwar auch aktiv, aber bei Home Assistant habe ich das Gefühl, dass die Unterstützung noch umfassender und zugänglicher ist.

    Nützliche Links

    Hier sind einige Links, die mir bei der Umstellung und Nutzung von Home Assistant besonders geholfen haben:

  • jdownloader on qnap

    jdownloader auf qnap

    Um jdownloader auf einem qnap zu installieren und über das Webinterface zu verwenden, müssen Sie die folgenden Schritte ausführen

    Zuerst müssen Sie installieren „Entware“ mit diesem Skript https://raw.githubusercontent.com/Entware/installer.sh/master/generic.sh

    Dann müssen Sie JRE über den QNAP Store installieren

    Registrieren Sie ein Konto auf https://my.jdownloader.org

    Jetzt müssen Sie diesen Code ausführen

    #!/bin/bash
    
    clear
    
    /bin/echo ""
    /bin/echo "============================================================="
    /bin/echo "            JDownloader2 QPKG Installer script"
    /bin/echo "============================================================="
    /bin/echo ""
    
    JAVA_HOME_TEST=$(/bin/cat /etc/profile | awk '/JAVA_HOME=/ { print $2 }' | tail -c +11)
    CONF=/etc/config/qpkg.conf
    QPKG_NAME="JDownloader2"
    QPKG_DIR=$(/sbin/getcfg $QPKG_NAME Install_Path -f $CONF)
    JD2_UPDATE_FILE="jd2_update"
    JD2_UPDATE_LINK="https://www.dropbox.com/s/gmp6wu95b3wyecm/$JD2_UPDATE_FILE"
    JD2_JAR_FILE="http://installer.jdownloader.org/JDownloader.jar"
    JAR_FILENAME=`/bin/echo $JD2_JAR_FILE | cut -d'/' -f 4`
    
    export LC_ALL=en_US.UTF-8
    export LANG=en_US.UTF-8
    export LANGUAGE=en_US.UTF-8
    
    if [ ! -z $QPKG_DIR ] ; then
      /bin/echo "===================================================================================="
      /bin/echo "JDownloader2 is already installed, please remove it if you want to install it again!"
      /bin/echo "===================================================================================="
      /sbin/write_log "JDownloader2 is already installed, please remove it if you want to install it again!" 1
      exit
    fi
    
    QPKG_DIR=
    
    # Determine BASE installation location according to smb.conf
    BASE=
    publicdir=`/sbin/getcfg Public path -f /etc/config/smb.conf`
    if [ ! -z $publicdir ] && [ -d $publicdir ];then
      publicdirp1=`/bin/echo $publicdir | /bin/cut -d "/" -f 2`
      publicdirp2=`/bin/echo $publicdir | /bin/cut -d "/" -f 3`
      publicdirp3=`/bin/echo $publicdir | /bin/cut -d "/" -f 4`
      if [ ! -z $publicdirp1 ] && [ ! -z $publicdirp2 ] && [ ! -z $publicdirp3 ]; then
        [ -d "/${publicdirp1}/${publicdirp2}/Public" ] && BASE="/${publicdirp1}/${publicdirp2}"
      fi
    fi
    
    # Determine BASE installation location by checking where the Public folder is.
    if [ -z $BASE ]; then
      for datadirtest in /share/HDA_DATA /share/HDB_DATA /share/HDC_DATA /share/HDD_DATA /share/MD0_DATA; do
        [ -d $datadirtest/Public ] && BASE="$datadirtest"
      done
    fi
    if [ -z $BASE ] ; then
      /bin/echo "The Public share not found."
      exit
    fi
    
    #JD2_TMP_DIR="$publicdir/$JD2_DIR"
    
    CheckForOpt(){ #Does /opt exist? if not check if it's optware that's installed or opkg, and start the package 
      /bin/echo -n " Checking for /opt..."
      if [ ! -d /opt/bin ]; then
        if [ -x /etc/init.d/Optware.sh ]; then #if optware ,start optware
          /bin/echo "  Starting Optware..."
          /etc/init.d/Optware.sh start
          sleep 2
        elif [ -x /etc/init.d/opkg.sh ]; then #if opkg, start opkg  
          /bin/echo "  Starting Opkg..."    
          /etc/init.d/opkg.sh start
          sleep 2
        elif [ -x /etc/init.d/Entware-ng.sh ]; then #if Entware-ng, start Entware-ng  
          /bin/echo "  Starting Entware-ng..."    
          /etc/init.d/Entware-ng.sh start
          sleep 2
        else #catch all
          /bin/echo "  No Optware or Opkg or Entware-ng found, please install one of them"    
          /sbin/write_log "Failed to start $QPKG_NAME, no Optware or Opkg or Entware-ng found. Please re-install one of those packages" 1 
          exit 1
        fi
      else
        /bin/echo "  Found!"
      fi
      }
    
    pid_check() {
      # Check if process is already running
      PROCESS_PID=0
      for pid in $(/bin/pidof java); do
        # Try to find if the process is JDownloader
        /bin/grep -q "JDownloader" /proc/$pid/cmdline
        if [ $? -eq 0 ]; then
        # Process found, save PID and exit loop
        PROCESS_PID=$pid
        break
        fi
      done
      # Print result
      #/bin/echo "Pid of process = $PROCESS_PID"
      }
    
    Shutdown_jd2() { #kills a proces based on a PID in a given PID file
      pid_check
      /bin/echo -n "Checking if $QPKG_NAME is running... "
      if [[ $PROCESS_PID -eq 0 ]]; then
        /bin/echo "$QPKG_NAME is not running!"
      else
        /bin/echo "Shutting down $QPKG_NAME... "
        i=0
        /bin/kill $PROCESS_PID
        /bin/echo -n "Waiting for $QPKG_NAME to shut down: "
        while [ -d /proc/$PROCESS_PID ]; do
          /bin/sleep 1
          let i+=1
          /bin/echo -n "$i, "
          if [ $i = 45 ]; then
            /bin/echo "   Tired of waiting, killing $QPKG_NAME now"
            /bin/kill -9 $PROCESS_PID
            exit 1
          fi
        done
        /bin/echo "Done"
      fi
      }
    
    java_check() {
      /bin/echo -n "Checking for Java... "
      if [ -z "$JAVA_HOME_TEST" ]; then
        /bin/echo "Java PATH not found. Please install JRE QPKG from http://goo.gl/ayMIbE or via the Qnap App Center"
        /bin/echo "NOTE: If you have just installed Java, close and reopen your session to update (putty)."
        exit 1
      else
        /bin/echo "Found... exporting variables"
        export JAVA_HOME=$JAVA_HOME_TEST
      fi
    
      # Store JAVA binary path
      JAVA_BIN=${JAVA_HOME_TEST}/bin/java
      
      # Check if Java runs correctly
      /bin/echo -n "Checking for Java executable... "
      if ! $JAVA_BIN -version 2>&1 | /bin/grep -q "Java(TM)"; then
        /bin/echo "Java does not run correctly. Please test the Java environment and try again."
        exit 2
      fi
        /bin/echo "All OK!"
      }
    
    countdown() {
      local OLD_IFS="${IFS}"
      IFS=":"
      local ARR=( $1 ) ; shift
      IFS="${OLD_IFS}"
      local PREFIX="$*" ; [ -n "${PREFIX}" ] && PREFIX="${PREFIX} > "
      local SECONDS=$((  (ARR[0] * 60 * 60) + (ARR[1] * 60) + ARR[2]  ))
      local START=$(date +%s)
      local END=$((START + SECONDS))
      local CUR=$START
     
      while [[ $CUR -lt $END ]]
      do
              CUR=$(date +%s)
              LEFT=$((END-CUR))
    
              printf "\r${PREFIX}%02d:%02d:%02d" \
                      $((LEFT/3600)) $(( (LEFT/60)%60)) $((LEFT%60))
    
              /bin/sleep 1
      done
      printf "\nOk, now I resume the installation\n"
      }
    
    jar_download() {
      if [[ ! -d $JD2_DEST_DIR ]]; then
        /bin/mkdir -p $JD2_DEST_DIR
      fi
      /bin/echo -n "Info: Downloading $QPKG_NAME Jar file... "
      if /usr/bin/wget --no-check-certificate $JD2_JAR_FILE --directory-prefix=$JD2_DEST_DIR 1>/dev/null 2>&1 ; then
        /bin/echo "Done"
        /bin/sleep 2
      else
        /bin/echo "Error!"
        /bin/echo "Couldn't download $QPKG_NAME Jar file. Please check your internet connection and try again."
        exit 0
      fi
      }
    
    cleanup() {
    if [[ -f "$publicdir/$JD2_UPDATE_FILE" ]]; then
      rm -rf "$publicdir/$JD2_UPDATE_FILE"
    fi
    if [[ -f "$publicdir/$QPKG_FILE" ]]; then
      rm -rf "$publicdir/$QPKG_FILE"
    fi
      }
    
    set_variables() {
    QPKG_DIR=$(/sbin/getcfg $QPKG_NAME Install_Path -f $CONF)
    JD2_DEST_DIR="$QPKG_DIR/jd2"
      }
    
    qpkg_download_and_install() {
      echo -n "Info: Downloading update file ... "
      if /usr/bin/wget --no-check-certificate $JD2_UPDATE_LINK --directory-prefix=$publicdir 1>/dev/null 2>&1 ; then
        echo "Done."
      else
        echo "Failed."
        /bin/echo "Oops, couldn't download JDownloader2 update file. Please check your internet connection."
        exit 0
      fi
      
      export DLINK=`/sbin/getcfg JDownloader2 dl_link -f $publicdir/$JD2_UPDATE_FILE`
      QPKG_FILE=`echo $DLINK | cut -d'/' -f 6`
    
      echo "Info: Starting download QPKG ... "
      
      if [[ -f "$publicdir/$JD2_UPDATE_FILE" ]]; then
        rm -rf "$publicdir/$JD2_UPDATE_FILE"
      fi
    
      if /usr/bin/wget --no-check-certificate -O $publicdir/$QPKG_FILE $DLINK 1>/dev/null 2>&1 ; then
        echo "Info: Download completed succesfully"
      else
        echo "Failed."
        /bin/echo "Oops, couldn't download JDownloader2 QPKG file."
        exit 0
      fi
          echo "Info: Installing the QPKG ..."
          /bin/sh $publicdir/$QPKG_FILE
          if [ "$?" != "0" ]; then
            echo "Info: Installation succesfully completed."
            /sbin/write_log "JDownloader2 QPKG succesfully installed." 4
          else 
            echo "Error occured during JDownloader2 QPKG installation."
            /sbin/write_log "Error occured during JDownloader2 QPKG installation!" 1
            rm -rf "$publicdir/$QPKG_FILE"
            exit 0
          fi
        }
    
    umask 000
    CheckForOpt
    java_check
    qpkg_download_and_install
    set_variables
    jar_download
    cd $JD2_DEST_DIR && $JAVA_BIN -Djava.awt.headless=true -jar $JD2_DEST_DIR/$JAR_FILENAME
    countdown "00:00:10" "Please Wait ..."
    Shutdown_jd2
    cd $JD2_DEST_DIR && $JAVA_BIN -Djava.awt.headless=true -jar $JD2_DEST_DIR/$JAR_FILENAME
    Shutdown_jd2
    cleanup
    /bin/echo "=========================================================================================="
    /bin/echo "All done!!! Remember to log-in to https://my.jdownloader.org/login.html and configure JD2!"
    /bin/echo "=========================================================================================="
    /bin/echo ""
    read -s -n 1 -p "Ok, now press any key to continue, then you can terminate this ssh session. Have a Good Download!!!"
    /etc/init.d/JDownloader2.sh start &
    exit

    Während des Setups müssen Sie Ihr Konto registrieren

    Jetzt können Sie Ihren Download über das Webinterdace auf myjdownloader verwalten

  • E-Mail-Server-Check

    Folgen http://public.pyzor.org/whitelist/

    dies ist wirklich großen E-Mail-Server überprüfen

  • installieren Apache2 auf Rasperry PI

    APACHE Installation

    apt-get update
    apt-get install apache2 php5 mysql-server locales phpmyadmin php5-curl iftop iotop vim screen tightvncserver mysql-client
    apt-get upgrade
    apt-get dist-upgrade

    Update-RPI

    RPI-Aktualisierung

    Installieren Sie ownCloud

    cd /var/www
    wget https://download.owncloud.org/community/owncloud-8.0.3.zip
    unzip owncloud-8.0.3.zip
    rm owncloud-8.0.3.zip
    mv owncloud storage

    Anabele Apache MOD'S

    sudo a2enmod rewrite
    sudo a2enmod headers
    service apache2 restart
  • proxy multicast stream over apache proxy with authentication

    Proxy-Multicast-Stream über Apache-Proxy mit Authentifizierung

    Ich konfigurierte einen Proxy für Multicast zu http

    Dazu benötigen Sie beispielsweise für Proxying Verkehr Form Telekom Home Entertainment

    wget https://freefr.dl.sourceforge.net/project/udpxy/udpxy/Chipmunk-1.0/udpxy.1.0.23-0-prod.tar.gz
    tar -xzvf udpxy.1.0.23-0-prod.tar.gz
    machen
    make install

    in den crontab

    1 1 * * * root udpxy -p 4022

    Neuanlegen für die Authentifizierung

    htpasswd -c /etc/apache2/.htpasswd sammy

    fügen Sie ein addtional Benutzer

    htpasswd /etc/apache2/.htpasswd sammy2

    in den VHOST

            <Lage / udp>
                    http Proxypass://localhost:4022/udp
                    http Proxypassreverse://localhost:4022/udp
                    AuthType Basic
                    AuthName "Passwort erforderlich"
                    AuthUserFile /etc/apache2/.htpasswd
                    Require valid-user
                    bestellen Sie verweigern,ermöglichen
                    Lassen Sie von allen
            </Ort>

    ermöglichen auf Apache Mod falls noch nicht geschehen

    a2enmod Proxy proxy_http

    Ändern Sie die Kanalliste wie für telekom

    #EXTM3U
    #EXTINF:-1,(05) RTL
    https://Benutzer:password@server/udp/239.35.20.10:10000
    
    #EXTINF:-1,(06) RTL2
    https://Benutzer:password@server/udp/239.35.20.22:10000
    
    #EXTINF:-1,(07) RTLplus
    https://Benutzer:password@server/udp/239.35.20.57:10000
    
    #EXTINF:-1,(08) Pro7
    https://Benutzer:password@server/udp/239.35.20.21:10000
    
    #EXTINF:-1,(09) Kabel1
    https://Benutzer:password@server/udp/239.35.20.38:10000
    
    #EXTINF:-1,(10) Vox
    https://Benutzer:password@server/udp/239.35.20.11:10000
    
    #EXTINF:-1,(11) Super RTL
    https://Benutzer:password@server/udp/239.35.20.39:10000
    
    #EXTINF:-1,(12) ntv
    https://Benutzer:password@server/udp/239.35.20.47:10000
    
    #EXTINF:-1,(13) sixx
    https://Benutzer:password@server/udp/239.35.20.9:10000
    
    #EXTINF:-1,(14) Pro7maxx
    https://Benutzer:password@server/udp/239.35.20.33:10000
    
    #EXTINF:-1,(15) RTLNITRO
    https://Benutzer:password@server/udp/239.35.20.59:10000
    
    #EXTINF:-1,(16) Kunst
    https://Benutzer:password@server/udp/239.35.10.20:10000
    
    #EXTINF:-1,(17) Phönix
    https://Benutzer:password@server/udp/239.35.10.22:10000
    
    #EXTINF:-1,(18) 3sat
    https://Benutzer:password@server/udp/239.35.10.6:10000
    
    #EXTINF:-1,(19) Kikka
    https://Benutzer:password@server/udp/239.35.10.19:10000
    
    #EXTINF:-1,(20) tagesschau24
    https://Benutzer:password@server/udp/239.35.10.25:10000
    
    #EXTINF:-1,(21) Einsfestival
    https://Benutzer:password@server/udp/239.35.10.21:10000
    
    #EXTINF:-1,(22) EinsPlus
    https://Benutzer:password@server/udp/239.35.10.26:10000
    
    #EXTINF:-1,(23) ARD-alpha
    https://Benutzer:password@server/udp/239.35.10.24:10000
    
    #EXTINF:-1,(24) ZDF Kultur
    https://Benutzer:password@server/udp/239.35.10.23:10000
    
    #EXTINF:-1,(25) ZDF Infokanal
    https://Benutzer:password@server/udp/239.35.10.28:10000
    
    #EXTINF:-1,(26) ZDF neo
    https://Benutzer:password@server/udp/239.35.10.27:10000
    
    #EXTINF:-1,(27) Deutsche Welle
    https://Benutzer:password@server/udp/239.35.20.44:10000
    
    #EXTINF:-1,(28) BR Nord
    https://Benutzer:password@server/udp/239.35.10.13:10000
    
    #EXTINF:-1,(29) hr-Fernsehen
    https://Benutzer:password@server/udp/239.35.10.8:10000
    
    #EXTINF:-1,(30) MDR Sachsen
    https://Benutzer:password@server/udp/239.35.10.9:10000
    
    #EXTINF:-1,(31) NDR
    https://Benutzer:password@server/udp/239.35.10.10:10000
    
    #EXTINF:-1,(32) Radio Bremen TV
    https://Benutzer:password@server/udp/239.35.10.12:10000
    
    #EXTINF:-1,(33) rbb Berlin
    https://Benutzer:password@server/udp/239.35.10.14:10000
    
    #EXTINF:-1,(34) SR Fernsehen
    https://Benutzer:password@server/udp/239.35.10.15:10000
    
    #EXTINF:-1,(35) SWR Fernsehen BW
    https://Benutzer:password@server/udp/239.35.10.16:10000
    
    #EXTINF:-1,(36) WDR
    https://Benutzer:password@server/udp/239.35.10.18:10000
    
    #EXTINF:-1,(37) Das Erste HD
    https://Benutzer:password@server/udp/239.35.10.1:10000
    
    #EXTINF:-1,(38) ZDF HD
    https://Benutzer:password@server/udp/239.35.10.2:10000
    
    #EXTINF:-1,(39) ARTE HD
    https://Benutzer:password@server/udp/239.35.10.3:10000
    
    #EXTINF:-1,(40) Phoenix HD
    https://Benutzer:password@server/udp/239.35.10.48:10000
    
    #EXTINF:-1,(41) KiKA HD
    https://Benutzer:password@server/udp/239.35.10.11:10000
    
    #EXTINF:-1,(42) 3sat HD
    https://Benutzer:password@server/udp/239.35.10.47:10000
    
    #EXTINF:-1,(43) Tagesschau 24 HD
    https://Benutzer:password@server/udp/239.35.10.63:10000
    
    #EXTINF:-1,(44) Einsfestival HD
    https://Benutzer:password@server/udp/239.35.10.58:10000
    
    #EXTINF:-1,(45) EinsPlus HD
    https://Benutzer:password@server/udp/239.35.10.59:10000
    
    #EXTINF:-1,(46) ZDF Kultur HD
    https://Benutzer:password@server/udp/239.35.10.54:10000
    
    #EXTINF:-1,(47) ZDF neo HD
    https://Benutzer:password@server/udp/239.35.10.55:10000
    
    #EXTINF:-1,(48) ZDF Infokanal HD
    https://Benutzer:password@server/udp/239.35.10.56:10000
    
    #EXTINF:-1,(49) Bayern Süd HD
    https://Benutzer:password@server/udp/239.35.10.49:10000
    
    #EXTINF:-1,(50) HR HD
    https://Benutzer:password@server/udp/239.35.10.60:10000
    
    #EXTINF:-1,(51) MDR HD
    https://Benutzer:password@server/udp/239.35.10.61:10000
    
    #EXTINF:-1,(52) NDR HD
    https://Benutzer:password@server/udp/239.35.10.50:10000
    
    #EXTINF:-1,(53) RBB HD
    https://Benutzer:password@server/udp/239.35.10.62:10000
    
    #EXTINF:-1,(54) SWR BW HD
    https://Benutzer:password@server/udp/239.35.10.51:10000
    
    #EXTINF:-1,(55) WDR HD
    https://Benutzer:password@server/udp/239.35.10.53:10000
    
    #EXTINF:-1,(56) SR HD
    https://Benutzer:password@server/udp/239.35.10.64:10000
    
    #EXTINF:-1,(01) Das Erste
    https://Benutzer:password@server/udp/239.35.10.4:10000
    
    #EXTINF:-1,(02) ZDF
    https://Benutzer:password@server/udp/239.35.10.5:10000
    
    #EXTINF:-1,(03) Sa 1
    https://Benutzer:password@server/udp/239.35.20.20:10000
    
    #EXTINF:-1,(04) SAT1 Gold-
    https://Benutzer:password@server/udp/239.35.20.24:10000

     

  • WordPress autoupdater

    Wordpress autoupdater

    wp-cli installieren -> http://wp-cli.org/

    Verwenden Sie dieses Skript

    #!/bin / bash
    
    Updater(){
            wp Core Update --allow-root
            wp Core-Update-db --allow-root
            wp-Plugin Update --all --allow-root
            wp Thema Update --all --allow-root
            wp Kernsprache Update --allow-root
            CGroup = $(stat -c '% G' wp-cron.php)
            CUser = $(stat -c '% U' wp-cron.php)
            chown $ cUser:$cGroup ./* -rf
    }
    
    für i in $(find / var / www / vhosts -name wp-cron.php); machen
            wpdir = $(i echo $ | sed -r 's / wp-cron.php // g')
            echo $ wpdir
            cd $ wpdir
            Updater
    erledigt
  • Funksteckdosen via Raspberry Pi über das Terminal, Webinterface oder Siri steuern – 433 mHz

    Belegung

    rpi2-pins

    RaspberryPi Transmitter Receiver
    Pin 2 / 4 (5V) VCC VCC
    Pin 6 / 9 (GND) GND GND
    Pin 11 (GPIO17) – RPi Nr.1 ATAD
    Pin 13 (GPIO27) – RPi Nr.2 DATA (to the left of GND)

    Software

    Kommen wir nun zur Software. Hierzu müsst ihr erstmal euren Raspberry Pi starten, an dem alles wie oben beschrieben montiert wurde. Anschließen solltet ihr erst mal

    sudo apt-get update

    ausführen. Dadurch werden eure Paketquellen aktualisiert. Dann muss git-core installiert werden (falls nicht sowieso schon geschehen):

    sudo apt-get install git-core

    Um die Ansteuerung des Transmitters zu realisieren gibt es ein Projekt namensWiringPi. Dieses installiert ihr euch auf eurem Raspberry Pi wie folgt:

    cd
    git clone git://git.drogon.net/wiringPi
    cd wiringPi
    ./build

    Auch für unseren Zweck, die Steckdosen zu steuern gibt es bereits ein Projekt. Dieses stammt von xkonni und nennt sich Raspberry-Remote. Ihr installiert es euch so:

    cd
    git clone git://github.com/xkonni/raspberry-remote.git
    cd raspberry-remote

    Damit es läuft, müsst ihr euch noch die send.cpp kompilieren, also folgendes eintippen:

    make send
    make demon

    installieren eines sniffers

    cd
    git clone https://github.com/ninjablocks/433Utils.git
    cd 433Utils/RPi_utils
    make all
    

    Für die Pin Belegung

    gpio readall

    test des sniffers

    ./RFSniffer
    ./codesend 1234

    Webinterface

    Natürlich ist es etwas umständlich und unkomfortabel, das Ganze immer über das Terminal/eine SSH-Verbindung machen zu müssen. Aber kein Problem! Raspberry-Remote liefert auch gleich ein passendes Webinterface mit. Damit ihr das nutzen könnt, solltet ihr erst mal Apache und PHP installieren auf eurem Raspberry:

    sudo apt-get install apache2 php5
    

    Jetzt gehts zum Webinterface, was xkonni direkt mitliefert. Dazu habe ich im Ordner

    mkdir /var/www/html/remote

    einen Unterordner remote erstellt. Anschließend den Inhalt von ~/raspberry-remote/webinterface dorthin verschoben:

    cp -Rf ~/raspberry-remote/webinterface/* /var/www/html/remote

    Jetzt muss noch in der

    vi /var/www/html/remote/config.php

    Datei die IP Adresse des Raspberry Pis angepasst werden: dazu einfach nano verwenden.

    Deamon

    Nun fehlt noch der Daemon, auf den das PHP-Script des Webinterfaces zugreift. Dazu gehen wir in das Raspberry-Remote Verzeichnis zurück: cd ~/raspberryremote und kompilieren den daemon: make daemon
    Nun können wir diesen Starten:

    sudo ./daemon &

    Das & bewirkt, dass der Prozess im Hintergrund läuft.

    Jetzt können wir unser Glück mit dem Webinterface probieren: Dazu rufen wir von einem anderen Rechner/Handy das Webinterface per http://192.168.11.44/remote/ (Eure IP einsetzen) auf. Wenn das geht und dort die verschiedenen Steckdosen sichtbar sind, dann muss man jetzt nur noch in der config.php die Steckdosen mit Namen versehen und evtl. die Codes, etc. anpassen. Die Konfiguration sollte selbsterklärend sein.screenshot_webinterface

    Falls ihr eine Fehlermeldung wie „Switch out of range: GET /:XY“ bekommt, keine Sorge! In der daemon.cpp sind standardmäßig nur die Hauscodes 00000 & 00001 & 00010 abgedeckt. Das lässt sich aber einfach ändern. Geht dazu wieder ins Verzeichnis von Raspberry Remote (bei mir /home/pi/raspberry-remote/, also via

    cd /home/pi/raspberry-remote/

    und öffnet die daemon.cpp mit nano. Darin befindet sich der Eintrag „nPlugs=10;“, welche ihr einfach durch „nPlugs= 1110;“. Anschließend übersudo make daemon neu kompilieren und über sudo ./daemon & wieder starten. Jetzt sollte auch bei euch das Webinterface funktionieren.

     

    Quellen:

    Let Raspberry Pi’s communicate with each other per 433MHz wireless signals

    https://alexbloggt.com/funksteckdosen-raspberry-pi-teil1/

    https://alexbloggt.com/funksteckdosen-raspberry-pi-teil2/

     

    Des weiteren habe noch einige anderen tolle Projekte gefunden

    OK Google, Schalte Liste an -> https://blog.medienman.de/blog/2017/08/20/google-home-steuert-433-mhz-funksteckdosen/

  • letsencrypt on apache and linux

    letsencrypt auf Apache und Linux

    dies ist ein kleiner Leitfaden, wie man Setup letsencrypt auf Apache und auf Linux

    Zuerst müssen wir ein letsencrypt Tool zum Download und die Beispielconfig in die richtige Position bewegen

    cd /opt
    git clone https://github.com/lukas2511/letsencrypt.sh
    mkdir -p /etc/letsencrypt.sh
    mkdir -p /var/www/letsencrypt.sh/
    chown www-data:www-data /var/www/letsencrypt.sh
    cp /opt/letsencrypt.sh/docs/examples/config /opt/letsencrypt.sh/config
    cp /opt/letsencrypt.sh/docs/examples/domains.txt /opt/letsencrypt.sh/domains.txt

    Konfigurieren Sie die letsencrypt Konfigurationsdatei

    /opt / letsencrypt.sh / config.sh

    BASEDIR ="/etc / letsencrypt.sh /"
    bekannte ="/var / www / letsencrypt.sh /"
    private_key ="${BASEDIR}/private_key.pem"
    HOOK ="${BASEDIR}/hook.sh"
    CONTACT_EMAIL ="[email protected]"

     

    theletsencrypt alias für Apache konfigurieren

    /etc / apache2 / conf.d / letsencrypt

    Alias /.well-known/acme-challenge /var/www/letsencrypt.sh/
    Options None
    AllowOverride None
    Order allow,deny
    Allow from all

    die hook.sh Datei konfigurieren zum Nachladen des Apache

    /etc / letsencrypt.sh / hook.sh

    #!/bin/bash
    
    if [ ${1} == "deploy_cert" ]; then
    echo " + Haken: Ein Neustart Apache ..."
    /etc/init.d/apache2 reload
    else
    echo " + Haken: Nichts zu tun..."
    fi

    Ändern Sie den mod dieser Datei

    chmod + x /opt/letsencrypt.sh/hook.sh

    Konfigurieren Sie die Domain-Datei

    /opt / letsencrypt.sh / domains

    www.mosandl.eu
    storage.mosandl.eu
    

    laufen letsencrypt

    /opt / letsencrypt.sh / dehydriert -c

    erstellen crontjob, dass die certs jede Woche erzeugt werden

    1  1	* * *	root /opt/letsencrypt.sh/dehydrated -c

    vHost

    SSLEngine On
    SSLCertificateFile      /etc/letsencrypt.sh/certs/storage.mosandl.eu/cert.pem
    SSLCertificateKeyFile   /etc/letsencrypt.sh/certs/storage.mosandl.eu/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt.sh/certs/storage.mosandl.eu/chain.pem
    SSLCACertificateFile    /etc/letsencrypt.sh/certs/storage.mosandl.eu/fullchain.pem
    SSLHonorCipherOrder On
    SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384

    Neufassungen

    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/.well-known
    Alias /.well-known/acme-challenge /var/www/letsencrypt.sh/
    RewriteCond %{HTTPS} !=on
    RewriteRule ^/?(.*) https://%{SERVERNAME}/$1 [R,L]

    Proxy-Pass

    Proxypass /.well-known !
    Alias ​​/.well-known/acme-challenge /var/www/letsencrypt.sh/

    Fehler

  • Kostenloses Monitoring einrichten

    Kostenloses Monitoring einrichten

    1. Kostenloses Monitorring Tool

    https://uptimerobot.com/

    2. danach einfach bei zapier anmelden und das richtige modul auswählen

    RSS zu SMS

    https://zapier.com / http://beepsend.com

     

  • Erstellen Sie eine Public-Key-Infrastruktur mit Hilfe der easy-rsa Scripts

    Der erste Schritt bei der Einrichtung OpenVPN ist eine zu erstellen Public Key Infrastructure (PKI). Die PKI besteht aus:

    • Ein öffentlicher Master Zertifizierungsstelle (CA) Zertifikat und einen privaten Schlüssel.
    • Eine separate öffentliche Zertifikat und einen privaten Schlüssel (im Folgenden als Zertifikat bezeichnet) für jeden Server und jeder Client.

    Um das Zertifikat Erstellungsprozess erleichtern, OpenVPN kommt mit einer Sammlung von RSA Schlüssel manangement Skripte (basierend auf der OpenSSL-Kommandozeilen-Tool) bekannt als easy-rsa.

    Hinweis: Nur .key-Dateien müssen geheim gehalten werden, .CRT- und .csr-Dateien können über unsichere Kanäle wie Text-E-Mail gesendet werden.

    In diesem Artikel werden die benötigten Zertifikate werden von Wurzel im Stammverzeichnis des erstellt. Dadurch wird sichergestellt, dass die erzeugten Dateien den richtigen Eigentümer und Berechtigungen haben, und sind sicher von anderen Benutzern.

    Hinweis: Die Zertifikate können auf jeder Maschine erstellt werden. Für die höchste Sicherheit, die Zertifikate auf einem physisch sicheren Maschine erzeugen aus jedem Netz getrennt, und stellen Sie sicher, dass die erzeugte ca.key privaten Schlüssel gesichert und nie für jedermann zugänglich.
    Warnung: Stellen Sie sicher, dass die erzeugten Dateien gesichert werden, vor allem die ca.key und ca.crt Dateien, wenn sie verloren gehen, da werden Sie nicht in der Lage, jede neue zu schaffen, noch widerrufen alle kompromittiert Zertifikate, so erfordert die Erzeugung eines neuen Zertifizierungsstelle (CA) Zertifikat, entkräften die gesamte PKI-Infrastruktur.

    Installieren der easy-rsa-Skripten

    Installieren Sie die Skripte durch folgende Maßnahmen:

    # pacman -S easy-rsa
    # cp -r / usr / share / easy-rsa / root

    Zertifikate erstellen

    Wechseln Sie in das Verzeichnis, in dem Sie die Skripte installiert.

    # cd / root / easy-rsa

    Um die konsequente Nutzung der Werte zu gewährleisten, wenn die PKI-Generierung, Satz Standardwerte durch die PKI-Erzeugungs Skripte verwendet werden. Bearbeiten / root / easy-rsa / VARs und auf ein Minimum KEY_COUNTRY gesetzt, KEY_PROVINCE, KEY_CITY, KEY_ORG, und KEY_EMAIL Parameter (nicht jeder dieser Parameter leer lassen). Ändern Sie den KEY_SIZE Parameter 2048 für die SSL / TLS 2048bit RSA-Schlüssel für die Authentifizierung verwenden.

    /root / easy-RSA / Vars
    # easy-rsa Parametereinstellungen
    
    # HINWEIS: Wenn Sie von einer RPM installiert,
    # diese Datei nicht an Ort und Stelle bearbeitet in
    # /usr / share / openvpn / easy-rsa --
    # stattdessen, Sie sollten die ganze kopieren
    # easy-rsa Verzeichnis an einem anderen Ort
    # (wie / etc / OpenVPN-) so dass Ihre
    # Änderungen werden nicht von einer Zukunft ausgelöscht
    # OpenVPN-Paket Upgrade.
    
    # Diese Variable sollte zeigen auf
    # die oberste Ebene des easy-rsa
    # Baum.
    Export EASY_RSA ="`pwd`"
    
    #
    # Diese Variable sollte zeigen auf
    # die angeforderten ausführbaren Dateien
    #
    Export OPENSSL ="openssl"
    Export PKCS11TOOL ="pkcs11 Werkzeug"
    Export GREP ="grep"
    
    # Diese Variable sollte zeigen auf
    # die openssl.cnf-Datei enthalten
    # mit easy-rsa.
    Export KEY_CONFIG = `$ EASY_RSA / whichopensslcnf $ EASY_RSA`
    
    # Bearbeiten Sie diese Variable verweisen auf
    # Ihr soon-to-be-Schlüssel erstellt
    # Verzeichnis.
    #
    # WARNUNG: Rein alles tun
    # a rm -rf in diesem Verzeichnis
    # so stellen Sie sicher, dass Sie definieren
    # es richtig!
    Export KEY_DIR ="$EASY_RSA / Tasten"
    
    # Geben Sie rm -rf Warn
    Echo HINWEIS: Wenn Sie laufen ./clean-all, Ich werde einen rm -rf auf $ KEY_DIR tun
    
    # PKCS11-Fixes
    Export PKCS11_MODULE_PATH ="Attrappe"
    Export PKCS11_PIN ="Attrappe"
    
    # Erhöhen Sie dies 2048 wenn du
    # sind paranoid.  Dies verlangsamt
    # nach unten TLS-Verhandlungen Leistung
    # sowie die einmalige DH parms
    # Erzeugungsprozess.
    Export key_size = 2048
    
    # In wie vielen Tagen sollte der Root-CA-Schlüssel verfallen?
    Export CA_EXPIRE = 3650
    
    # In wie viele Tage sollten Zertifikate ablaufen?
    Export KEY_EXPIRE = 3650
    
    # Dies sind die Standardwerte für die Felder
    # die in dem Zertifikat platziert wird.
    # Nicht leer eines dieser Felder verlassen.
    
    
    Export KEY_COUNTRY ="UNS"
    Export KEY_PROVINCE ="CA"
    Export KEY_CITY ="Acme Acres"
    Export KEY_ORG ="Gipfel"
    Export KEY_EMAIL ="[email protected]"
    #Export [email protected]
    Export KEY_CN = Acme-CA
    Export KEY_NAME = Acme-CA
    = Export KEY_OU""
    Export PKCS11_MODULE_PATH = changeme
    Export PKCS11_PIN = 1234
    

    Exportieren Sie die Umgebungsvariablen.

    # Quelle ./vars

    Löschen Sie alle zuvor erstellten Zertifikate.

    # ./alles putzen
    Hinweis: Die Eingabe eines . (Punkt) wenn für einen Wert aufgefordert, ausblendet den Parameter.

    Der Build-Skript CA erzeugt das Zertifizierungsstelle (CA) Zertifikat.

    # ./Errichten-wie
    Erzeugen eines 2048 Bit RSA Private Key
    ..............++++++
    ...++++++
    Schreiben neue private Schlüssel zu ‚ca.key‘
    -----
    Sie sind dabei aufgefordert werden, Informationen einzugeben, die eingearbeitet werden
    in der Zertifikatsanforderung.
    Was Sie sind im Begriff ist, zu geben, was ein Distinguished Name oder ein DN genannt wird.
    Es gibt durchaus ein paar Felder, aber Sie können etwas leer lassen
    Für einige Felder wird es ein Standardwert sein,
    Bei Eingabe von ‚‘, wird das Feld leer gelassen werden.
    -----
    Ländername (2 Buchstaben-Code) [UNS]:
    Staat oder Provinz-Name (vollständiger Name) [CA]:
    Ortsname (z.B, Stadt) [Acme Acres]:
    Name der Organisation (z.B, Unternehmen) [Gipfel]:
    Name der Organisationseinheit (z.B, Abschnitt) []:
    Gemeinsamen Namen (z.B, Ihren Namen oder Ihre Server-Hostnamen) [Acme-CA]:
    Name [Acme-CA]:
    E-Mail-Addresse [[email protected]]:
    

    Der Build-Schlüssel-Server-Skript # ./build-key-server <server name> erzeugt ein Serverzertifikat. Stellen Sie sicher, dass Sie den Servernamen (Common Name beim Ausführen des Skripts) ist einzigartig.

    Hinweis: Verwenden Sie keine Herausforderung Passwort oder Firmennamen eingeben, wenn das Skript Sie eine Eingabeaufforderungen.
    # ./build-key-Server elmer
    Erzeugen eines 2048 Bit RSA Private Key
    .....................++++++
    .......................................................++++++
    Schreiben neue private Schlüssel zu ‚elmer.key‘
    -----
    Sie sind dabei aufgefordert werden, Informationen einzugeben, die eingearbeitet werden
    in der Zertifikatsanforderung.
    Was Sie sind im Begriff ist, zu geben, was ein Distinguished Name oder ein DN genannt wird.
    Es gibt durchaus ein paar Felder, aber Sie können etwas leer lassen
    Für einige Felder wird es ein Standardwert sein,
    Bei Eingabe von ‚‘, wird das Feld leer gelassen werden.
    -----
    Ländername (2 Buchstaben-Code) [UNS]:
    Staat oder Provinz-Name (vollständiger Name) [CA]:
    Ortsname (z.B, Stadt) [Acme Acres]:
    Name der Organisation (z.B, Unternehmen) [Gipfel]:
    Name der Organisationseinheit (z.B, Abschnitt) []:
    Gemeinsamen Namen (z.B, Ihren Namen oder Ihre Server-Hostnamen) [elmer]:
    Name [Acme-CA]:
    E-Mail-Addresse [[email protected]]:
    
    Bitte geben Sie die folgenden ‚Extra‘ Attribute
    geschickt mit Zertifikatsanforderung werden
    Eine Herausforderung Passwort []:
    Ein optionaler Firmennamen []:
    Mit Konfiguration von /root/easy-rsa/openssl-1.0.0.cnf
    Überprüfen Sie, ob die Anforderung die Signatur übereinstimmt
    Unterschrift ok
    Das Thema Distinguished Name ist wie folgt
    Ländername           :BEDRUCKBARE:'UNS'
    stateOrProvinceName   :BEDRUCKBARE:'CA'
    localityName          :BEDRUCKBARE:'Acme Acres'
    organization      :BEDRUCKBARE:'Gipfel'
    gemeinsamen Namen            :BEDRUCKBARE:'Elmer'
    Name                  :BEDRUCKBARE:'Acme-CA'
    E-Mail-Addresse          :IA5String:'[email protected]'
    Das Zertifikat ist bis Dezember zu zertifizierenden 27 19:11:59 2021 mittlere Greenwich-Zeit (3650 Tage)
    Melden Sie das Zertifikat? [y / n]:und
    
    1 aus 1 Zertifikatsanforderungen zertifiziert, verpflichten? [y / n]y
    Ausschreiben Datenbank mit 1 neue Einträge
    Data Base Aktualisiert
    

    Der Build-Skript erzeugt die AVW Diffie-Hellman-Parameter .pem-Datei vom Server benötigt.

    Hinweis: Es wäre besser, ein neues für jeden Server zu erzeugen, Sie können jedoch die gleiche, wenn Sie möchten,.
    # ./build-AVW
    Erzeugen DH Parameter, 2048 Bit lange sicher prime, Generator 2
    Das wird eine lange Zeit in Anspruch nehmen
    ..+.............................................................................
    .
    .
    .
    ............+...............+...................................................
    ..................................................................++*++*

    Der Build-key-Skript # ./build-key <client name> erzeugt ein Client-Zertifikat. Stellen Sie sicher, dass die Client-Namen (Common Name beim Ausführen des Skripts) ist einzigartig.

    Hinweis: Verwenden Sie keine Herausforderung Passwort oder Firmennamen eingeben, wenn das Skript Sie eine Eingabeaufforderungen.
    # ./build-Schlüssel Bugs
    Erzeugen eines 2048 Bit RSA Private Key
    ....++++++
    .............................................................++++++
    Schreiben neue private Schlüssel zu ‚bugs.key‘
    -----
    Sie sind dabei aufgefordert werden, Informationen einzugeben, die eingearbeitet werden
    in der Zertifikatsanforderung.
    Was Sie sind im Begriff ist, zu geben, was ein Distinguished Name oder ein DN genannt wird.
    Es gibt durchaus ein paar Felder, aber Sie können etwas leer lassen
    Für einige Felder wird es ein Standardwert sein,
    Bei Eingabe von ‚‘, wird das Feld leer gelassen werden.
    -----
    Ländername (2 Buchstaben-Code) [UNS]:
    Staat oder Provinz-Name (vollständiger Name) [CA]:
    Ortsname (z.B, Stadt) [Acme Acres]:
    Name der Organisation (z.B, Unternehmen) [Gipfel]:
    Name der Organisationseinheit (z.B, Abschnitt) []:
    Gemeinsamen Namen (z.B, Ihren Namen oder Ihre Server-Hostnamen) [Bugs]:
    Name [Acme-CA]:
    E-Mail-Addresse [[email protected]]:
    
    Bitte geben Sie die folgenden ‚Extra‘ Attribute
    geschickt mit Zertifikatsanforderung werden
    Eine Herausforderung Passwort []:
    Ein optionaler Firmennamen []:
    Mit Konfiguration von /root/easy-rsa/openssl-1.0.0.cnf
    Überprüfen Sie, ob die Anforderung die Signatur übereinstimmt
    Unterschrift ok
    Das Thema Distinguished Name ist wie folgt
    Ländername           :BEDRUCKBARE:'UNS'
    stateOrProvinceName   :BEDRUCKBARE:'CA'
    localityName          :BEDRUCKBARE:'Acme Acres'
    organization      :BEDRUCKBARE:'Gipfel'
    gemeinsamen Namen            :BEDRUCKBARE:'Bugs'
    Name                  :BEDRUCKBARE:'Acme-CA'
    E-Mail-Addresse          :IA5String:'[email protected]'
    Das Zertifikat ist bis Dezember zu zertifizierenden 27 19:18:27 2021 mittlere Greenwich-Zeit (3650 Tage)
    Melden Sie das Zertifikat? [y / n]:und
    
    1 aus 1 Zertifikatsanforderungen zertifiziert, verpflichten? [y / n]y
    Ausschreiben Datenbank mit 1 neue Einträge
    Data Base Aktualisiert
    

    Generieren Sie ein Geheimnis Hash-basierte Message Authentication Code (HMAC) durch laufen: # openvpn --genkey --secret /root/easy-rsa/keys/ta.key

    Dies wird verwendet, um eine zusätzliche HMAC-Signatur für alle SSL / TLS Handshake-Pakete hinzufügen. Darüber hinaus wird sofort gelöscht werden, jede UDP-Paket nicht die richtige HMAC-Signatur mit, Schutz vor:

    • Portscanning.
    • DoS-Angriffe auf dem OpenVPN UDP-Port.
    • SSL / TLS-Handshake Einweihungen von nicht autorisierten Maschinen.
    • Eventuelle Pufferüberlauf-Schwachstellen in der SSL / TLS-Implementierung.

    Alle erstellten Schlüssel und Zertifikate in / root / easy-rsa / Schlüssel gespeichert. Wenn Sie einen Fehler machen,, Sie können wieder durch Ausführen des Rein alle Skript neu anfangen.

    Warnung: Dadurch werden alle zuvor generierten Zertifikate in / root / easy-rsa / Schlüssel gespeichert löschen, einschließlich der Zertifizierungsstelle (CA) Zertifikat.

    Konvertieren von Zertifikaten verschlüsselt P12-Format

    Einige Software (wie Android) nur VPN-Zertifikate zu lesen, die in einem Passwort-verschlüsselten P12-Datei gespeichert werden. Diese können mit dem folgenden Befehl generiert werden:

    # openssl pkcs12 -export -inkey Tasten / bugs.key -in Tasten / bugs.crt -certfile Tasten / ca.crt -out Tasten / bugs.p12
    

    Überprüfen OpenSSL

    Wenn Sie benötigen die Informationen innerhalb eines Zertifikats zu überprüfen, CSR oder Private Key, Verwenden Sie diese Befehle. Du kannst auch überprüfen CSRs und prüfen Sie die Zertifikate mit unserem Online-Tools.

    • Prüfen Sie den Certificate Signing Request (CSR)
      openssl req -Text -noout -verify -in CSR.csr
    • Überprüfen Sie einen privaten Schlüssel
      openssl rsa -in privateKey.key -prüfen
    • Prüfen Sie ein Zertifikat
      openssl x509 -in certificate.crt -Text -noout
    • Überprüfen Sie eine PKCS # 12-Datei (.pfx oder P12)
      openssl pkcs12 -info -in keystore.p12