Ubuntu 16.04 einrichten von SSL / HTTPS unter NGINX

Einleitung

Im Jahre 2017 sollte SSL Standard für jede Webseite sein. Warum das leider immer noch nicht so ist liegt vielleicht daran, dass viele Leute abgeschreckt sind von der Einrichtung oder nicht wissen wie es umgesetzt wird. In diesem kleinen Tutorial, möchte ich euch Heute zeigen, wie einfach es doch ist SSL unter Ubuntu mit einem NGINX Webserver einzurichten.

Voraussetzungen

Eine kleine Liste mit Dingen die ich für dieses Tutorial voraussetze.
  • Ubuntu Server
  • NGINX Server installiert
  • OpenSSL installiert
Außerdem solltet Ihr auf eurem Server die entsprechenden "root" oder "sudo" Rechte haben. Wenn ihr das alles habt können wir auch schon beginnen.

Schritt 1 - Zertifikat erzeugen

Als erstes brauchen wir einen Ort wo wir das Zertifikat ablegen und speichern wollen. Da es sich hier um ein Zertifikat für den NGINX handelt erzeugen wir einfach im NGINX Ordner einen weiteren Ordner "ssl".

  sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt

Kurze Erklärung zu dem Befehl:
  • openssl: Standard Konsolen Programm um Zertifikate zu erstellen
  • req: sagt aus das wir eine X.509 Signierungsanfrage erstellen wollen. X.509 ist ein Standard für SSL und TSL
  • -x509: Die Option sagt aus das wir ein selbst signiertes Zertifikat erstellen wollen
  • -nodes: Teilt OpenSSL mit das wir keine Passwortabfrage bei dem Zertifikat benötigen. Wäre auch schlecht da NGINX dann bei Neustarts immer danach fragen würde
  • -days 365: Anzahl der Tage wie lange das Zert. gültig ist
  • -newkey rsa:2048: Sagt das wir einen neuen Schlüssel und Zertifikat mit einem 2048 Bit Schlüssel möchten
  • -keyout: Gibt OpenSSL einen Ort an wo der Schlüssel gespeichert werden soll
  • -out: Gibt OpenSSL einen Ort an wo das Zertifikat gespeichert werden soll
Anschließend wirst du nach einigen Angaben gefragt. Diese kannst du leer lassen oder ausfüllen.
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:
 
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Die von dir erstelleten Dateien werden in dem angegebenen Ordner abgespeichert.

Schritt 2 - NGINX Konfigurieren

Ein Vorteil von NGINX gegenüber dem Apache ist das man HTTPS/SSL in der selben Vhost Config aktivieren kann wo auch HTTP konfiguriert ist. Wir bearbeiten dazu unsere Standard Konfiguration unter.

nano /etc/nginx/sites-available/default

Wir fügen 4 Zeilen hinzu.

server {
        # ipv4 http
        listen 80 default_server;
        # ipv6 http
        listen [::]:80 default_server;
        # ADDED ipv4 https
        listen 443 ssl default_server;
        # ADDED ipv6 https
        listen [::]:443 ssl default_server;

        server_name default;

        root   /var/www/application/public;

        index index.html index.htm index.php index.cgi index.pl index.xhtml;

        # ADDED ssl settings
        ssl_certificate         /etc/nginx/ssl/nginx.crt;
        ssl_certificate_key     /etc/nginx/ssl/nginx.key;

        # log
        error_log /var/www/application/log/error.log;
        access_log /var/www/application/log/access.log combined;

        # rewrite
        location / {
            try_files $uri $uri/ /index.php;
        }

        # php socket
        location ~ \.php$ {
            try_files $uri =404;
            include /etc/nginx/fastcgi_params;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/run/php/php7.1-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_intercept_errors on;
        }

}

Die ersten beiden hinzugefügten Zeilen kümmern sich darum das der NGINX auf den richtigen Port lauscht und IPv4 und IPv6 anfragen annimmt.

Die anderen 2 kümmern sich darum das der NGINX den Schlüssel und das Zertifikat läd.

Danach starten wir neu uns schauen ob alles klappt.

sudo service nginx restart
ODER
sudo /etc/init.d/nginx restart

Nach erfolgreichem Neustart sollte unsere Seite unter http und https erreichbar sein.

HTTPS testen

Um unsere Konfiguration zu testen erstellen wir in unsrem Verzeichnis (/var/www/application/public) eine index.html zum testen. Unsere Seite dann unter beiden Adressen erreichbar sein

