LINUX

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

conversione del certificato pfx

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.

Related Articles

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Back to top button
Close