PKCS#1, RSA algoritmasının anahtar yapılarını ve şifreleme/imza düzenlerini tanımlar. "BEGIN RSA PRIVATE KEY" ile başlayan özel anahtar dosyaları bu standardın ASN.1 yapısını taşır.
Anahtar yapısı
RSA özel anahtarı DER içinde bir SEQUENCE olarak tutulur ve şu tam sayıları içerir: modulus (n), genel üs (e), özel üs (d), asal çarpanlar (p, q) ve CRT hızlandırma değerleri. Açık anahtar ise yalnızca modulus ve üssü içerir.
-----BEGIN RSA PRIVATE KEY-----: PKCS#1 özel anahtar (yalnızca RSA).-----BEGIN RSA PUBLIC KEY-----: PKCS#1 açık anahtar.-----BEGIN PRIVATE KEY-----: Bu PKCS#8'dir; algoritmadan bağımsızdır.
Şifreleme ve imza düzenleri
- RSAES-PKCS1-v1_5: Eski şifreleme dolgusu. Bleichenbacher türü saldırılara açık olduğu için yeni tasarımlarda önerilmez; TLS 1.3 RSA anahtar değişimini zaten kaldırmıştır.
- RSAES-OAEP: Şifreleme için önerilen dolgu.
- RSASSA-PKCS1-v1_5: Sertifika imzalarında hâlâ yaygın olan imza düzeni.
- RSASSA-PSS: Olasılıksal, daha modern imza düzeni; TLS 1.3'te tercih edilir.
Pratik komutlar
# Anahtarın tutarlılığını kontrol et
openssl rsa -in anahtar.pem -check -noout
# Modulus karşılaştırma (anahtar-sertifika eşleşmesi)
openssl rsa -in anahtar.pem -noout -modulus | openssl md5
openssl x509 -in sertifika.pem -noout -modulus | openssl md5
# PKCS#1 -> PKCS#8
openssl pkcs8 -topk8 -nocrypt -in anahtar.pem -out anahtar-pkcs8.pem
İki md5 çıktısı aynıysa anahtar ve sertifika eşleşiyordur; eşleşmeme, "key values mismatch" hatasının klasik nedenidir.
İpuçları
- Bazı eski yazılımlar yalnızca PKCS#1 bekler; dönüştürmek için
openssl rsa -in pkcs8.pem -out pkcs1.pemkullanılır. - En az 2048 bit RSA anahtar kullanın.
Yeni bir anahtar ve istek üretmek için CSR oluşturucuya, sertifika seçimi için SSL sertifikaları sayfasına bakabilirsiniz.