Hoe u een zelfondertekend SSL-certificaat kunt uitgeven en ervoor kunt zorgen dat uw browser dit vertrouwt. OpenSSL: eenvoudige codering met openbare sleutels

Op verschillende platforms en apparaten, moeten ze vaak in verschillende formaten worden aangeboden. Windows-servers gebruiken bijvoorbeeld PFX-bestanden; Apache-servers hebben PEM-bestanden nodig met de extensie .crt of .cer. In dit artikel helpen we u de volgende problemen te begrijpen:

  • Wat zijn de formaten? SSL-certificaat ov?
  • Hoe zijn ze anders?
  • Hoe SSL-certificaten van het ene formaat naar het andere converteren?

Overzicht van SSL-certificaatformaten

PEM-certificaatformaat

P.E.M.– het meest populaire formaat onder certificeringscentra. PEM-certificaten kunnen de extensie hebben .pem, .crt, .cer en .key(privésleutelbestand). Het zijn ASCII-bestanden gecodeerd met behulp van het Base64-schema. Wanneer u een bestand in pem-indeling opent in teksteditor, je kunt zien dat de codetekst daarin begint met de tag “—— BEGIN CERTIFICATE ——” en eindigt met de tag “—— END CERTIFICATE ——“.

Apache en anderen vergelijkbare servers gebruik certificaten in PEM-formaat. Houd er rekening mee dat één bestand meerdere SSL-certificaten en zelfs een privésleutel onder elkaar kan bevatten. In dit geval wordt elk certificaat eerder van de andere gescheiden gespecificeerde labels BEGIN en EINDE. Om een ​​SSL-certificaat op Apache te installeren, moeten de certificaten en de privésleutel in de regel in verschillende bestanden staan.

DER-certificaatformaat

DER-formaat is een binair certificaattype in plaats van het PEM-formaat. De meest gebruikte bestandsextensie in PEM-formaat is .cer, maar soms kun je ook de bestandsextensie vinden .der. Om een ​​SSL-certificaat in PEM-formaat te onderscheiden van het DER-formaat, moet u het daarom in een teksteditor openen en de begin- en eindtags van het certificaat zoeken (BEGIN/END). DER SSL-certificaten worden doorgaans gebruikt op Java-platforms.

PKCS#7/P7B-certificaat

SSL-certificaten in het formaat PKCS#7 of P7B zijn bestanden die zijn opgeslagen in Base64 ASCII-indeling en de bestandsextensie hebben .p7b of .p7c. P7B-certificaten bevatten certificaatstarttags “—— BEGIN PKCS7 ——” en certificaateindtags “—— END PKCS7 ——“. Bestanden in P7B-indeling bevatten alleen uw SSL-certificaat en tussenliggende SSL-certificaten. De privésleutel wordt in een apart bestand geleverd. SSL-certificaten in PKCS#7/P7B-indeling ondersteunen de volgende platforms: Microsoft Windows en Java Tomcat.

