Pagina1 van 1

Self-Signed SSL Certificaat zelf maken

Self-Signed SSL Certificaat zelf maken
   4

Soms heb je een certificaat nodig zodat we ons netwerkverkeer kunnen versleutelen, bijvoorbeeld voor onze netwerk apparaten (b.v. NAS, IoT devices, lokale web server, etc).

Helaas kunnen we voor bepaalde toepassingen of scenario’s, geen legitiem certificaat van een CA (Certificate Authority) krijgen, omdat daar wat beperkingen op rusten.
In dit artikel laat ik je zien hoe je voor deze uitzonderingen een zogenaamd Self-Signed (self-created) certificaat kunt maken, voor Windows, macOS en Linux.

Ik zal ook de nadelen en mogelijke problemen van een Self-Signed certificate, of CERT, kort toelichten.




Overview

Waarom hebben we een Certificaat nodig?

Voor versleutelde communicatie over het netwerk/Internet (SSL), hebben we een zogenaamde CERT of Certificaat nodig – de “key” voor onze versleuteling.
Een dergelijke CERT kun je zelf aanmaken (self-signed), of aanschaffen via een CA (Certificate Authority).

Dit is wat men standaard gebruikt voor websites die HTTPS gebruiken (in tegenstelling to HTTP wat niet versleuteld is), maar certificaten worden bijvoorbeeld ook voor SSH gebruikt, of bijvoorbeeld voor het signen van applicaties (Code Signing).

In dit artikel kijken we naar Self-Signed certificate voor SSL (Tweaking4All heeft ook een SSH voorbeeld waarin encryptie meer in detail wordt uitgelegd).

 Installeren van certificaten verschilt nog weleens per applicatie of server, daarom wordt de installatie hier niet besproken.

Waarom een Self-Signed CERT, en niet een CERT van een CA?

Uiteraard willen we het liefste een certificaat hebben van een CA (Certificate Authority).
Maar helaas zijn deze niet altijd gratis (Let’s Encrypt is een uitstekende gratis service hiervoor), en soms is een Self-Signed certificaat de enige optie.

Zo kan een certificaat van een CA allen worden aangemaakt voor een valide publiek domein, zoals bijvoorbeeld tweaking4all.com of google.com.
Een certificaat van een CA kan echter niet gemaakt worden voor een IP adres (b.v. 192.168.1.100) of een lokaal domein (b.v. mynas of mydlinkrouter).

Nadelen van een Self-Signed CERTs

Het grootste nadeel, in dagelijks gebruik, is dat de meeste browsers ze niet zo leuk vinden (tenzij je het certificaat als valid opgeeft bij het besturingssysteem of de betreffende browser).

Dit kan zichtbaar worden door het ontbreken van de gebruikelijk indicatoren dat een verbinding veilig is.

Maar een browser kan ook een foutmelding geven (“error_self_signed_cert”, “sec_error_untrusted_issuer”, “err_cert_authority_invalid”) of zelfs de content weigeren weer te geven en je die alleen maar zichtbaar kunt maken door op de ”Accept Risk” of de “Continue anyway” knop te klikken.

Naast dat stukje ongemak, kunnen Self-Signed certificaten gevoelig zijn voor een man-in-the-middle attack, want iedereen kan natuurlijk een Self-Signed certificate aanmaken. Maar … voor thuisgebruik en test projectjes kan het zeker toereikend zijn.

Self-Signed SSL Certificaten hebben natuurlijk nog wel voordelen; ze zijn gratis, en bieden nog steeds versleuteling.
Let wel: Self-Signed certificaten zijn dus verre van wenselijk in publiekelijk toegankelijke toepassingen (direct op het Internet) – maar ze werken wel.

Als jouw server of apparaat dus toegankelijk is via het Internet dan kun je beter een certificaat halen bij een CA (er vanuit gaande dat je een domein of subdomein hiervoor hebt en niet een enkel IP adres).

Certificaat bestanden

Voor SSL encryptie hebben in principe twee bestanden nodig.
Een privé deel, wat de content versleutelt, en een publiek beschikbaar deel om content te ontsleutelen en weer leesbaar te maken.
Dit mogen niet twee dezelfde sleutels zijn en wel.

