PFX nedir?
PFX dosya formatı temel olarak "PKCS #12" olarak bilinen standartın öncülüdür. Bu standart, birden fazla kriptografik objenin bir dosyada kullanılmasını sağlamaktadır. İçerisinde tek bir sertfikayı barındıran diğer sertifikalardan en büyük farkı tam olarak budur. Bu standartın genellikle kullanılan kullanım şekli bir sertifika zinciri 'nin sertifikaları ile birlikte "özel anahtar" barındırmasıdır. Bu dosya standartı hakkında bilmemiz gereken bir başka özellik de şifreli ve imzalı olabilmesidir. Açık kaynak kodlu openssl uygulamasının bu standardı kullanarak işlem yapması için pkcs12 parametresi kullanılmaktadır.
OpenSSL ile PFX işlemleri
OpenSSL üzerinde PFX işlemleri içerisindeki sertifikaları ve anahtarları ayırma işlemleridir.
Bir PFX dosyası içindeki özel anahtar'ın çıkartılması (sertifikaların çıkartılmaması) için aşağıdaki komut kullanılmaktadır. Anahtar dosyası örnekte .key olarak gösterilmiştir fakat bazı durumlarda .pem olarak da kullanılabilmektedir.
openssl pkcs12 -in tekdosya.pfx -nocerts -out ozelanahtar.key -nodes
Bir PFX dosyası içindeki sertifikaların çıkartılması (anahtarların çıkartılmaması) için aşağıdaki komut kullanılmaktadır. Sertifika dosyası örnekte .crt olarak gösterilmiştir fakat bazı durumlarda .pem olarak da kullanılabilmektedir.
openssl pkcs12 -in tekdosya.pfx -nokeys -out sertifikalar.crt
PFX'teki özel anahtarlar
PFX dosyasından yukarıda anlatılan yöntem ile çıkartılan özel anahtar PKCS#8 standartına uygundur. Yani aşağıdaki gibi başlayan bir dosya gözükmektedir:
-----BEGIN PRIVATE KEY-----
-----BEGIN ENCRYPTED PRIVATE KEY-----
Oysa ki bazı durumlarda elimizde PKCS#1 standartına uygun RSA şifreleme ile oluşturulmuş bir anahtar olması gerekebilir. Bu gibi durumda yukarıdaki komut yerine aşağıdaki gibi bir komut çalıştırılması gerekmektedir:
openssl pkcs12 -in tekdosya.pfx -nodes -nocerts | openssl rsa -out ozelanahtar.key
Bu şekilde oluşturulan özel anahtar PKCS#1 standartına uygun ve aşağıdaki gibi başlayan bir dosya olarak RSA şifreleme yöntemi ile sunulacaktır.
-----BEGIN RSA PRIVATE KEY-----
Parola konuları
PFX dosyasının kullanılabilmesi için çoğu zaman parola koruması bulunmaktadır. Normal şartlarda OpenSSL sizden bu bilgileri talep etmektedir. Fakat tek komut ile yapılması istenirse aşağıdaki parametreler kullanılabilmektedir. İlk parametre ile var olan PFX dosyasının parolası kullanılırken, ikinci parametre ise çıktı dosyasına da parola koyulup koyulmayacağını anlatmaktadır.
-passin pass:"parola1"
-passout pass:"parola2"
Ayrıca çıkan özel anahtardaki parolanın silinmesi gerektiği zaman aşağıdaki gibi parolayı kaldırabilrisiniz:
openssl rsa -in ozelanahtar.key -out parolasizanahtar.key
Sertifikaların tiplerine göre çıkartılması
PFX konusunda en çok kullanılan bir diğer özellik ise içerisinde birden fazla sertfiikanın yer alması. Ve bu sertifikalar çoğu zaman sertfiika zincirini oluşturmaktadır. Bu zincirin tepesinde de Sertifika Otoritesi (CA) bulunup altta da İstemci (client) bulunmaktadır. PFX dosyasında bu şekilde bir ayrım yapılması isteniyorsa aşağıdaki gibi yapılabilmektedir.
openssl pkcs12 -in tekdosya.pfx -clcerts -nokeys -out clientcert.crt
openssl pkcs12 -in tekdosya.pfx -cacerts -nokeys -out cacert.crt
Yeni bir PFX dosyası oluşturmak
PFX dosyası başta bahsettiğim gibi birden fazla sertifika veya özel anahtarı barındırdığı için aşağıdaki formatta bir komut ile yeni pfx dosyaları oluşturulabilmektedir:
openssl pkcs12 -export -in sertifika1.pem -inkey anahtar1.key -out tekdosya1.pfx