http://server_domain_or_IP
UND
https://server_domain_or_IP:443

Hinweiß: In den meisten Browsern muss man noch das Zertifikat akzeptieren damit die Seite dargestellt wird. Denn euer Lokales Zertifikat gilt in den Browsern als nicht sicher.

Abschluss

Abschließend ist zu sagen, dass der Aufwand SSL einzurichten doch relativ gering ist und für lokale Tests sehr zu empfehlen ist. Wenn eure Applikation lokal zu 100% läuft, solltet Ihr den Schritt nicht scheuen auch Live SSL mit einem richtigen Zertifikat zu verwenden. Richtige Zertifikate bekommt Ihr dank "Lets Encrypt" quasi für 0€.

Viel Spass beim testen. Bei Fragen benutzt bitte die Kommentare.

Amazon Echo Dot - TV, DVD Player, Funksteckdosen per Sprache steuern

Hi,
heute geht es um Amazons Echo Dot und wie man mit Hilfe von Alexa alle seine Funk und IR (Infrarot) Geräte per Sprache steuern kann. Darunter fallen meistens Fernseher, DVD/ BluRay Player, LED Bänder, Funksteckdosen und vieles mehr.

Hier eine kleine Checkliste mit Dingen die Ihr dafür benötigt:
Wenn Ihr alles habt könnt Ihr auch gleich mit der Einrichtung loslegen. Die Voraussichtlichen Kosten belaufen sich dabei um die ~ 105€ für alle benötigten Geräte und Apps.

Broadlink RM Pro einrichten

Sobald Ihr euren Broadlink RM Pro aufgebaut und angeschlossen habt könnt Ihr euch die "e-Control" App (Playstore Link) auf euer Smartphone installieren bzw öffnen falls diese schon installiert ist.

In der App könnt Ihr dann oben Rechts auf den Menüpunkt "Add Device" gehen um dort euren RM Pro hinzuzufügen. Im Folgenden Setup werdet Ihr gebeten eure WLan Daten anzugeben damit der RM sich in eurem Netzwerk anmelden kann. Dies müsst Ihr durchführen. Ob Ihr euch einen Account bei Broadlink anlegt ist euch überlassen, dieser ist nicht zwingend erforderlich.


Anschließend könnt Ihr euch eine virtuelle Fernbedienung erstellen. Dazu müsst Ihr in der App auf "Add Remote" gehen.



Hier hat man die Wahl ein fertiges Layout zu nehmen oder eins selbst Zusammenzustellen. Wir bauen es selbst und nehmen "User Defined". Jetzt kann man noch aussuchen wie die Tasten sortiert werden sollen. Hier nehmen wir "sort random", denn damit sortieren wir unsere Buttons selbst.



Im Folgendem Screen klicken wir oben Rechts auf das Zahnrad Icon und wählen "Sort add".



Anschließend gehen wir oben Links auf das + Symbol. Dort können wir nun dem Schalter einen Namen geben und ein Icon/ Bild auswählen.



Diesen Vorgang wiederholen wir, damit wir nun zwei Buttons angezeigt bekommen. Einen für das An und Ausschalten des Gerätes. Die Buttons können wir frei Verschieben an die Position die wir gerne hätten. Am Ende bestätigen wir alles mit dem "Save" Button oben Rechts.

Jetzt können wir unseren aktuell noch "dummen" Buttons eine Funktion zu weisen. Dafür drücken wir auf einen Button und dann auf "Learn Single" und in der Abfrage danach auf "Learn". In dem darauf folgendem Abschnitt müsst Ihr die Taste eurer Fernbedienung drücken die Ihr dem aktuell ausgewähltem Button beibringen wollt z.B. der Power Knopf. (Solange drücken bis die Taste gelernt wurde). Vorgang für anderen Button wiederholen.

Die Einrichtung des Broadlinks und der e-Control App ist damit erst einmal abgeschlossen. Du kannst jetzt z.B. mit der App dein Gerät steuern. Aber wir möchten das Ganze ja mit Alexa steuern deswegen müssen wir noch ein paar Schritte mehr in Angriff nehmen.

RM Plugin einrichten und benutzen

Weiter geht es mit der oben verlinkten Android App "RM Plugin". Eigentlich ein Tasker Plugin ist diese App aber auch ohne Tasker lauffähig.

Zunächst starten wir die App RM Plugin.


