Nginx SSL certificaat: “bad end line error”

Wanneer je een certificaat bundel creëert voor SSL in Nginx (zie vorige post), kan het zijn dat Nginx een “bad end line error” geeft. Je krijgt dan zo’n error:

nginx: [emerg] PEM_read_bio_X509_AUX("/home/mathias/Sites/certificaat/mactua/ssl_bundle.cert") failed (SSL: error:0906D066:PEM routines:PEM_read_bio:bad end line)

Dit komt meestal doordat één van de SSL certificaten die je concateneert geen newline heeft op het einde van het bestand. Ergens in het bestand staan de -----END CERTIFICATE----- en -----BEGIN CERTIFICATE----- dan op dezelfde lijn:

-----END CERTIFICATE----------BEGIN CERTIFICATE-----
MIIEYDCCA0igAwIBAgIDAjp7MA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVT
MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i
YWwgQ0EwHhcNMTQwOTA4MjIyMTAxWhcNMjIwNTIwMjIyMTAxWjCBgTELMAkGA1UE
BhMCTkwxITAfBgNVBAoTGEludGVybWVkaWF0ZSBDZXJ0aWZpY2F0ZTEdMBsGA1UE
CxMURG9tYWluIFZhbGlkYXRlZCBTU0wxMDAuBgNVBAMTJ0ludGVybWVkaWF0ZSBD
ZXJ0aWZpY2F0ZSBEViBTU0wgQ0EgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEP
GkpNxwiDmGZ63GNdIQh7ogwUVVcp7gGVJiafnWs2JbQ4BJjHoKKNCAG2abpX9hK4
NmWFjOQSWTD+CICx/w1Nrln016P6IaWpm06Dahvf/V0eHwYIRoOAs0yQpYpTx0bv
h42NfwQ1t0B6e0oegaPWqSk174u3g9f2q6UF2J6oEPhHXYM9WSW0yDkvB8BCDboR
Qfg6VhFW8bMT3NglYYQ1+VndfdV0nv4pnn0A/Ueb3OWQ6Ercfjgk3fDPib0PSM3d
+tkygLHpQjbP5vimhYdUR8v3lJGZ97RyO8sCAwEAAaOCAR0wggEZMB8GA1UdIwQY
MBaAFMB6mGiNifurBWQMEX2qfWW4ysxOMB0GA1UdDgQWBBRjHKinsZM1jxZ2nuX6
X8jmrb8vuTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjA1BgNV
HR8ELjAsMCqgKKAmhiRodHRwOi8vZy5zeW1jYi5jb20vY3Jscy9ndGdsb2JhbC5j
cmwwLgYIKwYBBQUHAQEEIjAgMB4GCCsGAQUFBzABhhJodHRwOi8vZy5zeW1jZC5j
b20wTAYDVR0gBEUwQzBBBgpghkgBhvhFAQc2MDMwMQYIKwYBBQUHAgEWJWh0dHA6
Ly93d3cuZ2VvdHJ1c3QuY29tL3Jlc291cmNlcy9jcHMwDQYJKoZIhvcNAQELBQAD
ggEBAD9XFBXM6iyefu/EIo19K8MivUbCNVXCSDcvV/nqRNP65ulo1B1bZbPK85+8
1nEDXCFCUeVsHkkSwMM8SCCm9qytdmWzK6rwsQkaJdfNyixsGVLH0kwUvHR/plTj
9/A2+VZpcdIhPQwS6PR8BULwXAU/oRzPekEJnehEbBR1mo8UJfdZSCJTShsIuSQB
Qx275wDIVMH7A5O9GXN/e7WVTxUa8wKWCruzZ9pS7gpifkcsTUH+c1a5C2vQNqRh
vPM2w6gkpyaonh9mKO0F4Z5iqvE=
-----END CERTIFICATE----------BEGIN CERTIFICATE-----

Dit los je op door zelf even met Vim (of je lievelingseditor) de end line in orde te brengen.

Nginx even herstarten en alles zou geregeld moeten zijn…

SSL certificaten installeren in Nginx (Comodo)

Sinds vandaag is denbeke.be beveiligd met een SSL certificaat. In deze blogpost leg ik uit hoe je zo’n certificaat (in dit geval een Comodo PositiveSSL) moet installeren in een Nginx configuratie.

Een SSL certificaat, de defacto standaard in het beveiligen van communicatie over het internet versleutelt persoonlijke of gevoelige informatie zoals credit card gegevens, wachtwoorden, namen en adressen die worden verstuurd via uw website. Hierdoor is een SSL certificaat een belangrijk element in het verzekeren van de online veiligheid van uw bezoekers en het verlagen van het risico op fraude of phishing.