Zie ook het artikel over SSH Login zonder Wachtwoord waarin iets gedetailleerde op de werking van encryptie wordt ingegaan.

Het KEY bestand (privé)

Het “KEY” (.key) bestand , de sleutel in het bestand, wordt gebruikt voor Encryptie (versleuteling) van de content.

Dit is ook de reden waarom dit bestand geheim en privé moet blijven.
Deze sleutel staat (verborgen) op de betreffende server zodat de server content kan versleutelen.
Versleuteling kan dus alleen maar met dit KEY bestand.

Als je dit bestand met een tekst-editor opent, dan zie je dat het begint met -----BEGIN PRIVATE KEY----- .

Het CERT bestand (publiek)

Het “CERT” (.cert) bestand is nodig om content te Decrypten (ontsleutelen). Deze “CERT” sleutel kan echter niet worden gebruikt voor het versleutelen.

Dit ook meteen de reden waar de CERT publiekelijk toegankelijk moet zijn, anders kan de content ontvangende partij nooit lezen wat de content is.
Als de CERT de content kan ontsleutelen, dan weten we met redelijke zekerheid dat de content inderdaad afkomstig is van de betreffende born (server).

Dit bestand staat ook op de betreffende server, zodat het gedeeld kan worden met de ontvangende partij.

In andere woorden: Als we content met CERT kunnen ontsleutelen, dan weten we dat het met de KEY versleuteld was.

Ook dit bestand kun je in een tekst-editor bekijken en begint met -----BEGIN PRIVATE KEY-----  (confusing right?).

Andere bestandsformaten

Het kan zijn dat je andere bestanden tegenkomt, als je met certificaten bezig bent:

.PEM, .CRT, .CA-BUNDLE, .CER, .P7B, of .P7S bestanden bevatten 1 of meer certificaten, en worden vaak in deze formaten aangeleverd door een Certificate Authority, vaak ingepakt in (bijvoorbeeld) een ZIP bestandje.

Een ander formaat zijn de .PFX bestanden, wat gebruikt wordt om meerdere certificaten (vaak CERT en KEY!) kunnen staan in een enkel bestand.
Voor SSL certificaten vinden we in een .PFX bestand zowel certificaat (CERT) als de bijbehorende key (KEY) voor elk object, en dit bestand is dus in de regel beschermd met een wachtwoord.

De gewenste bestanden hangt van de toepassing en de betreffende applicaties af, maar het gebruik van CERT en KEY zijn erg gebruikelijk.

Hoe maak je een Self-Signed SSL Certificaat?

De korte versie voor wie ongeduldig is of kennis van zaken heeft … 

Zorg ervoor dat je OpenSSL hebt geïnstalleerd en run de volgende one-liner:


openssl req -newkey rsa:1024 -x509 -sha256 -days 365 -out certificate.cert -keyout certificate.key -nodes -subj "/C=US/ST=WI/L=YourCity/O=YourOrganization/OU=YourOrganizationUnit/CN=mydevice/emailAddress=admin@example.com"

Pas wel de parameters aan naar jouw voorkeuren (key lengte, bedrijfsnaam, locatie, etc).

Online Diensten voor Self-Signed Certificaten 

Ik ben er geen fan van, maar er zijn online diensten die Self-Signed certificaten kunnen genereren voor je.
Zo heeft bijvoorbeeld NameCheap een uitstekende optie om dit te doen.

Voor het genereren van een Certificaat, hebben we een tool nodig en in dit artikel hebben we gekozen voor OpenSLL.
Afhankelijk van het besturingssysteem, is dit al voor geïnstalleerd, maar het kan ook zijn dat je het moet downloaden en installeren (het is gratis).

OpenSSL voor Linux

Ik ben geen Linux expert, maar op de distributies die ik getest heb, stond OpenSSL al geïnstalleerd.
Als openSSL niet op jouw Linux distributie staat geïnstalleerd, kijk dan bij de package manager van betreffende distributie. OpenSSL staat er gegarandeerd in. Of gebruik de oude apt-get methode:


sudo apt-get install openssl

OpenSSL voor macOS

macOS heeft standaard ook OpenSSL geïnstalleerd staan (om precies te zijn een OpenSSL variant genaamd LibreSSL).
Mocht Apple het uit verwijderen, wat natuurlijk altijd kan gebeuren, dan kun je met bijvoorbeeld brew OpenSSL als nog installeren.

OpenSSL voor Windows

Windows heeft standaard geen OpenSSL geïnstalleerd staan en helaas kan men bij OpenSSL geen installatie bestanden vinden. Dus je moet OpenSSL zelf compilen of kijken naar een website waar je voor gecompileerde versies kunt downloaden. Gelukkig kun je voor windows (32- en 64-bit) wel een lijst vinden op de OpenSSL Wiki pagina, of meteen een installatie bestand downloaden van slproweb.com.

 

Genereren van een Self-Signed Certificaat

Omdat OpenSSL hetzelfde werkt op alle drie de platformen, hoef ik het gelukkig maar 1x uit te leggen.

Key Lengte Overwegingen 

Tegenwoordig is een 2048 bit key is redelijk standaard voor een web server zoals Apache.

Echter, wil je een key gaan gebruiken voor een kleinere computer zoals bijvoorbeeld een microcontroller (b.v. de ESP8266), dan zul je aan de slag moeten met een kortere key.
Zo is voor ESP8266 compatibiliteit, op dit moment, SHA256 nodig en een lengte van 512 of 1024 bits voor de key. Een 512 bits key zorgt ervoor dat de ESP8266 nog redelijk vlot werkt, maar 512 wordt gezien als een zwakke versleuteling. Een key van 1024 bits kan echter de controller teveel vertragen. Mocht jouw applicatie nog prima werken met een 1024 bits key, gebruik die dan. Anders ben je aangewezen op een 512 bits key.
Merk op: het schijnt dat de ESP32/ESP8266 ook zelf keys kan genereren, maar ik heb dit zelf niet getest.

Netwerknaam, Netwerknaam.local of IP adres ? 

OpenSSL staat het toe dat je een IP adres kunt gebruiken in plaats van een domein of device naam.
Persoonlijk gebruik ik liever de netwerknaam, omdat ik dan wat vrijheid heb in het verschuiven van apparatuur in mijn netwerk.

Om ervoor te zorgen dat netwerknaam werkt, zul je er wel voor moeten zorgen dat de DNS van jouw router de naam kent. Vaak doe je dat door DHCP (op diezelfde router) te gebruiken. Als je perse een vast IP adres wilt gebruiken, dan kan dat met DHCP ook. Je moet dan een IP adres toewijzen in de DHCP, en deze linken aan het MAC adres van jouw server of device..

Om zeker te weten dat netwerknaam werkt, kun je dit eenvoudig met een PING testen op jouw PC, b.v.. ping netwerknaam  of ping netwerknaam.local.

In mijn setup werkt “netwerknaam.local” niet altijd even goed (het zal wel een configuratie probleem bij mij thuis zijn), dus ik gebruik altijd de netwerknaam (ook in onderstaande voorbeelden). Meer informatie over het gebruik van “.local” vindt je op de .local domain Wiki pagina.

Om een certificaat te kunnen genereren hebben we wel wat basis informatie nodig.

Merk op: al deze informatie voor het certificaat kun je invoeren als een enkele grote regel, of op een interactieve manier. Ik zal beiden hieronder bespreken,

Genereren van een nieuwe certificaat, resulteert in twee bestanden: het CERT bestand en het KEY bestand. Je hebt beiden nodig!

De output files (key en cert) worden in de directory waar je staat, opgeslagen. Daarom adviseer ik om eerst naar de gewenste directory te gaan voor je OpenSSL opent.

Hieronder een overzicht van mogelijk benodigde gegevens met voorbeelden. Meer informatie vindt je in de OpenSSL documentatie.