Wir scrollen runter zu den "Settings" und drücken auf "Alexa Bridge". Hier aktivieren wir die Optionen "Enable Alexa Bridge" und "Autostart on Boot".

Daten importieren von der eControl App

Wir gehen auf den Menüpunkt "Share Data". Wir beenden die App nicht und öffnen parallel dazu die eControl App von Boardlink. In dieser öffnen wir das Menü -> "Share" -> "Share to other phones in Wlan" und lassen dies offen. Wir wechseln nun wieder zurück zur RM App und warten kurz. Die Daten sollten jetzt importiert wurden sein.

Alexa Gerät in der RM Plugin App hinzufügen

Wir gehen auf "Alexa Bridge" -> "Alexa Device List" -> "Add Alexa Device".

Unter "Device Name" können wir dem Gerät einen Namen geben der in Alexa zum Aufruf benutzt werden soll. (z.B. TV).

Bei "On Command" können wir unseren importierten Befehl zum anschalten des Gerätes auswählen ("Select Code").


Anschließend ist das Gerät fertig konfiguriert in der App. Jetzt muss man Alexa nur noch mitteilen das man ein neues Gerät hat.

Alexa neue Geräte hinzufügen

Um Alexa mitzuteilen das man neue Geräte hat kann man den Sprachbefehl "Alexa, suche nach Geräten" verwenden oder in der Alexa App die Suche starten. Alexa teilt dir dann mit ob Sie neue Geräte gefunden hat.

Abschluss

Und das war es auch schon. Ihr könnt euer hinzugefügtes Gerät nun mit Alexa steuern.

z.B. "Alexa, schalte den TV ein" oder "Alexa, schalte den TV aus".

Mein Fazit, mit etwas initial Aufwand kann man doch relativ günstig und einfach seine vorhandene Geräte in "Smart Home" Geräte verwandeln und damit dann eine menge Spass haben. In Alexa steckt eine Menge potenzial.

Bei Fragen oder Anregungen bitte die Kommentare benutzen.

PHP "< ?=" vs "< ?php echo"

Einleitung

Hi,
heute geht es kurz um das PHP Tag "<?=". Vielleicht kennen es die meisten schon oder benutzen es sogar in Ihrem Code. Das Konstrukt ist schon etwas älter aber ich wollte trotzdem kurz darauf eingehen.

Beispiel: (zwischen < und ? ist ein extra Leerzeichen das da nicht hin soll!)

Lange Schreibweise:
< ?php echo $value; ?>

Kurze Schreibweise:
< ?= $value ?>
Beide Varianten funktionieren und resultieren in der selben Ausgabe.

Wann sollte ich "<?=" nehmen?
  • > PHP 5.4 Standardmäßig aktiv
  • spart Zeichen und Zeit
  • wenn short_open_tag in der php.ini aktiv ist
Wann sollte ich "<?php echo" nehmen?
  • < PHP 5.4
  • wenn man Angst hat das der Syntax irgendwann nicht mehr unterstützt wird
Ab PHP 5.4 ist das Kürzel Standardmäßig aktiv auch wenn die Option "short_open_tag" deaktiviert ist in der php.ini Datei. Man sollte also die Verwendung nicht scheuen ;)

Hier noch mal eine interessante Grafik dazu:

Wer noch mehr Informationen zu dem Thema möchte sollte sich ein mal die Diskussion dazu hier anschauen: Link

Das war es auch schon. Fragen und Anregungen gern in die Kommentare. 

Debian SSL / HTTPS mit Apache2 einrichten

Einleitung

Hi,
seit der weltweiten Überwachung der NSA wissen wir alle das Verschlüsselung wichtig ist. Wie Ihr selbst HTTPS auf eurer Seite einrichtet zeige ich heute in einem kurzen Tutorial. Ich weise noch mal darauf hin das selbst erstellte Zertifikate bitte nur Lokal und zu Testzwecken genutzt werden sollten. Ok dann lasst uns beginnen.

Voraussetzungen:

Ihr benötigt Debian mit installiertem OpenSSL Modul und den Apache2 Webserver. Den Rest werden wir hier zusammen installieren.

SSL Zertifikat erstellen / generieren

Mit Hilfe von OpenSSL können wir uns in relativ wenigen Schritten ein eigenes Zertifikat erstellen.

1. Ordner zum speichern des Zertifikates erstellen und dorthin wechseln

mkdir /etc/apache2/ssl
cd /etc/apache2/ssl

3. Jetzt erstellen wir unseren privaten Key

