Dönüştürme bir Java PEM formatına Deposu
PEM dosyası keytool ve openssl applicactions kullanarak Java anahtar deposu dosyasını dönüştürmek için çalışıyorum. Ama dönüşüm yapmak için iyi bir yol bulamadım. Herhangi bir fikir?
PEM içine doğrudan deposu dönüştürmek yerine PKCS12 dosyası oluşturun ve sonra ilgili PEM dosyası ve anahtar Deposu haline dönüştürmeye çalıştım. Ama onları kullanarak bir bağlantı kurmak olamazdı. (Sadece PEM dosyası ve güvenli bir bağlantı uygulamak için bir anahtar Deposu dosyasını gerektiğini unutmayın. Gibi kısıtlama yok "java anahtar deposu dosyası Başlat". :) Yani diğer formatları itibaren benim durumumda kabul edilebilir)
Ama pem için piç doğrudan dönüştürme yöntemi tercih edilir.
CEVAP
Oldukça basit, en azından jdk6 kullanarak
bash$ keytool -keystore foo.jks -genkeypair -alias foo \ -dname 'CN=foo.example.com,L=Melbourne,ST=Victoria,C=AU' Enter keystore password: Re-enter new password: Enter key password for (RETURN if same as keystore password): bash$ keytool -keystore foo.jks -exportcert -alias foo | \ openssl x509 -inform der -text Enter keystore password: asdasd Certificate: Data: Version: 3 (0x2) Serial Number: 1237334757 (0x49c03ae5) Signature Algorithm: dsaWithSHA1 Issuer: C=AU, ST=Victoria, L=Melbourne, CN=foo.example.com Validity Not Before: Mar 18 00:05:57 2009 GMT Not After : Jun 16 00:05:57 2009 GMT Subject: C=AU, ST=Victoria, L=Melbourne, CN=foo.example.com Subject Public Key Info: Public Key Algorithm: dsaEncryption DSA Public Key: pub: 00:e2:66:5c:e0:2e:da:e0:6b:a6:aa:97:64:59:14: 7e:a6:2e:5a:45:f9:2f:b5:2d:f4:34:27:e6:53:c7: bash$ keytool -importkeystore -srckeystore foo.jks \ -destkeystore foo.p12 \ -srcstoretype jks \ -deststoretype pkcs12 Enter destination keystore password: Re-enter new password: Enter source keystore password: Entry for alias foo successfully imported. Import command completed: 1 entries successfully imported, 0 entries failed or cancelled bash$ openssl pkcs12 -in foo.p12 -out foo.pem Enter Import Password: MAC verified OK Enter PEM pass phrase: Verifying - Enter PEM pass phrase: bash$ openssl x509 -text -in foo.pem Certificate: Data: Version: 3 (0x2) Serial Number: 1237334757 (0x49c03ae5) Signature Algorithm: dsaWithSHA1 Issuer: C=AU, ST=Victoria, L=Melbourne, CN=foo.example.com Validity Not Before: Mar 18 00:05:57 2009 GMT Not After : Jun 16 00:05:57 2009 GMT Subject: C=AU, ST=Victoria, L=Melbourne, CN=foo.example.com Subject Public Key Info: Public Key Algorithm: dsaEncryption DSA Public Key: pub: 00:e2:66:5c:e0:2e:da:e0:6b:a6:aa:97:64:59:14: 7e:a6:2e:5a:45:f9:2f:b5:2d:f4:34:27:e6:53:c7: bash$ openssl dsa -text -in foo.pem read DSA key Enter PEM pass phrase: Private-Key: (1024 bit) priv: 00:8f:b1:af:55:63:92:7c:d2:0f:e6:f3:a2:f5:ff: 1a:7a:fe:8c:39:dd pub: 00:e2:66:5c:e0:2e:da:e0:6b:a6:aa:97:64:59:14: 7e:a6:2e:5a:45:f9:2f:b5:2d:f4:34:27:e6:53:c7:
Size sonuna kadar:
- foo.piç - java formatında deposu.
- foo.p12 - AMAÇ içinde deposu#12 formatında.
- foo.pem - PEM biçiminde deposundan anahtarları ve sertifikaları.
(Bu son dosya eğer istersen anahtarları ve sertifikaları ayrılabilir.)
Komut özeti - oluşturmak için anahtar deposu PİÇ:
keytool -keystore foo.jks -genkeypair -alias foo \
-dname 'CN=foo.example.com,L=Melbourne,ST=Victoria,C=AU'
Komut özeti - PKCS#12 anahtar deposu, PEM dosyasına: sonra PİÇ deposu haline dönüştürmek
keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcstoretype jks \
-deststoretype pkcs12
openssl pkcs12 -in foo.p12 -out foo.pem
senin PİÇ birden fazla sertifika deposu var, ve sertifika ve anahtar isimlerinden birisi ile ilişkili vermek istiyorsanız, aşağıdaki varyasyon kullanabilirsiniz:
keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcalias foo \
-srcstoretype jks \
-deststoretype pkcs12
openssl pkcs12 -in foo.p12 -out foo.pem
Komut özeti - PİÇ karşılaştırmak için dosya PEM için anahtar deposu:
keytool -keystore foo.jks -exportcert -alias foo | \
openssl x509 -inform der -text
openssl x509 -text -in foo.pem
openssl dsa -text -in foo.pem
Java tarih için dize dönüştürme...
Dönüştürme 8601 uyumlu ISO java Dize.a...
Java listesinde dönüştürme dizisi...
Dönüştürme Java için JSON...
dönüştürme bitmap dizi bayt için Java...