PEM sertifika zincirinin içeri aktarılması ve Java Keystore'a anahtar verilmesi


29

Bu konuyla ilgili pek çok kaynak var, ancak hiçbiri bu biraz özel durumu ele alan hiçbir şey bulamadım.

4 dosyam var;

  • privatekey.pem
  • certificate.pem
  • intermediate_rapidssl.pem
  • ca_geotrust_global.pem

Ve onları yeni bir anahtar deposuna aktarmak istiyorum.

Bazı siteler, DER formatı kullanmanızı ve bunları birer birer içe aktarmanızı önerir, ancak anahtar tanınmadığından bu başarısız oldu.

Başka bir site, ithalat için çalıştırılacak özel bir "ImportKey" sınıfı önerdi ve bu, zincirin kırıldığını görene kadar işe yaradı. Yani, sertifikadaki zincir uzunluğu 1'dir, ara değeri yok sayar ve ca.

Bazı siteler PKCS7'yi önerir, ancak bundan bir zincir bile alamıyorum. Diğerleri ise PKCS12 formatını gösteriyor, ancak testlerim devam ettiği sürece, tüm zinciri almakta başarısız oldu.

Herhangi bir öneri veya ipuçları çok açığız.

Yanıtlar:


26

Bu mükemmel olmayabilir, ancak keytoolsenaryo için değiştirdiğim kullanımı hakkında bazı notlar aldım .

  1. Mevcut bir Java anahtar deposuna bir kök veya ara CA sertifikası alın:

    keytool -import -trustcacerts -alias root -file ca_geotrust_global.pem -keystore yourkeystore.jks
    keytool -import -trustcacerts -alias root -file intermediate_rapidssl.pem -keystore yourkeystore.jks 
    
  2. Almadan önce sertifikayı ve özel anahtarı tek bir dosyada birleştirin.

    cat certificate.pem privatekey.pem > combined.pem
    

    Bu, aşağıdaki forma benzer bir dosya ile sonuçlanmalıdır.

    BELGELENDİRME BELGESİ
    ...
    SON BELGELENDİRME BELGESİ
    BAŞLATMA RSA ÖZEL ANAHTAR
    ...
    END RSA ÖZEL ANAHTAR

  3. İmzalanmış bir birincil sertifikayı & anahtarı mevcut bir Java anahtar deposuna alın:

    keytool -import -trustcacerts -alias yourdomain -file combined.pem -keystore yourkeystore.jks
    

2
Hangi keytool sürümü bu şekilde zincirleme yapmanıza izin verir? Bu sözdizimi, "keytool error: java.lang.Exception: Sertifika içe aktarılmadı, takma ad" kök "zaten var" hem -Ithalat ve -importcert
ctpenrose

Tam olarak söylemek zor. Ancak yıl / ay verilen Java 6 olması muhtemeldir? (Küçük sürüm hakkında hiçbir fikrim yok.) Hangi sürümü kullanıyorsunuz? Hata, anahtar deposunun kendisinde olabilir gibi okur. ( alias <root> already exists) Yeni, boş bir anahtar deposu ile deneyebilir misiniz?
Aaron Copley

1
Keytool zaten mevcut bir takma adı olan 'root' kullanarak bir sertifika almama izin vermiyor. Ama bunun bir yazım hatası olduğunu düşünüyorum. Keytool'un, imzalayanların sertifikalarını anahtar deposunda bulduğunda (herhangi bir diğer adın altında) sertifikanızın kendisi için bir zincir oluşturduğunu not etmek ilginçtir. Java aracı "Portecle" , java anahtar deposunu yönetmek için kullanışlıdır.
Houtman

Keytool bu şekilde çalışmaz ve bir takma adı tanımlandığı gibi birden fazla içe aktarmanıza izin vermez. (Ve evet, denedim). Düzgün çalışan bir şey için senajqerib'in yanıtını inceleyin.
Steve Sether,

1
Bu üç yıllık bir cevap. İşlerin değişmiş olması tamamen mümkün, ancak sizi temin ederim, çalıştığından eminim (ya da mükemmel olamayacağımı belirttiğim gibi çalışmaya yakın) Şubat 2013 itibariyle.
Aaron Copley,

42

Tüm * .pem dosyalarını, hepsi.pem gibi bir pem dosyasına birleştirin Ardından p12 biçiminde özel anahtar + all.pem ile anahtar deposu oluşturun

openssl pkcs12 -export -inkey private.key -in all.pem -name test -out test.p12

Sonra p12'yi jks'e aktar

keytool -importkeystore -srckeystore test.p12 -srcstoretype pkcs12 -destkeystore test.jks

Teşekkür ederim. Bu tek tam ve doğru cevap. Önerdiğin gibi, cer'ları bir dosyada bir araya getirmek çok daha kolay.
Steve Sether,

Bu benim için bir zevk gibi çalıştı! Java tabanlı bir TLS sunucusuyla konuşmak için nodejs-self-signed-sertifika-örnek havuzunda kullanılan bir anahtar zincirini dönüştürmek için bu talimatları kullandım. Bir milyon teşekkürler!
Galder Zamarreño 11:16

Bu doğru cevap.
sfThomas

8

keytool, yukarıda önerilen şekilde sertifika + özel anahtarı tek bir (birleşik) dosyadan içe aktarma yolu sağlamaz. İyi çalışıyor, ancak yalnızca sertifika ithal ediliyor, özel anahtar yok sayılıyor. Bunu kontrol edebilirsiniz keytool -list -v -keystore yourkeystore.jks- alan adınız giriş türü ÖzelKeyEntry değil, TrustedCertEntry'dir.

Bu nedenle, başlangıçtaki sorunu çözmek için, ilk önce openssl (veya benzeri bir araç) kullanarak bir PKCS # 12 anahtar deposu oluşturmalı, ardından anahtar deposunu ile içe aktarmalısınız keytool -importkeystore.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.