Apache SSL: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| (5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 22: | Zeile 22: | ||
<blockquote>openssl rsa -in server-rsa-key.pem > server-key.pem </blockquote> | <blockquote>openssl rsa -in server-rsa-key.pem > server-key.pem </blockquote> | ||
Nun verschiebt man das Zertifikat und den entschlüsselten Key in den /etc/apache/ssl Verzeichnis<br>In der Apache-Konfig bzw. der entsprechenden Seite /etc/apache/sites-enabled fügt man in der VirtualHost Konfiguration noch folgendes ein: | Nun verschiebt man das Zertifikat und den entschlüsselten Key in den /etc/apache/ssl Verzeichnis<br>In der Apache-Konfig bzw. der entsprechenden Seite /etc/apache/sites-enabled fügt man in der VirtualHost Konfiguration noch folgendes ein: | ||
<blockquote>SSLEngine on<br>SSLCertificateFile /etc/apache2/ssl/ | <blockquote>SSLEngine on<br>SSLCertificateFile /etc/apache2/ssl/cert.pem<br>SSLCertificateKeyFile /etc/apache2/ssl/cert.key </blockquote> | ||
Nach einem Neustart des Apache Servers sollte man nun HTTPS/SSL nutzen können | Nach einem Neustart des Apache Servers sollte man nun HTTPS/SSL nutzen können | ||
| Zeile 30: | Zeile 30: | ||
Man benötigt die "Active Directory Certificate Services" Rolle<br>Ruft dann die Webseite [http://Server_mit_AD_CA_Rolle/certsrv http://Server_mit_AD_CA_Rolle/certsrv] auf und klickt auf "Request a certificate"<br>Nun auf "advanced certificate request" und dann "Submit a certificate request by using a base-64-encoded CMC or PKCS #10 file, or submit a renewal request by using a base-64-encoded PKCS #7 file"<br>Danach fügt man den Request Inhalt ein.<br>WICHTIG: Darauf achten, dass bei Template Webserver steht und nicht User, da sonst der CN durch den aktuellen Benutzername ersetzt wird.<br> | Man benötigt die "Active Directory Certificate Services" Rolle<br>Ruft dann die Webseite [http://Server_mit_AD_CA_Rolle/certsrv http://Server_mit_AD_CA_Rolle/certsrv] auf und klickt auf "Request a certificate"<br>Nun auf "advanced certificate request" und dann "Submit a certificate request by using a base-64-encoded CMC or PKCS #10 file, or submit a renewal request by using a base-64-encoded PKCS #7 file"<br>Danach fügt man den Request Inhalt ein.<br>WICHTIG: Darauf achten, dass bei Template Webserver steht und nicht User, da sonst der CN durch den aktuellen Benutzername ersetzt wird.<br> | ||
== Zusammenführen (merge) von Zertifikat und Key == | |||
openssl pkcs12 -export -inkey cert.key -out cert.pfx < cert.cer | |||
== Konvertieren von pfx zu .cer und .key Zertifikat == | |||
openssl pkcs12 -in cert.pfx -out cert.cer -nokeys -nodes<br> | |||
openssl pkcs12 -in cert.pfx -out cert.key -nocerts -nodes | |||
== CA erstellen und ein Zertifikat signieren unter Linux == | |||
<b>CA erstellen</b><br> | |||
Pfade und Dateinamen der openssl.cnf entnehmen (/etc/pki/tls)<br> | |||
<code>openssl req -x509 -out /etc/pki/CA/cacert.pem -newkey rsa:2048 -keyout /etc/pki/CA/private/cakey.pem -days 3650 -nodes</code><br> | |||
<code>openssl rand -out /etc/pki/CA/private/.rand 1000</code><br> | |||
<code>touch /etc/pki/CA/index.txt</code><br> | |||
<code>echo '01' > /etc/pki/CA/serial</code><br> | |||
<b>Zertifikats Request erstellen und signieren</b> | |||
<blockquote>openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr<br> | |||
openssl ca -days 1825 -in yourdomain.csr -out yourdomain.cer</blockquote> | |||
== Anzeigen/Prüfen von Zertifikaten == | |||
prüfe PKCS12 Zertifikat<br> | |||
<code><b>openssl pkcs12 -info -in keyStore.p12</b><br></code> | |||
Prüfe Zertifikat<br> | |||
<code><b>openssl x509 -in certificate.crt -text -noout</b><br></code> | |||
Prüfe Private Key<br> | |||
<code><b>openssl rsa -in privateKey.key -check</b><br></code> | |||
Aktuelle Version vom 31. August 2017, 16:12 Uhr
Erstellen eines SSL Zertifikates unter Linux für Apache mit OpenSSL
Um auf einem Linux Server mit Apache Webseiten mit HTTPS zu nutzen benötigt man ein SSL Zertifikat.
Dazu erstellt man ein Certificate Request mit openssl
openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr
Die Parameter bedeuten folgendes:
req: es handelt sich um ein Cert-Request
-new: erzeuge ein neues Cert-Request
-newkey rsa:2048: erzeugt einen Private-Key für den Server mit RSA 2048 bit Schlüssel
-nodes: Private-Key nicht verschlüsseln. Sonst müsste man beim starten von Apache immer das SSL Passwort eingeben -keyout <file.key>: Private-Key Datei -out <file.key>: Cert-Request Datei
Beim Erstellen des Requests wird man u.a. nach dem Common Name (CN) gefragt.
Der CN muss dabei der FQDN des Servers bzw. der Webseite sein.
Den Request bzw. dessen Inhalt schickt man an eine CA oder signiert das Zertifikat mit einer eigenen CA z.B auf dem Windows Server (dazu weiter unten mehr)
Hat man das Zertifikat von der CA erhalten (Apache benötigt es im DER Base-64 Format) kopiert man die Datei (oder deren Inhalt) auf den Linux Server
Wenn ein Key in verschlüsselter Form vorliegt (und mit einer Passphrase gesichert ist), muß die Passphrase bei jedem Neustart des Apache Dienstes neu eingegeben werden. Wenn der Key im Klartext vorliegt, ist das nicht notwendig.
Um Key zu entschlüsseln und die Passphrase zu entfernen ist der folgende Aufruf notwendig:
openssl rsa -in server-rsa-key.pem > server-key.pem
Nun verschiebt man das Zertifikat und den entschlüsselten Key in den /etc/apache/ssl Verzeichnis
In der Apache-Konfig bzw. der entsprechenden Seite /etc/apache/sites-enabled fügt man in der VirtualHost Konfiguration noch folgendes ein:
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/cert.pem
SSLCertificateKeyFile /etc/apache2/ssl/cert.key
Nach einem Neustart des Apache Servers sollte man nun HTTPS/SSL nutzen können
Hier nun die Erklärung wie man mit Windows das Zertifikat erstellt:
Man benötigt die "Active Directory Certificate Services" Rolle
Ruft dann die Webseite http://Server_mit_AD_CA_Rolle/certsrv auf und klickt auf "Request a certificate"
Nun auf "advanced certificate request" und dann "Submit a certificate request by using a base-64-encoded CMC or PKCS #10 file, or submit a renewal request by using a base-64-encoded PKCS #7 file"
Danach fügt man den Request Inhalt ein.
WICHTIG: Darauf achten, dass bei Template Webserver steht und nicht User, da sonst der CN durch den aktuellen Benutzername ersetzt wird.
Zusammenführen (merge) von Zertifikat und Key
openssl pkcs12 -export -inkey cert.key -out cert.pfx < cert.cer
Konvertieren von pfx zu .cer und .key Zertifikat
openssl pkcs12 -in cert.pfx -out cert.cer -nokeys -nodes
openssl pkcs12 -in cert.pfx -out cert.key -nocerts -nodes
CA erstellen und ein Zertifikat signieren unter Linux
CA erstellen
Pfade und Dateinamen der openssl.cnf entnehmen (/etc/pki/tls)
openssl req -x509 -out /etc/pki/CA/cacert.pem -newkey rsa:2048 -keyout /etc/pki/CA/private/cakey.pem -days 3650 -nodes
openssl rand -out /etc/pki/CA/private/.rand 1000
touch /etc/pki/CA/index.txt
echo '01' > /etc/pki/CA/serial
Zertifikats Request erstellen und signieren
openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr
openssl ca -days 1825 -in yourdomain.csr -out yourdomain.cer
Anzeigen/Prüfen von Zertifikaten
prüfe PKCS12 Zertifikat
openssl pkcs12 -info -in keyStore.p12
Prüfe Zertifikat
openssl x509 -in certificate.crt -text -noout
Prüfe Private Key
openssl rsa -in privateKey.key -check