openssl genrsa -out sslcert.key 2048

4. Aus dem Key generieren wir nun eine CSR Datei (Zertifizierungsanforderung oder auch engl. Certificate Signing Request). Diese enthält vereinfacht gesagt die Zertifikats Informationen.

openssl req -new -key sslcert.key -out sslcert.csr

Anschließend muss eine Reihe von Informationen eingegeben werden. In unserem Fall geben wir bei "CommonName" localhost ein da wir das Zertifikat für eine lokale Entwicklungsumgebung erstellen. Sie können auch alle anderen Felder leer lassen und diese mit "Enter" überspringen.

Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

5. Jetzt können wir aus der CSR Datei unser Zertifikat generieren. Die Gültigkeitsdauer des Zertifikates kann mit dem Parameter -days angegeben werden. In unserem Fall ist es 1 Jahr gültig.

openssl x509 -req -days 365 -in sslcert.csr -signkey sslcert.key -out sslcert.crt

Apache2 konfigurieren

1. Damit der Apache2 Webserver mit dem Zertifikat umgehen kann aktivieren wir zu nächst das "SSL Modul".

a2enmod ssl

2. Damit der Apache auf auf dem richtigen Port lauscht überprüfen wir die "ports.conf" im Ordner /etc/apache2/

cat /etc/apache2/ports.conf

Die Datei sollte in etwa so aussehen. Wichtig ist das auf Port 443 gelauscht wird.
Listen 80


        Listen 443



        Listen 443



3. Jetzt erstellen wir noch eine neue Vhost Config für den SSL Port.

nano /etc/apache2/sites-available/application-ssl.conf

Diese füllen wir dann mit folgendem Inhalt:

    DocumentRoot /var/www/application/public

    ErrorLog /var/www/application/log/error.log
    CustomLog /var/www/application/log/access.log combined

    SSLEngine on
    SSLCertificateKeyFile /etc/apache2/ssl/sslcert.key
    SSLCertificateFile /etc/apache2/ssl/sslcert.crt

    

        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted

    


4. Im letzten Schritt starten wir Apache neu

service apache2 restart

Eure Seite sollte jetzt über https aufrufbar sein. Die Sicherheitswarnung im Firefox / Chrome sind normal, diese könnt Ihr einfach akzeptieren. Ich empfehle euch aber diese Konfiguration nur für Lokale Entwicklungsumgebungen! Für produktive Umgebungen bitte noch mal gründlich in SSL einlesen und ein Zertifikat von einem anerkannten Zertifikatsanbieter nehmen.

PC Spiele Release Kalender 2016 / 2017


Hi,

ich war heute auf der Suche nach einem "PC Spiele Release Kalender" den ich einfach in meinem Google Kalender importieren kann. Leider wurde ich bitter enttäuscht und ich fand nichts in der Form. Deshalb beschloss ich kurzer Hand einen eigenen "PC Spiele Release Kalender" für meinen Google Kalender zu erstellen. In diesem habe ich alle wichtigen neu Erscheinungen der nächsten Zeit eingetragen. Das Ergebnis stelle ich euch hier zur Verfügung.

PC Games Release Kalender 2016/2017

ICAL:
https://calendar.google.com/calendar/ical/m9but2o3kra856b8ige3mlh3hg%40group.calendar.google.com/public/basic.ics

HTML:
https://calendar.google.com/calendar/embed?src=m9but2o3kra856b8ige3mlh3hg%40group.calendar.google.com&ctz=Europe/Amsterdam

Falls Ihr Vorschläge oder Wünsche habt, dann schreibt sie einfach in die Kommentare.

Viel Spass mit dem Kalender.

PS: Er wird auch regelmäßig gepflegt.

Grüße

Daten Quelle:
http://www.gamestar.de/releaseliste/
http://www.pcgameshardware.de/Spiele-Thema-239104/Specials/PC-Spiele-2016-1168561/

Debug SplObjectStorage, ArrayObject und update Xdebug

Unser Thema: SplObjectStorage, ArrayObject debuggen

Hallo,
heute dreht sich alles um die Frage:
"Wie kann man PHP Klassen die von SplObjectStorage oder ArrayObject erben debuggen und dessen Inhalt sehen?"

Mein Problem

In meinem PHP Projekt benutze ich viele Collection Klassen die von ArrayObject erben. (Erklärung: ArrayObject ist eine PHP interne Klasse die es erlaubt Objekte so wie Arrays arbeiten zu lassen. PHP.net).