OpenSSL Certificaat Parameters
Parameter example Purpose
-x509 X509 specificeer dat het een certificaat moet zijn
-newkey rsa:1024 -sha256 Gebruik sha256, 1024 bits key, voor versleuteling
-keyout certificate.key uitvoerbestand voor de KEY
-out certificate.cert uitvoerbestand voor de CERT
-days 365 Dit certificaat is 365 dagen geldig
-nodes -subj "
/C=US
/ST=WI
/L=YourCity
/O=YourOrganization
/OU=YourOrganizationUnit
/CN=mydevice
/emailAddress=admin@example.com
"
Toevoegen van “nodes” ( dit is 1 enkele regel!);
C staat voor jouw land code (2 karakters)
ST geeft aan Staat of Provincie
L is voor jouw woonplaats
O voor “organisatie”
OU voor de “organisatie unit”
CN voor netwerknaam, domeinnaam of IP adres
emailAddress is het email adres van de admin

OpenSSL Interactief certificaat maken

Na installatie van OpenSSL (indien nodig), moeten we Terminal (Mac/Linux), Command Prompt (Windows), of Shell (Linux) openen, om daarin dan OpenSSL te starten van de command-line.

Echter … voor we OpenSSL openen, is het aan te raden eerst naar de gewenste output directory te gaan.
In onderstaande voorbeelden ben ik uitgegaan van het bureaublad. Uiteraard kan dat ook een andere locatie zijn.

 

Windows:

Window sgebruikers moeten hier even opletten, omdat we mogelijkerwijs (afhankelijk van de installatie) het gehele pad naar openssl.exe moeten opgeven.
Stel openssl.exe staat in "C:\Program Files\OpenSSL-Win64\bin\" dan moeten we OpenSSL starten met "C:\Program Files\OpenSSL-Win64\bin\openssl.exe" .

(vervang gebruikersnaam met jouw gebruikersnaam als je dezelfde locatie wilt gebruiken)


cd C:\Users\gebruikersnaam\Desktop
"C:\Program Files\OpenSSL-Win64\bin\openssl.exe"

Je krijgt dan zoiets als dit:


C:\Users\gebruikersnaam\Desktop>"c:\Program Files\OpenSSL-Win64\bin\openssl.exe"
OpenSSL>

 

Mac and  Linux:

Mac en Linux gebruikers hebben iets makkelijker, omdat het pad van OpenSSL vaak al in de PATH environment variabele staat.


cd ~/Desktop
openssl

We zien dan zoiets als dit:


13:44 ~ $ openssl
OpenSSL>

 

Nu dat OpenSSL is gestart, moeten we het volgende commando opgeven. Let hierbij op dat je een aantal van deze waarden aan kunt passen, specifiek voor jouw wensen. Denk dan met name aan hoe lang een certificaat geldig moet blijven, de key lengte en de namen voor de KEY en CERT bestanden:


req -newkey rsa:1024 -x509 -sha256 -days 365 -nodes -out certificate.cert -keyout certificate.key

Vervolgens, als je op Enter hebt gedrukt, being OpenSSL de interactieve stappen voor het invullen van de “node” informatie zoals locatie, bedrijfsgegevens, etc.
Hier een voorbeeld:

Merk op: “Common Name” is hier het domein, of netwerknaam, of een IP adres.


OpenSSL> req -newkey rsa:1024 -x509 -sha256 -days 365 -nodes -out certificate.cert -keyout certificate.key
Generating a 1024 bit RSA private key
...............................................++++++
.........++++++
writing new private key to 'certificate.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) []:US
State or Province Name (full name) []:WI
Locality Name (eg, city) []:YourCity
Organization Name (eg, company) []:YourOrganization
Organizational Unit Name (eg, section) []:YourOrganizationUnit
Common Name (eg, fully qualified host name) []:mydevice
Email Address []:admin@example.com

Certificaat in een enkele regel maken

Persoonlijk heb ik de voorkeur voor de interactieve methode, maar als je dit bijvoorbeeld in een script wilt zetten, dan is dat weer niet wenselijk.

