Come convertire e utilizzare il certificato PKCS#12/PFX su Apache

Quando disponiamo di più server e dobbiamo utilizzare lo stesso certificato SSL, ad esempio in un ambiente di bilanciamento del carico o utilizzando certificati SSL jolly, sarà necessario trasferire i certificati tra i server. Il trasferimento SSL da server a server sarà normalmente facile se avviene tra server dello stesso tipo di server Linux o server Windows.
Ma il processo diventa un po’ più difficile quando si tratta di un server Windows su un server Linux. In questo caso, dobbiamo esportare i certificati SSL dal server Windows e memorizzarli nel file .pfx. Dopodiché dobbiamo copiare questo file .pfx (PKCS#12/) sul server Linux e convertire quel file in un formato di file compatibile con Apache come certificato individuale, bundle CA e file di chiave privata e lo usiamo.
Ciò potrebbe essere necessario anche quando si cambia società di hosting. Spiegherò il processo esatto con istruzioni dettagliate in questo articolo su come utilizzare correttamente un certificato .pfx dal tuo server Windows su un server Linux che esegue Apache.
Differenza tra file .pfx e .crt
Prima di iniziare con il nostro processo di conversione, lascia che ti dia una rapida carrellata sulla differenza tra un file .pfx e un file .crt. Fondamentalmente, un certificato (file .crt) è un contenitore per la tua chiave pubblica. Include la chiave pubblica, il nome del server, alcune informazioni aggiuntive sul server e una firma calcolata da un’autorità di certificazione (CA). Durante l’handshake SSL, il server invia la sua chiave pubblica a un client, che in realtà contiene il suo certificato insieme a diverse altre catene di certificati.
D’altra parte, un file .pfx è un archivio PKCS#12 che assomiglia a una borsa che può contenere molti oggetti con protezione tramite password facoltativa. Normalmente, un archivio PKCS#12 contiene un certificato (possibilmente con il relativo insieme di certificati CA) e la corrispondente chiave privata.
Iniziamo ora con il nostro processo di conversione.
Passaggio 1: trasferisci il certificato pfx dal tuo server Windows al nostro server Linux
Innanzitutto, ho esportato il mio certificato in un certificato .pfx dal server Windows per il mio dominio puebe.com. E ho copiato quel file pfx sul mio server Linux usando SCP dal mio sistema locale nella cartella “/transferred_certificates/”. Puoi utilizzare FTP, SCP, wget o utilizzare uno di questi metodi per trasferire il certificato pfx al tuo server Linux.
# transfered_certificates]# ll
-rw-r--r-- 1 root root 5409 Oct 9 10:02 c667cafbf01ffd7310db952e50eaf2b2.pfx
Passaggio 2: convertire il file .pfx utilizzando OpenSSL
Il passaggio successivo consiste nell’estrarre il certificato, la chiave e il pacchetto CA richiesti da questo certificato .pfx per il dominio puebe.com. Possiamo usare il comando OpenSSL per estrarre questi dettagli dal file pfx. Vediamo i comandi per estrarre le informazioni necessarie da questo certificato pfx.
Estrazione del certificato dal file pfx
Possiamo utilizzare questo comando per estrarre i dettagli del certificato per il dominio puebe.com dal file pfx.
# openssl pkcs12 -in c667cafbf01ffd7310db952e50eaf2b2.pfx -clcerts -nokeys -out puebe.com.crt
Enter Import Password:
MAC verified OK
Questo ci fornirà il nostro file del certificato di dominio, ad es puebe.com.crt
con un formato compatibile che supporta Linux.
Estrazione del file chiave dal file pfx
Possiamo usare questo comando per estrarre i dettagli chiave per il dominio puebe.com dal file pfx.
# openssl pkcs12 -in c667cafbf01ffd7310db952e50eaf2b2.pfx -nocerts -nodes -out puebe.com.key
Enter Import Password:
MAC verified OK
Questo ci darà il nostro file chiave di dominio vale a dire puebe.com.key
Estrazione della catena di certificati dal file pfx
Possiamo usare questo comando per estrarre la catena dei dettagli del certificato dal file pfx.
# openssl pkcs12 -in c667cafbf01ffd7310db952e50eaf2b2.pfx -out puebe.com-ca.crt -nodes -nokeys -cacerts
Enter Import Password:
MAC verified OK
Questo ci darà la nostra catena di certificati per il nostro dominio puebe.com nel file puebe.com-ca.crt
.
Ho copiato questi file estratti nella mia cartella cert in “/etc/pki/tls/certs/”. Puoi farlo se necessario, ma in caso contrario, puoi specificare direttamente il percorso della cartella nella configurazione di Apache in cui hai estratto questi file.
[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
Passo 3: Assegna il certificato SSL del dominio ad Apache
Dopo aver convertito il file .pfx, dovrai copiare i file appena creati sul tuo server Apache e modificare il tuo file di configurazione Apache per usarli. Ho creato un host virtuale per il mio dominio nella cartella /etc/httpd/conf.d/ per abilitare SSL e ho incluso questi file estratti secondo necessità. Si prega di consultare i dettagli del mio host virtuale di seguito:
[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>
È possibile modificare i nomi e i percorsi dei file in modo che corrispondano ai file certificati:SSLCertificateFile
dovrebbe essere il tuo file di certificato principale per il tuo nome di dominio.SSLCertificateKeyFile
dovrebbe essere il file chiave estratto.SSLCertificateChainFile
dovrebbe essere il file intermedio della catena di certificati.
Assicurati di eseguire un test di configurazione e riavvia il servizio Apache dopo aver finito.
# apachectl configtest
Syntax OK
# service httpd restart
Ora puoi confermare il certificato SSL del tuo dominio utilizzando uno qualsiasi degli strumenti di verifica SSL disponibili. Oppure puoi semplicemente sfogliare l’URL >>https://puebe.com/
. Ho controllato la mia installazione SSL nel link
>>https://www.sslshopper.com/ssl-checker.html#hostname=puebe.com

È così che possiamo trasferire facilmente i certificati da un server Windows a una distribuzione Linux. Spero che questo articolo sia informativo e utile per te. Si prega di pubblicare i vostri preziosi commenti e suggerimenti al riguardo.