PKCS#8, özel anahtarları algoritmadan bağımsız biçimde saklayan standarttır. RSA, ECDSA ve Ed25519 anahtarları aynı çerçevede, yalnızca algoritma tanımlayıcısı değişerek tutulur. Günümüz OpenSSL sürümleri, anahtar üretiminde varsayılan olarak bu biçimi kullanır.
Başlık satırlarıyla tanıma
-----BEGIN PRIVATE KEY-----: Şifresiz PKCS#8.-----BEGIN ENCRYPTED PRIVATE KEY-----: Parola ile korunan PKCS#8.-----BEGIN RSA PRIVATE KEY-----: PKCS#1; PKCS#8 değildir.-----BEGIN EC PRIVATE KEY-----: Geleneksel EC biçimi (SEC1).
Yapısı
PrivateKeyInfo, üç ana parçadan oluşur: sürüm, algorithm tanımlayıcısı (hangi anahtar türü olduğu) ve anahtarın kendisini içeren octet string. Şifreli sürümde bu yapı bir parola türetme fonksiyonu (PBKDF2) ve simetrik şifreyle sarılır.
Dönüştürme komutları
# PKCS#1 veya EC anahtarı -> şifresiz PKCS#8
openssl pkcs8 -topk8 -nocrypt -in eski.key -out yeni.key
# Parola ile korumalı PKCS#8
openssl pkcs8 -topk8 -v2 aes-256-cbc -in eski.key -out korumali.key
# PKCS#8 -> geleneksel RSA biçimi
openssl rsa -in yeni.key -out rsa-klasik.key
# Anahtarı incele
openssl pkey -in yeni.key -noout -text | head
Ne zaman gerekir?
- Java tabanlı araçlar (örn. Tomcat, Jetty, Spring) çoğunlukla PKCS#8 bekler.
- Bazı yazılımlar "BEGIN RSA PRIVATE KEY" yerine "BEGIN PRIVATE KEY" gördüğünde hata verir veya tersi olur; dönüştürme çözer.
Güvenlik notları
- Özel anahtarı e-postayla veya destek kanallarıyla paylaşmayın; bir sertifika başvurusu için yalnızca CSR yeterlidir.
- Dosya izinlerini kısıtlayın:
chmod 600 anahtar.key. - Yedekleri parolalı/şifreli saklayın.
Yeni bir anahtar çifti ve CSR için CSR oluşturucuyu kullanabilir, biçimlerle ilgili diğer makaleler için bilgi bankasına göz atabilirsiniz.