Kendinden imzalı sertifika kullanarak anahtar deposu ve güven deposu nasıl oluşturulur?


18

JAVA sunucumuz ve istemcimiz SSL kullanarak bir ağ üzerinden iletişim kuruyor. Sunucu ve istemci, sertifikalar kullanarak birbirlerinin kimliğini doğrular. Sunucu ve istemci tarafından kullanılan anahtar deposu türü JKS'dir. Sunucu ve istemci anahtar deposu ve güven deposu dosyalarını yükler. Anahtar deposu ve güven deposu dosya adları şunlardır: server.keystore, server.truststore, client.keystore ve client.truststore. Kendinden İmzalı sertifikaları yalnızca test için kullanıyorum.

Sorular:

S1. 6. adımda neden kendi güven merkezlerine sunucu ve müşterinin kendi sertifikalarını eklemem gerektiğini bilmek istiyorum.

S2. Aynı şeyi başarmak için sayı adımlarını azaltabilir miyim? Evet ise, nasıl?

Bir sunucu için RSA anahtarı, kendinden imzalı sertifikalar, anahtar deposu ve güven deposu oluşturma adımları

  1. Özel bir RSA anahtarı oluşturun

    openssl genrsa -out diagserverCA.key 2048
    
  2. X509 sertifikası oluşturma

    openssl req -x509 -new -nodes -key diagserverCA.key \
                -sha256 -days 1024 -out diagserverCA.pem
    
  3. Özel anahtar ve ortak sertifikadan bir PKCS12 anahtar deposu oluşturun.

    openssl pkcs12 -export -name server-cert \
                   -in diagserverCA.pem -inkey diagserverCA.key \
                   -out serverkeystore.p12
    
  4. PKCS12 anahtar deposunu JKS anahtar deposuna dönüştürme

    keytool -importkeystore -destkeystore server.keystore \
            -srckeystore serverkeystore.p12 -srcstoretype pkcs12 
            -alias server-cert
    
  5. Bir istemcinin sertifikasını sunucunun güven deposuna alın.

    keytool -import -alias client-cert \
            -file diagclientCA.pem -keystore server.truststore
    
  6. Bir sunucunun sertifikasını sunucunun güven deposuna alın.

    keytool -import -alias server-cert \
            -file diagserverCA.pem -keystore server.truststore
    

İstemci için RSA özel anahtarı, kendinden imzalı sertifika, anahtar deposu ve güven deposu oluşturma adımları

  1. Özel anahtar oluşturma

    openssl genrsa -out diagclientCA.key 2048
    
  2. X509 sertifikası oluşturma

    openssl req -x509 -new -nodes -key diagclientCA.key \
                -sha256 -days 1024 -out diagclientCA.pem
    
  3. Özel anahtar ve genel sertifikadan PKCS12 anahtar deposu oluşturun.

    openssl pkcs12 -export -name client-cert \
                   -in diagclientCA.pem -inkey diagclientCA.key \
                   -out clientkeystore.p12
    
  4. PKCS12 anahtar deposunu JKS anahtar deposuna dönüştürme

    keytool -importkeystore -destkeystore client.keystore \
            -srckeystore clientkeystore.p12 -srcstoretype pkcs12 \
            -alias client-cert
    
  5. Bir sunucunun sertifikasını istemcinin güven deposuna alın.

    keytool -import -alias server-cert -file diagserverCA.pem \
            -keystore client.truststore
    
  6. Bir istemcinin sertifikasını istemcinin güven deposuna aktarın.

    keytool -import -alias client-cert -file diagclientCA.pem \
            -keystore client.truststore
    

Yanıtlar:


3

Normal https yalnızca 1 komut gerektirir;

keytool -genkeypair

İstemci herhangi bir sertifikaya körü körüne güvenmiyorsa, sunucu genel sertifikanızı istemciye kopyalamanız gerekir.

Neden openssl kullanıyorsunuz?

https://docs.oracle.com/javase/10/tools/keytool.htm


Düzenlemem hakem değerlendirilene kadar: Bayrak -genkeypair ve sertifikayı özelleştirmek için birçok farklı bayrak ekleyebilirsiniz (örn.-365 geçersizlik veya -dname "cn = Mark Jones, ou = JavaSoft, o = Paz, c = ABD "). Daha fazla bilgi için yanıttaki bağlantıya bakın.
Johannes Stadler

1
@JohannesStadler Teşekkürler Düzenlemenizi onayladım ve en son java sürümüne bağlantıyı güncelledim, "Bu komut önceki sürümlerde -genkey olarak adlandırıldı"
user1133275
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.