So konvertieren und verwenden Sie das PKCS#12/PFX-Zertifikat auf Apache

Wenn wir über mehrere Server verfügen und dasselbe SSL-Zertifikat verwenden müssen, z. B. in einer Load-Balancer-Umgebung oder bei Verwendung von Wildcard-SSL-Zertifikaten, müssen Sie die Zertifikate zwischen den Servern übertragen. Normalerweise ist die SSL-Übertragung von Server zu Server einfach, wenn sie zwischen Servern der gleichen Art wie Linux-Servern oder Windows-Servern stattfindet.

Aber der Prozess wird etwas schwieriger, wenn es um einen Windows- auf einen Linux-Server geht. In diesem Fall müssen wir die SSL-Zertifikate vom Windows-Server exportieren und in einer .pfx-Datei speichern. Danach müssen wir diese .pfx (PKCS#12/)-Datei auf den Linux-Server kopieren und diese Datei in eine konvertieren Apache-kompatibles Dateiformat wie Einzelzertifikat, CA-Bundle und private Schlüsseldateien und verwenden Sie es.

Dies kann auch erforderlich sein, wenn Sie das Hosting-Unternehmen wechseln. Den genauen Vorgang erkläre ich mit Schritt-für-Schritt-Anleitungen in diesem Artikel, wie Sie erfolgreich ein .pfx-Zertifikat vom Windows-Server auf einem laufenden Linux-Server verwenden können Apache.

Unterschied zwischen .pfx- und .crt-Datei

Bevor wir mit unserem Konvertierungsprozess beginnen, möchte ich Ihnen eine kurze Beschreibung des Unterschieds zwischen der .pfx- und der .crt-Datei geben. Grundsätzlich ist ein Zertifikat (.crt-Datei) ein Container für den öffentlichen Schlüssel. Es enthält den öffentlichen Schlüssel, den Servernamen, einige zusätzliche Informationen über den Server und eine von einer Zertifizierungsstelle (CA) berechnete Signatur. Beim SSL-Handshaking sendet der Server seinen öffentlichen Schlüssel zusammen mit einigen anderen Zertifikatsketten an einen Client, der tatsächlich sein Zertifikat enthält.

Andererseits ist eine .pfx-Datei ein PKCS#12-Archiv, das einer Tasche ähnelt, die viele Objekte mit optionalem Passwortschutz enthalten kann. Normalerweise enthält ein PKCS#12-Archiv ein Zertifikat (möglicherweise mit seinem sortierten Satz von CA-Zertifikaten) und seinen entsprechenden privaten Schlüssel.

Beginnen wir jetzt mit unserem Konvertierungsprozess.

Schritt 1: Übertragen Sie das pfx-Zertifikat vom Windows-Server auf unseren Linux-Server

Zunächst habe ich mein Zertifikat in ein .pfx-Zertifikat vom Windows-Server für meine Domain puebe.com exportiert. Und ich habe diese pfx-Datei mit SCP von meinem lokalen System in den Ordner “/transfered_certificates/” auf meinen Linux-Server kopiert. Sie können FTP, SCP, wget oder eine dieser Methoden verwenden, um das pfx-Zertifikat auf Ihren Linux-Server zu übertragen.

# transfered_certificates]# ll
-rw-r--r-- 1 root root 5409 Oct 9 10:02 c667cafbf01ffd7310db952e50eaf2b2.pfx

Schritt 2: Konvertieren Sie die .pfx-Datei mit OpenSSL

Unser nächster Schritt besteht darin, unser erforderliches Zertifikat, den Schlüssel und das CA-Bundle aus diesem .pfx-Zertifikat für die Domain puebe.com zu extrahieren. Wir können den OpenSSL-Befehl verwenden, um diese Details aus der pfx-Datei zu extrahieren. Sehen wir uns die Befehle zum Extrahieren der erforderlichen Informationen aus diesem pfx-Zertifikat an.

Extrahieren des Zertifikats aus der pfx-Datei

Mit diesem Befehl können wir die Zertifikatsdetails für die Domain puebe.com aus der pfx-Datei extrahieren.

# openssl pkcs12 -in c667cafbf01ffd7310db952e50eaf2b2.pfx -clcerts -nokeys -out puebe.com.crt
Enter Import Password:
MAC verified OK

Dadurch erhalten wir unsere Domain-Zertifikatsdatei, nämlich puebe.com.crt mit einem kompatiblen Format, das in Linux unterstützt.

Extrahieren der Schlüsseldatei aus der pfx-Datei

Mit diesem Befehl können wir die Schlüsseldetails für die Domäne puebe.com aus der pfx-Datei extrahieren.

# openssl pkcs12 -in c667cafbf01ffd7310db952e50eaf2b2.pfx -nocerts -nodes -out puebe.com.key
Enter Import Password:
MAC verified OK

Dies wird uns nämlich unsere Domain-Schlüsseldatei zur Verfügung stellen puebe.com.key

Extrahieren der Zertifikatskette aus der pfx-Datei

Wir können diesen Befehl verwenden, um die Kette der Zertifikatsdetails aus der pfx-Datei zu extrahieren.

# openssl pkcs12 -in c667cafbf01ffd7310db952e50eaf2b2.pfx -out puebe.com-ca.crt -nodes -nokeys -cacerts
Enter Import Password:
MAC verified OK

Dadurch erhalten wir unsere Zertifikatskette für unsere Domain puebe.com in der Datei puebe.com-ca.crt.

Ich habe diese extrahierten Dateien in meinen cert-Ordner unter “/etc/pki/tls/certs/” kopiert. Sie können dies bei Bedarf tun, aber wenn nicht, können Sie den Ordnerpfad direkt im Apache Konfiguration, in die Sie diese Dateien extrahiert haben.

[root@li1005-45 certs]# ll puebe.com*
-rw-r--r-- 1 root root 3689 Oct 9 10:10 puebe.com-ca.crt
-rw-r--r-- 1 root root 1954 Oct 9 10:06 puebe.com.crt
-rw-r--r-- 1 root root 1828 Oct 9 10:07 puebe.com.key

Schritt 3: Zuweisen des Domain-SSL-Zertifikats zu Apache

Nachdem Sie die .pfx-Datei konvertiert haben, müssen Sie die neu erstellten Dateien in die Apache Server und bearbeite deine Apache Konfigurationsdatei, um sie zu verwenden. Ich habe einen virtuellen Host für meine Domain im Ordner /etc/httpd/conf.d/ erstellt, um SSL zu aktivieren, und diese extrahierten Dateien nach Bedarf eingebunden. Bitte sehen Sie sich meine Details zum virtuellen Gastgeber unten an:

[root@li1005-45 conf.d]# cat puebe_ssl.conf
<VirtualHost puebe.com:443>
DocumentRoot "/var/www/html/puebe.com/public_html/"
ServerName www.puebe.com:443
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn

SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA

SSLCertificateFile /etc/pki/tls/certs/puebe.com.crt
SSLCertificateKeyFile /etc/pki/tls/certs/puebe.com.key
SSLCertificateChainFile /etc/pki/tls/certs/puebe.com-ca.crt

#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
<Files ~ ".(cgi|shtml|phtml|php3?)$">
 SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
 SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-5]" 