Alle informatie van het voorgaande voorbeeld vindt je hieronder gecombineerd in een enkele regel die je vanuit de command-line uitvoert. Dus niet in OpenSSL.

Windows gebruikers moeten mogelijkerwijs het hele pad naar openssl.exe opgeven.


1
openssl req -newkey rsa:1024 -x509 -sha256 -days 365 -out certificate.cert -keyout certificate.key -nodes -subj "/C=US/ST=WI/L=YourCity/O=YourOrganization/OU=YourOrganizationUnit/CN=mydevice/emailAddress=admin@example.com"

Overigens kun je hier ook een IP adres opgeven in plaats van een domein- of netwerknaam.

Aanvullende Informatie en Opties

Hoe ziet een CERT of KEY eruit?

Om een idee te geven wat je in beide bestanden kunt vinden (te bekijken met een teksteditor).

CERT voorbeeld:


-----BEGIN CERTIFICATE-----
MIICvTCCAiYCCQCzQkfaZJq5GzANBgkqhkiG9w0BAQsFADCBojELMAkGA1UEBhMC
VVMxCzAJBgNVBAgMAldJMREwDwYDVQQHDAhZb3VyQ2l0eTEZMBcGA1UECgwQWW91
ck9yZ2FuaXphdGlvbjEdMBsGA1UECwwUWW91ck9yZ2FuaXphdGlvblVuaXQxFzAV
BgNVBAMMDm15ZGV2aWNlLmxvY2FsMSAwHgYJKoZIhvcNAQkBFhFhZG1pbkBleGFt
cGxlLmNvbTAeFw0yMDEyMTIxMzUwMzFaFw0yMTEyMTIxMzUwMzFaMIGiMQswCQYD
VQQGEwJVUzELMAkGA1UECAwCV0kxETAPBgNVBAcMCFlvdXJDaXR5MRkwFwYDVQQK
DBBZb3VyT3JnYW5pemF0aW9uMR0wGwYDVQQLDBRZb3VyT3JnYW5pemF0aW9uVW5p
dDEXMBUGA1UEAwwObXlkZXZpY2UubG9jYWwxIDAeBgkqhkiG9w0BCQEWEWFkbWlu
QGV4YW1wbGUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCoVZX6WdHN
unlnjgAdplbOCoZQCBkoqGP+ryykcPErJ3/k1P14x5415etc0lvEjhSUt0W16STT
dhEcMnNiRkaGKv/qIBn2iNfpKQh0fabgK5skSsm+1A1PVT0hUaoKiCJXK/zGn+tY
bB5ZN37gpwLnaTiiN3jfcDeDfybFRUbF8QIDAQABMA0GCSqGSIb3DQEBCwUAA4GB
AHW4FBOnrGTe/diZoUz/sflkkOygu+8wQ78ofaPdGRihVB48A0g76UcKw0kAxuw4
NpudOI3TkEylJNo5BhpTF9su7RiRSv/VDj6GUiLJhB9kOPzBw6vA7JjycksCrmF9
Gs/oaOfSo//lpYmZTovPdrl0rCwSHbLH5KqF+35Ac3D6
-----END CERTIFICATE-----

KEY voorbeeld:


-----BEGIN PRIVATE KEY-----
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAKhVlfpZ0c26eWeO
AB2mVs4KhlAIGSioY/6vLKRw8Ssnf+TU/XjHnjXl61zSW8SOFJS3RbXpJNN2ERwy
c2JGRoYq/+ogGfaI1+kpCHR9puArmyRKyb7UDU9VPSFRqgqIIlcr/Maf61hsHlk3
fuCnAudpOKI3eN9wN4N/JsVFRsXxAgMBAAECgYApFsMGGfiRTAwoT8wNcLXNk1oX
nPJvLzNBTocKGJt1mi2osKiyW59trpKV1K8bukahyl6UubUIfNBOXq41dcvuvKGt
PzdZjB5bS8WMW2pQTvMZslASasl/iq1b42gDW9ZjpFlSDwsxIgeRlXaRnXhAbxfS
SGAHPQ9/pg4DoHlNsQJBANOSehNjdMUjej0XVYdIBc9SK9vOa3IE68JYXl6vG54B
gt0zvzaycM6r/Fsz2nRhVutbb3EiPPATxXkWfh85+LUCQQDLrsOOFm7C7BXIau8I
swBMpMDZNp8D7700LGXdCqsADm8oL8cW0Z5ZiOaxoGo7XvIKWa3+peNHfkKJIjC8
k0nNAkBBSsXzr9C8eftiWQ4jBp4MYh544hYUhOJBAsZ0z/Nk6rB5FVwgRCc+EKN7
feAf5F5PmdMlhdxqdp+Ng9x+RIS1AkEAobHkptjiJzX6ePeDOXm5BB9KxWWaSSq6
HkAcwaSlac8LqXB8cX4JYnTPBzYc/3L5XQQin+SbkHcIZQtSe3HGBQJBAM797OT1
u28IWQXaf8BQJfCEtCs7JXi7tQeHd5EeiypPcxD01A8uigZKNRTUdHiW+NO8oax9
EB1pe2EynfqY1EA=
-----END PRIVATE KEY-----

Optioneel: Verificatie van het Certificaat (CERT en KEY)

In OpenSSL, kan men de gegenereerde bestanden verifiëren, en wel als volgt voor het CERT bestand:


OpenSSL> x509 -in certificate.cert -text -noout

OpenSSL> x509 -in certificate.cert -text -noout
Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number: 14460480843101545521 (0xc8adf2b63e68a431)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, ST=WI, L=Yourcity, O=YourOrganization, OU=YourOrganizationUnit, CN=mydevice/emailAddress=admin@example.com
        Validity
            Not Before: Dec 12 13:45:17 2020 GMT
            Not After : Dec 12 13:45:17 2021 GMT
        Subject: C=US, ST=WI, L=Yourcity, O=YourOrganization, OU=YourOrganizationUnit, CN=mydevice/emailAddress=admin@example.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (1024 bit)
                Modulus:
                    00:d3:68:fe:f3:eb:e7:50:8f:45:77:c9:97:82:42:
                    71:6a:c7:a0:82:c9:f3:ef:ed:74:94:40:d0:8f:64:
                    be:a0:63:c8:a8:e5:fb:8d:ff:e3:2a:9a:92:2b:50:
                    ba:8d:21:2c:e7:1a:ff:10:5a:78:40:64:ea:7f:fb:
                    07:7a:e0:5f:f6:47:45:72:91:96:5f:a4:da:22:69:
                    55:86:90:2e:39:2f:47:e6:d6:86:3d:21:dc:10:68:
                    35:32:90:e5:49:98:79:85:30:90:d4:02:60:ac:90:
                    77:cc:d9:61:a5:3e:c3:3f:85:b5:68:16:c8:33:41:
                    7c:bb:0b:b4:8e:55:7b:d0:c3
                Exponent: 65537 (0x10001)
    Signature Algorithm: sha256WithRSAEncryption
         19:6a:73:24:df:3e:e5:82:0b:24:97:50:4b:25:28:de:88:83:
         47:b0:86:ec:56:18:f0:f3:77:75:e5:92:12:f8:66:f3:91:af:
         7d:89:2d:a6:4d:81:ac:6a:d3:4a:c6:ab:6c:c4:90:8f:8d:4c:
         93:af:bc:75:ac:ee:c0:6b:12:48:3d:30:71:32:f5:01:c2:ce:
         92:bb:c9:50:e9:b6:44:4c:fe:c1:4e:f3:90:11:36:91:a2:31:
         ad:77:c6:e7:20:57:27:1e:32:02:f5:ff:63:49:53:b7:c8:0e:
         11:ce:09:d1:00:61:5b:1a:1f:f6:ab:14:1c:d1:da:00:16:4d:
         08:4e

En met dit commando voor het KEY bestand:


OpenSSL> rsa -in certificate.key -check