Algemene beschrijving SSL door een provider: Hostbasket

 

CSR (Certificate Signing Request) genereren

Vooraleer er van start kan gegaan worden met een SSL certificaat, moet er uiteraard zo’n certificaat aangevraagd worden bij een CA (Certificate authority). Hiervoor is een CSR vereist. Dit kan met OpenSSL in de command line.

$ openssl req -nodes -newkey rsa:2048 -keyout myserver.key -out server.csr

Deze CSR moet je opgeven aan de CA.  De certificate authority zal dan voor jou het SSL certificaat genereren. (Je kan ook zelf certificaten generen, maar dan krijgen alle bezoekers een melding dat de identiteit van het certificaat niet gecontroleerd kan worden.) Vergeet het myserver.key bestand niet te backuppen. Het is je eigen unieke private sleutel.

 

Bundle creëren

Je moet de site certificaten en root/intermediate certificaten samenvoegen (in omgekeerde volgorde: beginnen bij het server certificaat, en eindigen met de ROOT). Dit kan ook snel met de command line.

$ cat denbeke_be.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > ssl_bundle.crt

 

Nginx configuratie

Je hebt nu twee bestanden: ssl_bundle.crt en myserver.key. Deze moet je nu toevoegen aan je Nginx configuratie. (Uiteraard moet je ook SSL activeren, en zien dat de firewall poort 443 open staat. )

server {
  listen  80;
  listen 443 default_server ssl;
  ssl_certificate      /etc/ssl/certs/ssl_bundle.crt;
  ssl_certificate_key  /etc/ssl/certs/myserver.key;
}

Internetkabels: Stugge vs Soepele kern

Unshielded Twisted Pair (UTP) netwerk kabel
Unshielded Twisted Pair (UTP) netwerk kabel

Wanneer je internetkabels wilt kopen, kom je al vaak de begrippen “stugge” en “soepele” tegen. Wat is nu eigenlijk het verschil tussen deze types kabel?

In feite heeft het allemaal te maken met de kernen van de kleine kabeltjes in de ethernet kabels.

 

Stugge kern

Een kabel met een stugge kern (ook al wel eens “solid cable” of “installatiekabel” genoemd) is een netwerkkabel waarbij elk kabeltje een vaste kern heeft die bestaat uit één koperdraad. Dit type van kabels is bedoeld voor gebruik in gebouwen: om er vrouwelijke RJ45 sockets op te plaatsen of in patchkasten te plaatsen. Nadelig is dat door de harde kern, de kabel niet in harde haakse bochten gelegd mag worden.

Deze kabels zijn eigenlijk niet bedoeld om er patchkabels van te maken met mannelijke RJ45 connectoren. Zo’n connector heeft namelijk twee pinnetjes/mesjes per kleine kabel die erin dichtknijpen (= erin vast hechten), bedoeld voor soepele kernen. Bij stugge kernen kunnen deze ernaast schieten of de kern doen breken. Hiervoor zijn er speciale RJ45 connectoren die drie pinnetjes hebben die mooi rond de kabel gaan.

 

Soepele kern

UTP netwerk kabel met soepele (stranded) kern
UTP netwerk kabel met soepele (stranded) kern

Wanneer de kleine kabeltjes soepele kernen hebben, bestaat de kern niet uit één enkele koperdraad, maar uit nog kleinere draadjes die rond elkaar gewonden zijn. Typisch zijn dat 7 draadjes per kabeltje = 56 per netwerkkabel. Zulke kabels zijn uitermate geschikt om er RJ45 connectoren op te monteren en als patch kabel te gebruiken.

Dit type kabel is niet echt bedoeld om te gebruiken bij female RJ45 poorten, omdat de kabeltjes hun mooie ronde vorm niet goed behouden wanneer ze gemonteerd worden.

 

Stranded vs Solid cable
Nogmaals algemeen het verschil tussen “solid” en “stranded”.

Abdij van Koningshoeven te Tilburg

Abdij Onze Lieve Vrouw van Koningshoeven in TilburgWie een beetje op de hoogte is van de trappistenbieren zal ongetwijfeld de heerlijke La Trappe trappist kennen. Deze wordt gebrouwen in de abdij van Koningshoeven, ten oosten van Tilburg.