Dabei ist mir aufgefallen das ich den Inhalt von solchen Collections nicht in PHPStorm debuggen kann. Ich erhielt nur Meldungen wie "can not get property".

Nach kurzer Recherche im Internet fand ich ich dann auch die Ursache des Problems.





Die Ursache

Die Ursache des Problems war eine veraltet Xdebug Version. In meinem Fall war es die Version 2.2.3 welche die Darstellung von solchen Objekten nicht unterstützte.

Die Lösung

Das Problem war also gefunden nun musste es nur noch gelöst werden. Der Fehler in Xdebug wurde in der Version 2.3.3 behoben. Also musste ich nur eine Version installieren die >2.3.3 ist. (Xdebug Bug Ticket)

Xdebug updaten >2.3.3

Um Xdebug zu aktualisieren müssen wir eigentlich nur eine aktuelle Version herunterladen diese kompilieren und aktivieren. Wie das geht erkläre ich euch jetzt.

Xdebug Wizard hilft euch

Um einfach die für euch empfohlene Xdebug Version herauszufinden könnt Ihr den von der Xdebug Homepage bereitgestellten Wizard benutzen. Xdebug Wizard

Dem Wizard müsst Ihr nur den Inhalt eurer PHPInfo übergeben. Dazu einfach eine Datei anlegen (z.B. info.php) mit dem Inhalt:
<?php echo phpinfo(); 
Den Inhalt der Seite kopiert Ihr mit Strg + A (alles Markieren) und Strg + C (kopieren) in das Feld auf der Wizard Seite.

Der Wizard erzeugt euch dann eine Ausgabe mit einer passenden Installationsanleitung für euer System.

Xdebug herunterladen und kompilieren

  • In /tmp Verzeichnis wechseln
    • Befehl: cd /tmp
  • Xdebug herunterladen
    • Befehl: wget http://xdebug.org/files/xdebug-2.4.1.tgz
  • Archiv entpacken
    • Befehl: tar -xvzf xdebug-2.4.1.tgz
  • In entpackte Verzeichnis wechseln
    • Befehl: cd xdebug-2.4.1
  • Build initialisieren
    • Befehl: phpize
  • Konfigurieren
    • Befehl: ./configure
  • Builden
    • Befehl: make
  • Kompiliertes Modul in PHP Ordner kopieren
    • Befehl: cp modules/xdebug.so /usr/lib/php5/20121212
  • Falls nötig Extension Pfad anpassen in der php.ini
    • nano /etc/php5/apache2/php.ini
    • Einfügen: zend_extension = /usr/lib/php5/20121212/xdebug.so
Bei mir war der letzte Schritt nicht nötig da in meiner php.ini nur die Extension per Name "xdebug.so" geladen wird.

Wichtig! Nach den Änderungen PHP/Apache neustarten, damit die Änderungen wirksam werden.

Ergebnis

Eure phpinfo Datei sollte nun die aktuell installierte Version von Xdebug anzeigen. In etwa so:
Nachdem alles geklappt hat könnt Ihr nun ohne Probleme solche ArrayObject Klassen debuggen :)

Falls Ihr Probleme oder Anregungen habt schreibt diese bitte in die Kommentare.

Viel Spass und bis bald.

Pokemon Go - Cheater melden bei Niantic



Ja ich oute mich als Pokemon Go Spieler :D. Aber damit bin ich ja zum Glück nicht alleine hier.

Wahrscheinlich haben die meisten von euch es schon selbst erlebt. Man möchte eine Arena einnehmen aber diese wird von unbesiegbar starken Trainern blockiert. Ja ich rede von diesen Cheatern die die Arenen mit Ihrem hoch gelevelten Charakteren und Pokemon besetzen... (lvl 34-40).

Da Niantec jetzt permanente Banns für solche Spieler vergibt wird es Zeit nicht nur untätig rum zu sitzen sondern diese Spieler zu melden.

Hier noch mal der Link zum Niantec Formular: -> Cheater Melden

Das Formular sollte so aussehen:



Es ist wichtig das Ihr auch Screenshots von den Personen macht und diese im Formular hinzufügt. Screenshots kann man unter Android mit der Tastenkombination "Lautstärke runter" + "Power Button" erstellen.

Ich hoffe das wir gemeinsam etwas gegen diese Cheater und Botter unternehmen können und das das Spiel bald Frei von solchen Leuten ist.

Meinungen und Vorschläge bitte in die Kommentare.