OpenSSL> rsa -in certificate.key -check
RSA key ok
writing RSA key
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDTaP7z6+dQj0V3yZeCQnFqx6CCyfPv7XSUQNCPZL6gY8io5fuN
/+MqmpIrULqNISznGv8QWnhAZOp/+wd64F/2R0VykZZfpNoiaVWGkC45L0fm1oY9
IdwQaDUykOVJmHmFMJDUAmCskHfM2WGlPsM/hbVoFsgzQXy7C7SOVXvQwwIDAQAB
AoGARrDDH5jwHfXqSqWz7bB98DCUMWeKE94Yr0IE+w262DLFdASC2vaHZUWOPsGd
v3cqZpSWWUeHEjEsYGL2G1ZPf5S1Np1WGKoI//Xh2TzJLmWRM+A4G3n7FzBOT5ji
qNMFI8k+DyqPkerM5C/8pOiBUzyyCNxc7NIQJ5QaannJZpECQQDtOQgMKdnuGPj5
HRWzT0dl6u3c3BZnR+51jBRV0fcb24cIOMaP6WwxQs0G5M34wnZmyKBhedswwkN2
4NLBWAxtAkEA5CTo2B/Xap1wMqKSGjhSUXCsyrP9uU9ztK5+MkOkeZqGh3X6JCQR
34NT1EDszTtE1VAzCb8J1LfUxw9T4viz7wJBAL53qCp7/+rYSi9aVu4dnWoLcuh+
Hc7XRnNDAaDWcN4BKS5Ex8kM1j3HMO90DpzJJl/ofj1FpeREVf7BDPcIRxECQQCh
HyACYpp0BTRTzlR4iAY61eRyU6OA2AfTNtiRDwx9hRA1YrCCDadBvzHY2PFkD9OR
As7It05uGFYBL2YDCbmpAkAXrXR8TKbhIGY/HCYSHJZHEzIZkN10cY0I0ndN7yxK
+KcvPk0F58H+cui7rDuEH343GBNEUhU8tst2WQGxoSkD
-----END RSA PRIVATE KEY-----

Aanmaken van andere bestandsformaten

PEM (2) bestanden

Mocht jouw systeem PEM bestanden vereisen, dan is dat eenvoudig voor elkaar te krijgen omdat de eerder gemaakte CERT en KEY bestanden eigenlijk al in het correcte formaat staan.

Als jouw server twee bestanden verwacht, dan hoef je eigenlijk alleen maar de bestandsextensie “.pem” toe te voegen en je bent klaar.

Mocht jouw bestand binair zijn (als je het opent in een teksteditor dan begint de tekst niet met “—–BEGIN” zoals je in de voorbeelden hierboven zag), dan kun je dit omzetten met behulp van OpenSSL direct van de command-line (dus niet uitvoeren in OpenSSL zelf):


openssl x509 -inform DER -outform PEM -in server.crt -out server.crt.pem

PEM – CERT en KEY gecombineerd in een enkel bestand

Het kan ook zijn dat jouw server een enkel bestand verwacht, waarin CERT en KEY zijn gecombineerd. Ook dit is eenvoudig, door simpelweg de inhoud van beide bestanden in een enkel bestand te plakken, of voor Mac en Linux gebruikers met:


cat server.crt server.key > certificatecombined.pem

PKCS#12 of PFX bestand

Ik heb deze zelf nog niet nodig gehad, maar ongebruikelijk zijn ze niet.
OpenSSL kan ook dit bestand voor je aanmaken. Dit voeren we weer uit op de command-line en dus NIET in OpenSSL.

PKCS#12 of PFX ? 

PKCS#12 en PFX bestanden zijn hetzelfde, alleen dan gewoon met een andere extensie.
Het PFX formaat is een binair formaat waarin zowel server certificaat (CERT), eventuele intermediate certificaten, de private key (KEY) samen in 1 bestand zaan welke versleuteld is.
PFX gebruiken vaak de extensie .pfx of .p12..

Vergeet het wachtwoord niet!
 

Als je onderstaand commando uitvoert, dan zal het vragen om een wachtwoord – vergeet dit wachtwoord niet want je hebt het absoluut later nodig!


openssl pkcs12 -export -out certificate.pfx -inkey certificate.key -in certificate.cert