nokeepalive ssl-unclean-shutdown 
downgrade-1.0 force-response-1.0

# Per-Server Logging:
# The home of a custom SSL log file. Use this when you want a
# compact non-error SSL logfile on a virtual host basis.
CustomLog logs/ssl_request_log 
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"

</VirtualHost>

Sie können die Namen der Dateien und Pfade so ändern, dass sie Ihren Zertifikatsdateien entsprechen:
SSLCertificateFile sollte Ihre primäre Zertifikatsdatei für Ihren Domainnamen sein.
SSLCertificateKeyFile sollte die extrahierte Schlüsseldatei sein.
SSLCertificateChainFile sollte die Zwischenzertifikatskettendatei sein.

Führen Sie einfach einen Konfigurationstest durch und starten Sie den Apache Service, wenn Sie damit fertig sind.

# apachectl configtest
Syntax OK
# service httpd restart

Jetzt können Sie Ihr Domain-SSL-Zertifikat mit einem der verfügbaren SSL-Checker-Tools bestätigen. Oder Sie können einfach die URL durchsuchen >>https://puebe.com/. Ich habe meine SSL-Installation im Link verifiziert

>>https://www.sslshopper.com/ssl-checker.html#hostname=puebe.com

So können wir Zertifikate einfach von einem Windows-Server auf eine Linux-Distribution übertragen. Ich hoffe, dieser Artikel ist informativ und nützlich für Sie. Bitte posten Sie Ihre wertvollen Kommentare und Vorschläge dazu.