PHP 7 auf Ubuntu 14 / 15 installieren

Ich erkläre euch hier wie Ihr PHP 7 auf eurem Ubuntu Server mit der Version 14 / 15 installieren könnt.

Der nette Herr Ondřej Surý pflegt nämlich ein PHP 7 Repository welches uns die einfache Installation mittels apt-get ermöglicht. Danke!

// repo hinzufügen und installieren
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install -y php7.0 

// php7 check
php -v

// verfügbare Module auflisten
sudo apt-cache search php7-*

// alle wichtigen php7 module installieren
sudo apt-get install php7.0-mysql php7.0-curl php7.0-json php7.0-cgi php7.0-opcache php7.0-json php7.0-tidy php7.0-ldap php7.0-intl php7.0-cli php7.0-common php7.0-xmlrpc libapache2-mod-php7.0 php7.0-soap php7.0-xml php7.0-zip php7.0-mcrypt

// memcached installieren
sudo apt-get install -y php-memcached

Fertig!
Eure Seite sollte nun mit PHP 7 ausgeliefert werden. Um das zu prüfen einfach ein phpinfo(); in euren Code einbauen und ausgeben lassen.

Ich werde jetzt noch einige PHP 7 Tests durchführen und wünsche euch viel Spass mit eurer Installation.

Selbstsigniertes Zertifikat erstellen und mit NGINX benutzen


Hi, wer NGINX und SSL benutzen möchte dazu aber kein Geld ausgeben will kann dies mit einem selbstsignierten Zertifikat machen. Dies wird aber nicht für Produktivsysteme geraten!

Als erstes erstellen wir uns einen Ordner im nginx Verzeichnis wo wir die Zertifikate generieren.
mkdir /etc/nginx/https
cd /etc/nginx/https
Zertifikate erzeugen:
openssl genrsa -out example.key 2048
openssl req -new -key example.key -out example.csr

Dabei kann man einige Daten angeben... oder auch nicht ;)
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:Mecklenburg-Vorpommern
Locality Name (eg, city) []:Neubrandenburg 
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Example Inc
Organizational Unit Name (eg, section) []:Skunk works
Common Name (e.g. server FQDN or YOUR name) []:example.org
Email Address []:webmaster@example.org

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Unser nun selbst erstelltes Zertifikat wird nun von uns selbst signiert für 730 Tage.
openssl x509 -req -days 730 -in example.csr -signkey example.key -out example.crt

Wir können nun unsere Zertifikate in NGINX einbinden. Dies passiert in der "server {}" Direktive.
server {
        listen 80;
        listen 443 ssl;

        root /var/www/example/root;
        index index.html index.htm;
 
        server_name example.com;

        ssl_certificate /etc/nginx/ssl/example.crt;
        ssl_certificate_key /etc/nginx/ssl/example.key;
}

Nach der Änderung den Webserver neustarten:
service nginx restart (oder /etc/init.d/nginx restart)

https / ssl sollte nun für eure Seite funktionieren. Da die Zertifikate selbst ausgestellt wurden müssen diese im Browser beim aufruf der Seite noch vertraut werden. Wer das nicht will sollte sich ein Zertifikat mit hilfe von "Lets Encrypt" erstellen.

Installieren der neusten NGINX Version unter Ubuntu 15.10


Hi,
ich möchte euch hier zeigen wie Ihr die neuste NGINX Version unter Ubuntu 15.10 installiert.

Das Problem welches Ubuntu hat ist das nicht die neuste Version des Webservers in den Repos vorhanden ist. Aber zum Glück pflegt das NGINX Team ein eigenes "apt" Repository. Und dieses machen wir uns zunutze :)


1. NGINX "Signing Key" hinzufügen
curl http://nginx.org/keys/nginx_signing.key | apt-key add -
2. NGINX Repo zur source list hinzufügen
echo -e "deb http://nginx.org/packages/mainline/ubuntu/ `lsb_release -cs` nginx\ndeb-src http://nginx.org/packages/mainline/ubuntu/ `lsb_release -cs` nginx" > /etc/apt/sources.list.d/nginx.list
3. Paket Index aktualisieren
apt-get update
4. Neuste NGINX Version installieren :)
apt-get install nginx
5. Fertig!
nginx -v
Du solltest nun die aktuelle Versionsnummer deines NGINX Webservers sehen.

Hinweiß: Die hier installierte Version beinhaltet das HTTP2 / SSL Modul bereits