PFX-certificaat (PKCS#12-indeling)

SSL-certificaatformaat PKCS#12 of, zoals het ook wel wordt genoemd, PFX-certificaat- een binair formaat, bij gebruik in één gecodeerd bestand worden niet alleen uw persoonlijke servercertificaat en tussencertificaten van de certificeringsinstantie opgeslagen, maar ook uw privé sleutel. PFX-bestanden hebben meestal de extensie .pfx of .p12. Meestal worden PFX-bestanden gebruikt Windows-servers om SSL-certificaatbestanden en uw privésleutel te importeren en exporteren.

SSL-certificaten converteren naar OpenSSL

Deze OpenSSL-opdrachten maken het mogelijk om certificaten en sleutels om te zetten in verschillende formaten. Om ze compatibel te maken met bepaalde typen servers of software. U moet bijvoorbeeld een normaal PEM-bestand dat met Apache werkt, converteren naar PFX-indeling (PKCS # 12) om het met Tomcat of IIS te kunnen gebruiken.

  • Converteer PEM naar DER

    openssl x509 -outform der -in certificaat.pem -uit certificaat.der

  • Converteer PEM naar P7B

    openssl crl2pkcs7 -nocrl -certfile certificaat.cer -out certificaat.p7b -certfile CACert.cer

  • Converteer PEM naar PFX

    openssl pkcs12 -export -out certificaat.pfx -inkey privateKey.key -in certificaat.crt -certfile CACert.crt

  • Converteer DER naar PEM

    openssl x509 -inform der -in certificaat.cer -uit certificaat.pem

  • Converteer P7B naar PEM

    openssl pkcs7 -print_certs -in certificaat.p7b -uit certificaat.cer

  • Converteer P7B naar PFX

    openssl pkcs7 -print_certs -in certificaat.p7b -uit certificaat.ceropenssl pkcs12 -export -in certificaat.cer -inkey privateKey.key -uit certificaat.pfx -certfile CACert.cer

  • Converteer PFX naar PEM

    openssl pkcs12 -in certificaat.pfx -uit certificaat.cer -nodes

Online SSL-certificaatconverter

Er zijn ook online programma's om SSL-certificaten van het ene formaat naar het andere te converteren. Zo kunnen wij u de SSL converter van SSLShopper aanbevelen.

Gebruik deze SSL-converter om SSL-certificaten te converteren verschillende formaten, zoals PEM, DER, P7B en PFX. Om de SSL-converter te gebruiken, selecteert u eenvoudigweg het certificaatbestand en het huidige type (dit wordt bepaald door het extensieformaat), selecteert u vervolgens het formaat waarnaar u het SSL-certificaat moet converteren en klikt u op de knop “Certificaat converteren”.

Houd er rekening mee dat, afhankelijk van het formaat waarnaar u het SSL-certificaat moet converteren, u verschillende uitvoerbestanden nodig heeft.

Converteer PEM naar DER

Om een ​​standaardcertificaat in PEM-formaat naar binair DER-formaat te converteren, heeft u alleen een SSL-certificaatbestand nodig. Meestal ontvangt u deze samen met tussencertificaten in het archief. In de regel bevat de naam de naam van uw domein.

Converteer PEM naar P7B / PKCS#7

Als u uw standaard SSL-certificaat moet omzetten naar een bestand in P7B / PKCS#7-formaat, kunt u naast het SSL-certificaat van uw domein ook bestanden met certificaatketens uploaden. We schreven meer in detail over wat een SSL-certificaatketen is in het artikel over CA-bundel.

Converteer PEM naar PFX / PKCS#12

Let op: voor conversie standaard formaat Voor een SSL-certificaat moet u nog een bestand toevoegen: uw privésleutel. De privésleutel is vertrouwelijke informatie, die alleen jij zou moeten hebben. Daarom sturen certificeringsinstanties het niet mee met uw certificaatbestanden.
De privésleutel wordt aangemaakt op het moment dat het CSR-verzoek wordt gegenereerd. Als u een CSR op uw server genereert, moet de sleutel daar automatisch op worden opgeslagen. Als u een CSR-verzoek aanmaakt in speciaal gereedschap op onze website (op de gelinkte pagina of bij het invullen van technische gegevens) wordt de sleutel aan u getoond aan het einde van het genereren van CSR (of het invoeren van technische gegevens), maar wordt niet opgeslagen in onze database. Daarom is het belangrijk dat je de private sleutel zelf opslaat.

Er zijn tal van situaties waarin u moet coderen specifiek bestand of map. Als gegevens bijvoorbeeld worden verzonden via open kanalen of opgeslagen externe media. Veel mensen (waaronder ikzelf) gebruiken truecrypt, maar het hoofddoel van dit programma is om met gecodeerde partities te werken, dus in dit geval is het niet erg goed.

OpenSSL is zeer geschikt voor dergelijke taken: een betrouwbare platformonafhankelijke oplossing. OpenSSL-ondersteuning verschillende algoritmen encryptie, en bovendien is het in veel gevallen standaard geïnstalleerd besturingssystemen, en installatie op de rest is niet moeilijk.

Hieronder vindt u de basisprincipes van het gebruik van symmetrische en asymmetrische encryptie in OpenSSL, evenals een aantal scripts die het vereenvoudigen asymmetrische encryptie met een eenmalige sleutel.

De eenvoudigste manier om gegevens te beschermen met OpenSSL is symmetrische codering. Met de volgende opdrachten wordt het bestand document.zip gecodeerd en gedecodeerd met behulp van AES-algoritme met een sleutellengte van 256 bits:

Openssl enc -aes-256-cbc -salt -in documenten.zip -uit documenten.enc
openssl enc -d -aes-256-cbc -in documenten.enc -uit documenten.zip

Het probleem met deze opdrachten kan zijn dat ze een wachtwoord vereisen. Er zijn situaties waarin dit ongewenst is. Bijvoorbeeld automatische back-up/versleuteling van gegevens volgens een schema, of als gegevens door de ene persoon worden versleuteld en door een andere persoon worden gedecodeerd.

Voor dergelijke gevallen is encryptie met publieke sleutels uitgevonden. Over het algemeen moet u een openbare en een privésleutel maken. Het eerste commando genereert de privésleutel private.pem, het tweede commando genereert de publieke sleutel public.pem:

Openssl genrsa -out private.pem -aes256 2048
openssl rsa -in private.pem -pubout -out publieke.pem

Als resultaat krijgt u een paar RSA-sleutels van 2048 bits lang. Helaas, binnen RSA-systeem De grootte van de gecodeerde gegevens wordt beperkt door de grootte van de sleutel, dus het zal niet mogelijk zijn om meer dan 2 KB aan gegevens te coderen. Er is een manier om dit te omzeilen: de informatie wordt eerst gecodeerd symmetrisch algoritme(vergelijkbaar met degene die hierboven is gebruikt) met behulp van een eenmalige sleutel. Deze eenmalige sleutel wordt vervolgens gecodeerd openbare sleutel. Tijdens de decodering wordt de eenmalige sleutel gedecodeerd met de privésleutel. Meer details hierover zijn al heel goed geschreven in een artikel op Habré.

Het volgende script helpt bij het automatiseren van de codering, waarvan u als uitvoer een eenmalige sleutel en gegevens (encrypt.sh) in gecodeerde vorm ontvangt:

BESTANDSNAAM="$1"
PUBLICKEY="$2"
SESSIONKEY="$3"
RESULTAAT = "$ 4"

# Genereer de willekeurige symmetrische sleutel
PASSIE=30
if [ -c /dev/urandom ] ; Dan
KEY=`head -c 30 /dev/urandom | openssl enc-base64`
anders
SLEUTEL=`openssl rand -base64 30`
fi
SLEUTEL exporteren

# Versleutel de symmetrische sleutel met behulp van de openbare sleutel
openssl rsautl -encrypt -inkey "$PUBLICKEY" -out "$SESSIONKEY" -pubin<$SLEUTEL
EOF

# Versleutel het bestand
openssl enc -aes-256-cbc -pass env:KEY -in "$FILENAME" -uit "$RESULT"

De volgende opdracht gebruikt de openbare sleutel public.pem om het bestand documenten.zip te coderen. Het genereert een gecodeerde eenmalige sleutel session.key en gecodeerde gegevensdocumenten.enc:

./encrypt.sh documenten.zip public.pem session.key documenten.enc

Decoderingsscript (decrypt.sh):

PRIVATEKEY="$1"
SESSIONKEY="$2"
ENCRYPTED="$3"
DECRYPTED="$4"

# Decodeer de symmetrische sleutel met behulp van de privésleutel
KEY=` openssl rsautl -decrypt -inkey "$PRIVATEKEY" -in "$SESSIONKEY" `
SLEUTEL exporteren

# Decodeer het bestand
openssl enc -aes-256-cbc -d -pass env:KEY -in "$ENCRYPTED" -out "$DECRYPTED"

De decoderingsopdracht maakt gebruik van de privésleutel private.pem en de eenmalige sleutel session.key om het bestand documenten.enc te decoderen. Er wordt een document.zip-bestand gegenereerd:

./decrypt.sh private.pem session.key documenten.enc documenten.zip

Zoals je kunt zien, is encryptie met openbare sleutel kan bijna net zo eenvoudig als symmetrisch zijn. Maar er is een nog eenvoudiger manier. Ik werd gevraagd dit bericht te schrijven door de SbF₅-blog. De auteur (ongetwijfeld meer ervaring met bash dan ik) schreef een script dat een map archiveert, codeert met een openbare sleutel en een ander script genereert dat alles bevat wat nodig is: een eenmalige sleutel, gegevens en de daadwerkelijke opdrachten voor decodering. Bovendien kan het script een RSA-sleutelpaar voor u genereren:

./encrypt-file.sh -keys publiek.pem privé.pem
./encrypt-file.sh map public.pem > decrypt-folder.sh
chmod +x decrypt-map.sh
./decrypt-folder.sh private.pem > map.tar

In dit voorbeeld hebben we eerst een sleutelpaar gegenereerd. Daarna map map werd gecodeerd in het decrypt-folder.sh-script en vervolgens gedecodeerd in het map.tar-archief. Een mogelijk nadeel van deze methode is dat de gegevens in decrypt-folder.sh worden opgeslagen in het BASE64-formaat, waardoor de omvang ervan toeneemt.

UPD Verplaatst naar de informatiebeveiligingsblog.

Alle grote sites zijn al lang overgestapt op het https-protocol. De trend zet zich voort en veel van onze klanten willen dat hun site via een veilig protocol werkt. En of de backend daarvoor wordt ontwikkeld mobiele applicatie, dan is https vereist. Apple vereist bijvoorbeeld dat de server communiceert met de applicatie die beveiligd protocol. Deze eis is sinds eind 2016 ingevoerd.

In de productie zijn er geen problemen met certificaten. Meestal biedt de hostingprovider dit aan gebruiksvriendelijke interface om het certificaat te koppelen. Ook het afgeven van een certificaat is niet moeilijk. Maar tijdens het werken aan een project moet elke ontwikkelaar zelf voor het certificaat zorgen.
In dit artikel laat ik u zien hoe u een zelfondertekend SSL-certificaat kunt uitgeven en ervoor kunt zorgen dat de browser dit vertrouwt.

Om een ​​certificaat af te geven voor uw lokaal domein, heeft u een rootcertificaat nodig. Alle andere certificaten worden op basis daarvan afgegeven. Ja, voor elk nieuw topleveldomein dient u een eigen certificaat uit te geven. Het verkrijgen van een rootcertificaat is vrij eenvoudig.
Laten we eerst een privésleutel genereren:

Openssl genrsa -out rootCA.key 2048
Dan het certificaat zelf:

Openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem
Je zult naar binnen moeten gaan land, stad, bedrijf enz. Als resultaat krijgen we twee bestanden: rootCA.sleutel En rootCA.pem

Laten we verder gaan met het belangrijkste: het uitgeven van een zelfondertekend certificaat. Net als bij root zijn dit twee opdrachten. Maar de commando's zullen aanzienlijk meer parameters hebben. En we hebben een hulppersoon nodig configuratiebestand. Daarom regelen we dit allemaal in de vorm van een bash-script maak_certificaat_voor_domein.sh

De eerste parameter is vereist, we zullen een korte instructie voor de gebruiker weergeven.

If [ -z "$1" ] echo dan "Geef een subdomein op om een ​​certificaat voor te maken";
echo "bijvoorbeeld mijnsite.localhost" exit; fi

Laten we een nieuwe privésleutel maken als deze niet bestaat, of een bestaande sleutel gebruiken:
If [ -f apparaat.sleutel ]; dan KEY_OPT="-key" anders KEY_OPT="-keyout" fi Laten we de gebruiker om de domeinnaam vragen. Laten we de mogelijkheid toevoegen om “ gemeenschappelijke naam

” (het wordt gebruikt bij het genereren van een certificaat):
DOMAIN=$1 COMMON_NAME=$(2:-$1) Om te voorkomen dat je vragen beantwoordt interactieve modus

, laten we een regel maken met de antwoorden. En stel de geldigheidsduur van het certificaat in:
SUBJECT="/C=CA/ST=Geen/L=NB/O=Geen/CN=$COMMON_NAME" NUM_OF_DAYS=999 De variabele SUBJECT vermeldt alle vragen die bij het maken zijn gesteld (root-certificaat, stad, land bedrijf

enz). Alle waarden behalve CN kunnen naar eigen inzicht worden gewijzigd.
Openssl req -new -newkey rsa:2048 -sha256 -nodes $KEY_OPT device.key -subj "$SUBJECT" -out device.csr Een certificaatbestand genereren . Hiervoor hebben we een hulpbestand met instellingen nodig. In dit bestand schrijven we de domeinen waarvoor het certificaat en enkele andere instellingen geldig zijn. Laten we hem bellen v3.ext . Houd er rekening mee dat dit apart bestand

, geen onderdeel van een bash-script.
AuthorityKeyIdentifier=keyid,uitgever basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment subjectAltName = @alt_names DNS.1 = %%DOMAIN%% DNS.2 = *.%%DOMAIN%% . Hiervoor hebben we een hulpbestand met instellingen nodig. In dit bestand schrijven we de domeinen waarvoor het certificaat en enkele andere instellingen geldig zijn. Laten we hem bellen

Ja dat klopt, ons certificaat is geldig voor het hoofddomein, maar ook voor alle subdomeinen. Sla bovenstaande regels op in een bestand . Hiervoor hebben we een hulpbestand met instellingen nodig. In dit bestand schrijven we de domeinen waarvoor het certificaat en enkele andere instellingen geldig zijn. Laten we hem bellen Laten we terugkeren naar ons bash-script. Gebaseerd op ondersteuningsbestand creëren tijdelijk bestand

met vermelding van ons domein:
Cat v3.ext | sed s/%%DOMAIN%%/$COMMON_NAME/g > /tmp/__v3.ext

Wij geven een certificaat af:
Openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days $NUM_OF_DAYS -sha256 -extfile /tmp/__v3.ext

Hernoem het certificaat en verwijder het tijdelijke bestand:
Mv device.csr $DOMAIN.csr cp device.crt $DOMAIN.crt # verwijder tijdelijk bestand rm -f device.crt;

Het script is klaar. Laten we het lanceren:
./create_certificate_for_domain.sh mijnsite.localhost We krijgen twee bestanden: En mijnsite.localhost.crt

Nu moet je specificeren webserver paden naar deze bestanden. Als we nginx als voorbeeld gebruiken, ziet het er als volgt uit:

We starten de browser, openen https://mysite.localhost en zien:

De browser vertrouwt dit certificaat niet. Wat moet ik doen?

We moeten het certificaat dat we hebben uitgegeven als vertrouwd markeren. Op Linux (Ubuntu en waarschijnlijk andere op Debian gebaseerde distributies) kan dit via de browser zelf worden gedaan. Op Mac OS X kan dit worden gedaan via de toepassing Keychain Access. Start de applicatie en sleep het bestand naar het venster We krijgen twee bestanden:. Open vervolgens het toegevoegde bestand en selecteer Altijd vertrouwen:

Vernieuw de pagina in de browser en:

Succes! De browser vertrouwt ons certificaat.

Deel het in de reacties, gebruik jij https voor lokale ontwikkeling?

Maxim Kovtun,
Hoofd van de ontwikkelingsafdeling

Nadat u een certificaat heeft aangeschaft, kunt u deze downloaden in de " Algemene diensten". Als u een certificaat op uw server installeert, gebruik dan de installatievoorbeelden die hier worden weergegeven.

installatie op hosting van .masterhost

Als u een certificaat moet installeren op een domein dat wordt gehost op onze virtuele hosting, dan kan dit op twee manieren:

  • SNI (gratis):
    Serviceboom - Domein - SSL-ondersteuning - Toevoegen.
  • Dedicated IP (140 roebel per maand. Meestal vereist om met sommige betalingssystemen te werken):
    Serviceboom - Domein - Toegewezen IP\SSL - Toevoegen. Selecteer een certificaat in het vervolgkeuzemenu.

* Volg hieronder om het certificaat bij te werken, bijvoorbeeld na de verlenging soortgelijke acties: Serviceboom - Domein - SSL-ondersteuning of toegewezen IP\SSL(afhankelijk van de installatiemethode) - Wijzigen.

Het genereren (samenvoegen) van een certificaat voor Windows-software

Om het resulterende certificaat op software in Windows te installeren, moet het certificaatbestand zowel het certificaat zelf als de persoonlijke sleutel bevatten. Die. U dient het certificaat dat u van ons heeft ontvangen te combineren met uw privésleutelbestand.

Je kunt het als volgt doen:

openssl pkcs12 -export -out certificaat.pfx -inkey privateKey.key -in certificaat.crt

certificaat.pfx - de naam van het certificaat dat u ontvangt als gevolg van de fusie;

privateKey.key - privésleutel;

certificaat.crt - het certificaat zelf dat we aan u hebben uitgegeven.

pache

  • Kopieer de SSL-certificaatbestanden naar uw server.
  • Dan moet je het bestand vinden Apache-configuraties voor bewerken.

    Meestal worden dergelijke configuratiebestanden opgeslagen in /etc/httpd. in de meeste gevallen heet het hoofdconfiguratiebestand httpd.conf. Maar in sommige gevallen blokkeert het bevindt zich mogelijk onderaan het httpd.conf-bestand. Soms kun je blokken vinden zoals afzonderlijk onder een map, bijvoorbeeld /etc/httpd/vhosts.d/ of /etc/httpd/sites/, of in een bestand met de naam ssl.conf.

    Voordat u een bestand in een teksteditor opent, moet u ervoor zorgen dat er blokken zijn die Apache-instellingen bevatten.

  • Installeer vervolgens SSL-blokken om de configuratie in te stellen.

    Als u wilt dat uw site zowel met een beveiligde als met een onbeveiligde verbinding werkt, heeft u voor elke verbinding een virtuele host nodig. Om dit te doen, moet u een kopie maken van een bestaand onbeveiligd bestand virtuele gastheer en maak deze aan voor een SSL-verbinding zoals hieronder beschreven in paragraaf 4.

  • Maak vervolgens blokken om een ​​SSL-verbinding tot stand te brengen.

    Hieronder ziet u een heel eenvoudig voorbeeld van een virtuele host voor een SSL-verbinding. De vetgedrukte delen moeten aan de SSL-configuratie worden toegevoegd:

    DocumentRoot /var/www/html2 Servernaam www.uwdomein.com SSLEngine op SSLCertificateFile /pad/naar/uw_domeinnaam.crt SSLCertificateKeyFile /pad/naar/uw_private.key SSLCertificateChainFile /pad/naar/root.crt Corrigeer de bestandsnamen zodat deze overeenkomen met de certificaatbestanden:
    • SSLCertificateFile - uw certificaatbestand (bijvoorbeeld: uw_domeinnaam.crt).
    • SSLCertificateKeyFile - het sleutelbestand dat is gemaakt bij het genereren van de CSR.
    • SSLCertificateChainFile - basiscertificaatbestand.
  • Controleer nu uw Apache-configuratie voordat u opnieuw opstart. Het is altijd het beste om uw Apache-configuratiebestanden op fouten te controleren voordat u opnieuw opstart. Omdat Apache niet opnieuw zal starten als de configuratiebestanden syntaxisfouten
  • . Gebruik hiervoor het volgende commando: apachectl configtest

Nu kunt u Apache opnieuw opstarten.

  • Ginx

    Kopieer de certificaatbestanden naar de server.

  • Kopieer uw certificaat (uw_domeinnaam.crt) en rootcertificaat (root.crt) samen met het .key-bestand dat u heeft gegenereerd bij het maken van de CSR-aanvraag naar de directory op uw server waar u het certificaat gaat installeren. Om de veiligheid te garanderen, slaat u bestanden op als alleen-lezen.

    Verbind het certificaat met het rootcertificaat.

    U moet het certificaatbestand combineren met het hoofdcertificaatbestand in één enkel .pem-bestand door de volgende opdracht uit te voeren:
  • cat root.crt >> uw_domeinnaam.crt Wijzig het virtuele bestand.

    Nginx-host onbeveiligde verbinding en plak onder het origineel. Voeg daarna de onderstaande regels toe vetgedrukt:

    server ( luister 443; ssl aan; ssl_certificaat /etc/ssl/uw_domeinnaam.crt; (of .pem) ssl_certificate_key /etc/ssl/uw_domeinnaam.key; servernaam uw.domein.com; access_log /var/log/nginx/nginx. vhost.access.log; error_log /var/log/nginx/nginx.vhost.error.log; locatie / ( root /home/www/public_html/uw.domein.com/public/; index index.html; ) ) Bestandsnamen instellen:
    • ssl_certificate - een bestand met de hoofd- en rootcertificaten (stap 2).
    • ssl_certificate_key - bestand met de sleutel die is gegenereerd bij het maken van de CSR.
  • Start Nginx opnieuw.

    Voer de volgende opdracht in om Nginx opnieuw te starten:

    sudo /etc/init.d/nginx opnieuw opstarten

xchange 2010

  • Kopieer uw certificaat naar de Exchange-server.
  • Start vervolgens de Exchange Management Console op deze manier: Start > Programma's > Microsoft Exchange 2010 > Exchange-beheerconsole.
  • Klik nu op "Databases beheren" en vervolgens op "Serverconfiguratie".
  • Selecteer vervolgens uw SSL-certificaat in het menu in het midden van het venster en klik vervolgens op "Voltooi Pending Request" in het menu "Acties".
  • Open uw certificaatbestand en klik vervolgens op Openen > Voltooien

    Exchange 2010 geeft vrij vaak een foutmelding weer die begint met de zin "De brongegevens zijn beschadigd of niet correct Base64-gecodeerd." Negeer deze fout.

  • Ga vervolgens terug naar de Exchange Management Console en klik op "Assign Services to Certificate" om het certificaat te gaan gebruiken.
  • Selecteer uw server uit de lijst en klik op "Volgende".
  • Selecteer nu de services die door het certificaat moeten worden beschermd en klik op Volgende > Toewijzen > Voltooien. Uw certificaat is nu geïnstalleerd en klaar voor gebruik op Exchange.

Tegenwoordig is het heel gebruikelijk om de beveiliging te verbeteren netwerkverbindingen of gebruik eenvoudig SSL-certificaten voor authenticatie. Een van de meest populaire gratis software voor het maken van certificaten is OpenSSL. Dit is een hulpprogramma opdrachtregel, waarmee u kunt creëren verschillende soorten certificaten, zoals PKI of HTTPS.

In dit artikel zullen we kijken naar wat certificaten zijn, wat ze zijn, en we zullen de creatie van een OpenSSL-certificaat in detail analyseren. Bovendien zullen we elke fase overwegen, zodat u gemakkelijker kunt begrijpen wat er gebeurt en hoe.

Ik denk dat we vanaf het allereerste begin moeten beginnen. Met certificaten kunt u allereerst een persoon identificeren en bevestigen dat u bent wie u zegt dat u bent. En het werkt als volgt: er zijn twee sleutels: privé en openbaar. Je kunt een bericht versleutelen met de publieke sleutel, maar om het te ontsleutelen heb je alleen de privésleutel nodig. Als u niet over de privésleutel beschikt, kunt u het gecodeerde bericht eenvoudigweg niet ontsleutelen. In feite kan iedereen een bericht versleutelen, maar alleen de eigenaar van de privé (geheime) sleutel kan het ontsleutelen.

Als u een verzonden bericht kunt ontsleutelen dat is gecodeerd met uw openbare sleutel, dan bent u het zelf. Sleutels werken alleen in paren en u kunt niets ontsleutelen met een andere sleutel. Maar er blijft nog één punt over. Hoe kunt u vaststellen dat deze publieke sleutel van u is, bijvoorbeeld dat deze bij uw domein hoort? Het is eenvoudig: het enige wat u hoeft te doen is iemand van een gerenommeerde bron zoals Comodo of LetsEncrypt uw ​​sleutel laten ondertekenen. Dit zijn de zogenaamde certificeringsinstanties.

In deze tutorial behandelen we dit soort sleutels:

  • .pem, .crt, .cer- een kant-en-klaar certificaat ondertekend door een certificeringsinstantie, de extensies zijn verschillend, maar betekenen hetzelfde. Om het heel simpel te zeggen: een certificaat is een ondertekende publieke sleutel, plus een beetje informatie over uw bedrijf;
  • .sleutel- privé- of publieke sleutel;
  • .mvo- een, dit bestand bevat uw openbare sleutel plus informatie over het bedrijf en het domein dat u heeft opgegeven.

Laten we nu eens kijken hoe u een openssl-certificaat kunt maken, hoe u het kunt ondertekenen en wat u hiervoor moet doen. Het genereren van openssl-sleutels is een vrij eenvoudige taak als je het eenmaal onder de knie hebt.

Een privésleutel aanmaken en een ondertekeningsverzoek indienen

U hoeft de certificaten niet te ondertekenen met een CA; u kunt ze zelf ondertekenen, maar daarover later meer. Je zult sowieso het hele proces moeten doorlopen. Laten we eerst eens kijken hoe u een geheel nieuwe privésleutel kunt maken en deze kunt specificeren noodzakelijke informatie. Dit is de CN waar de jouwe moet worden aangegeven domeinnaam, waarvoor u het certificaat gaat gebruiken, kunt u ook aangeven aanvullende informatie over uw bedrijf, adres en organisatie, maar dit hoeft niet meer.

Om een ​​privésleutel en een ondertekeningsverzoek voor een openbare sleutel te maken, voert u de volgende opdracht uit:

openssl req -newkey rsa:2048 -nodes -keyout domein.key -out domein.csr

De optie -newkey specificeert dat er een nieuw sleutelpaar moet worden aangemaakt, en in de parameters geven we het rsa-type en de complexiteit van 2048 bytes op. De optie -nodes geeft aan dat u de sleutel niet hoeft te versleutelen, de optie -new geeft aan dat u een csr-verzoek moet maken. Als u al een privésleutel heeft, kunt u hiervoor een csr-verzoek maken met het volgende commando:

openssl req -sleutel domein.sleutel -nieuw -uit domein.csr

Tijdens het aanmaken dient u alle benodigde gegevens voor de mvo aan te leveren, dit betreft primair het domein en de organisatie. U kunt afzonderlijk een privésleutel aanmaken:

openssl genrsa -des3 -out domein.sleutel 2048

Bovendien kunt u een CSR-verzoek maken op basis van een reeds bestaand certificaat en privésleutel, dan hoeft u de informatie niet in te voeren, deze wordt verkregen uit het certificaat:

openssl x509 -in domein.crt -signkey domein.key -x509toreq -uit domein.csr

De optie -x509toreq geeft aan dat een certificaat voor X509 moet worden gebruikt om de CSR te verkrijgen. X509 zijn zelfondertekende certificaten. Meestal wordt een certificaat ondertekend door een ander certificaat, maar dit certificaat is door zichzelf ondertekend. Als u een certificaat van een CA heeft ontvangen, is deze parameter niet nodig.

OpenSSL-certificaten ondertekenen

Stel dat u een privésleutel en een handtekeningverzoek heeft, wat in feite een openbare sleutel is. Nu moet u het ondertekenen om een ​​bruikbaar certificaat te krijgen. Er zijn verschillende opties hier. U kunt een CSR-bestand ter ondertekening naar een certificeringsinstantie sturen, bijvoorbeeld LetsEncrypt. U kunt het certificaat ondertekenen met dezelfde sleutel waarmee het is gemaakt, en de derde optie is om uw eigen certificeringsinstantie te creëren.

Ik zal de eerste methode niet overwegen. Alles is hier eenvoudig. Gebruik het serviceprogramma of vul het webformulier in en ontvang een kant-en-klaar certificaat. De tweede optie is veel interessanter. Ons certificaat ondertekenen wij zelf, met de sleutel op basis waarvan het is aangemaakt:

openssl x509 -signkey domein.key -in domein.csr -req -dagen 365 -uit domein.crt

Met behulp van de parameter -days geven we aan dat het certificaat 365 dagen geldig is, dat wil zeggen een jaar lang. U kunt alles in één opdracht combineren en in één keer een privésleutel, csr en ondertekend certificaat maken:

openssl req -newkey rsa:2048 -nodes -keyout domein.sleutel
-x509 -dagen 365 -uit domein.crt

Of maak een zelfondertekend openssl-certificaat van een bestaande privésleutel zonder csr:

openssl req -sleutel domein.sleutel -nieuw -x509 -dagen 365 -uit domein.crt

De optie -new zegt dat er mvo-informatie van de gebruiker moet worden opgevraagd. Om ervoor te zorgen dat de browser de sleutel vertrouwt, moet u hetzelfde certificaat in de lijst met vertrouwde certificaat importeren. Laten we nu eens kijken naar de derde manier om een ​​OpenSSL-certificaat te maken: onderteken het met uw eigen CA, een certificeringsinstantie.

Nu denk je dat dit zoiets ingewikkelds is, toch? Maar nee, dit is een gewone map met daarin een met een wachtwoord beveiligde privésleutel waarmee we alle andere sleutels zullen ondertekenen. A open paar deze sleutel moet worden toegevoegd aan alle browsers die deze zullen vertrouwen.

Over het algemeen bevindt het certificeringscentrum in grote bedrijven zich in aparte computers, die niet eens met het netwerk zijn verbonden. Maar we plaatsen de map bijvoorbeeld in onze bestandssysteem/enz/:

openssl req -newkey rsa:4096 -x509 -extensions x509_ca -keyout /etc/ca/certs/ca.key -out /etc/ca/certs/ca.crt -dagen 3654

De parameter -extensions laadt de benodigde extensies om het CA-certificaat te maken. We hebben een lange geldigheidsduur vastgesteld: tien jaar. Het enige dat overblijft is het ondertekenen van ons eerder gemaakte certificaat:

openssl ca -extensies x509_client -in ~/domein.csr -uit ~/domein.crt

Klaar, ons certificaat is nu ondertekend. Maar om ervoor te zorgen dat browsers het kunnen vertrouwen, moet u het CA-certificaat toevoegen aan de lijst met vertrouwde browsers.

Bekijk certificaten

Certificaten worden opgeslagen in pem-formaat, wat betekent dat u ze niet kunt openen als tekstbestand en moeten gebruiken speciale elftallen om informatie over hen te bekijken. Kijk eerst naar de inhoud van het csr:

openssl req -text -noout -verify -in domein.csr

We bekijken de inhoud van het certificaat in platte tekstmodus:

openssl x509 -text -noout -in domein.crt

Wij controleren of het certificaat ook daadwerkelijk door de gewenste CA is ondertekend:

openssl verifieer -verbose -CAfile ca.crt domein.crt

Privésleutel bekijken:

openssl rsa -check -in domein.sleutel

Om te controleren of de private sleutel, het certificaat en de publieke sleutel aan elkaar gerelateerd zijn, kun je voor deze sleutels de md5-sommen berekenen; als de waarden overeenkomen, dan bestaat de mogelijkheid dat dit sleutels uit hetzelfde paar zijn:

openssl rsa -noout -modulus -in domein.sleutel | openssl md5
$ openssl x509 -noout -modulus -in domein.crt | openssl md5
$ openssl req -noout -modulus -in domein.csr | openssl md5