Als je het resultaat opent in een teksteditor, dan ziet het eruit als Chinees.

 

 

 

 

Ondersteun ons ...


Jouw ondersteuning wordt zeer gewaardeerd, en hoeft zelfs niets te kosten. Bijvoorbeeld door links naar ons te delen op social media, of andere websites.

Andere vormen kunnen ook gratis zijn (b.v. shoppen op Amazon).
Alle opbrengsten worden gebruikt voor web-hosting kosten, project hardware en software, koffie, etc.

Hartelijk dank voor wie al heeft bijgedragen!
Het is altijd geweldig om te zien hoe men mijn artikeltjes en applicaties weet te waarderen.

Merk op dat het klikken op affiliate links een kleine commissie voor ons kunnen genereren - dit wordt zeer gewaardeerd.

Reacties


Er zijn 4 reacties welke je hieronder kunt lezen.
Je kunt jouw eigen opmerkingen plaatsen m.b.v. dit formulier, of een reactie op een bestaande opmerking plaatsen door op de "Beantwoorden" knop te klikken.

  • 15 jun 2022 - 11:01 - Arjen Reactie Link

    Beste Hans, door een klant werd ik op deze site gewezen. Ik mag opmerken dat er een grove fout staat wat betreft de PRIVATE key. Je stelt hier dat de PRIVATE key openbaar gemaakt moet worden om berichten te ontsleutelen maar dat is pertinent niet waar. Het certificaat heeft een PUBLIC key in zich wat een andere partij gebruikt om een verzoek mee te versleutelen en alleen de houder van de PRIVATE key kan dat bericht ontsleutelen. Zou je de tekst willen aanpassen? Het is fijn dat er documentatie te vinden is maar niet wanneer het verwarrend wordt. 

    Groeten,

    Arjen

    Beantwoorden

    Arjen

    • 15 jun 2022 - 12:15 - Hans - Auteur: Reactie Link

      Hoi Arjen,

      Ai dat is inderdaad flink fout … ik heb geprobeerd de tekst aan te passen …
      Het is al weer even geleden dat ik hiermee bezig was, dus ik hoop dat de correcties correct zijn.

      Dank je wel voor het attenderen op deze blunder!! 

      Beantwoorden

      Hans

  • 4 feb 2024 - 15:58 - Evert Reactie Link

    In bovenstaand stuk staat beschreven hoe je een certificaat.key en certificaat.crt gemaakt kan worden. Dat is inderdaad gelukt.

    Maar hoe maak je met openssl een Ca_bundle certificaat?

    Dat bestand is nodig voor apache windows server. Is het mogelijk dat je deze ca_bundle.crt uberhaupt zelf te maken?

    Beantwoorden

    Evert

    • 5 feb 2024 - 10:26 - Hans - Auteur: Reactie Link

      Hoi Evert,

      je kunt een zogenaamde self-signed certificaat maken voor een webserver – maar elke browser die je gebruikt gaat daar over zeuren (iets met dood, verderf en het einde van de wereld als je toch naar deze server wilt gaan). 

      Voor een lokaal netwerk (intranet) zou je dit kunnen gebruiken, mits de gebruikers bekend zijn met de situatie.

      Uit jouw vraag begrijp ik dat je echt zelf een CA wilt maken, wat gebruikelijk is voor bijvoobeeld publiekelijke toegang (internet). Dit kun je (naar mijn werten) niet zelf maken omdat je een signing authority nodig hebt. Een goed alternatief (er vanuit gaande dat je een domein of subdomein naam hebt) is gebruik maken van “Let’s Encrypt” (gratis legitieme SSL certificaten – ik gebruik deze ook voor mijn eigen websites).

      Beantwoorden

      Hans



Jouw Opmerking ...

Plaats hier geen grote bestanden (zoals source codes, log files of config files). Gebruik hiervoor het Forum.

Delen:
*
*
Laat me per email weten als er nieuwe reacties zijn.
       Je kunt jouw RSS reader gebruiken om reacties te volgen.


Tweaking4All gebruikt de gratis Gravatar dienst voor Avatar weergave.