De paters trappisten brouwen er negen soorten bier:

  1. Blond (helder, sprankelend, doordrinkbaar blond bier van hoge gisting)
  2. Dubbel (warme, robijnrode trappist)
  3. Tripel (donkerblonde trappist met een fruitige, bitterzoete smaak)
  4. Quadrupel (zwaarste specialiteit van La Trappe)
  5. Quadrupel Oak Aged (Quadrupel, langere tijd gerijpt op barriques)
  6. Witte Trappist (fris karakter, gebrouwen met zeer aromatische hopsoorten)
  7. Bock (trappistenbock en het enige bockbier dat nagist op de fles)
  8. Isid’or (lichtzoetig amberbier met caramelnote)
  9. Puur (de eerste biologische trappist)

Vorig weekend zijn we speciaal naar Nederland gereden om de gegeerde La Trappe Quadrupel Oak Aged te proeven.

‘Quadrupel Oak Aged’ (10% alcohol) is Quadrupel, dat langere tijd op barriques oftewel houten vaten is gerijpt. De unieke, complexe smaak is afhankelijk van het type vat. Nu zijn dat port-, witte wijn- en whiskybarriques.

via koningshoeven.nl

La Trappe Quadrupel Oak Aged is een bier van de Nederlandse brouwer La Trappe dat sinds 2009 gebrouwen wordt (verkrijgbaar sinds 18 juni 2010). Het bier is gelijk aan La Trappe Quadruppel, maar dan gerijpt op oude eiken whiskeyvaten. Omdat er verschillende soorten eiken vaten gebruikt worden, kan de smaak van de verschillende “batches” variëren. Dit geeft verschillende rijke smaken, met bijvoorbeeld een vleugje whiskey smaak erdoor. Het bier is jarenlang houdbaar.

via Wikipedia

Sinds deze zomer staat de Batch 17 in de rekken in de kloosterwinkel van Koningshoeven. Deze Oak Aged heeft een koperbruine kleur en wordt gekenmerkt door moscatel (druif), en honing-, amandel-, karamelaroma’s, naast de typische La Trappe Quadrupel smaak. (Meer info over de verschillende batches vind je terug in he Batch-register)

La Trappe Quadrupel Oak Aged

De  La Trappe Quadrupel Oak Aged is in ieder geval een fantastisch bier!

Server migratie afgerond

Ubuntu LogoTot voor kort draaide ik FreeBSD 10 op mijn server, met Apache webserver. Vorige week ben ik overgestapt van FreeBSD naar Ubuntu Server 14, en heb ik Apache vervangen door Nginx.

FreeBSD heeft altijd super stabiel gedraaid, maar met ports of firewalls werken is op BSD niet altijd een lachertje (zeker niet toen er IPv6 bij kwam kijken). Ubuntu maakt zulke zaken een pak eenvoudiger. Firewall configureren e.d. gaat veel sneller/gemakkelijker.
(Load daarentegen loopt op Ubuntu precies soms vaker hoog op dan op FreeBSD)

Overstappen naar Nginx was echter een ander verhaal. Ik was gewend aan de configuraties van Apache, waardoor ik echt een lange tijd heb moeten zoeken om sommige dingen (zoals php-fpm, rewrite rules, …) aan de praat te krijgen. Wanneer het eindelijk goed geconfigureerd is, draait Nginx schijnbaar wel een pak sneller dan Apache.

Om sommige configuraties wat gemakkelijker te maken heb ik ook eens een controle paneel geïnstalleerd: Ajenti (met de Ajenti V plugin)

Git: author en email aanpassen in history

Het gebeurt al wel eens dat je in een commit de verkeerde author of email hebt staan. Als je zo een reeks commits hebt in een project, kan je met een shell script alle commits herschrijven.

#!/bin/sh
 
git filter-branch --env-filter '
 
an="$GIT_AUTHOR_NAME"
am="$GIT_AUTHOR_EMAIL"
cn="$GIT_COMMITTER_NAME"
cm="$GIT_COMMITTER_EMAIL"
 
if [ "$GIT_COMMITTER_EMAIL" = "old_mail@example.com" ] || [ "$GIT_COMMITTER_EMAIL" = "another_old_mail_to_change@example.com" ]
then
    cn="New Name"
    cm="new_email@example.com"
fi

if [ "$GIT_AUTHOR_EMAIL" = "old_mail@example.com" ] || [ "$GIT_AUTHOR_EMAIL" = "another_old_mail_to_change@example.com" ]
then
    an="New Name"
    am="new_email@example.com"
fi
 
export GIT_AUTHOR_NAME="$an"
export GIT_AUTHOR_EMAIL="$am"
export GIT_COMMITTER_NAME="$cn"
export GIT_COMMITTER_EMAIL="$cm"
' -f -- --all

Nadien moet je dan wel geforceerd pushen.

git push --force

Wel opletten als er nog andere mensen zijn die een lokale versie hebben van de repo…