Keystore Problem mit Glassfish und StartSSL

Rallenaldo

New Member
Hallo.

Ich habe Probleme ein StartSSL Zertifikat in meinen Glassfish Server einzubinden.

Ich habe eine Zip-Datei mit 3 Dateien von StartSSL erhalten:

root.crt
1_Intermediate.crt
2_www.domain.crt

Ich habe mich an 2 Tutorials aus dem Internet orientiert. Ich musste die Schritte kombinieren, da im ersten Tutorial kein StartSSL Zertifikat verwendet wird. Auch gehen beide Tutorials davon aus, dass man noch kein Zertifikat erworben hat.


Tutorial1
Tutorial2


Keystore erstellen:
keytool -keysize 4096 -genkey -alias Domain -keyalg RSA -dname “CN=www.domain.de,O=yourCompany,L=yourCity,S=yourState,C=yourCountry” -keypass yourmasteradminpw -storepass yourmasteradminpw -keystore keystore.jks

Import certificates in den Keystore:
# keytool -import -alias startsslcert -keystore keystore.jks -trustcacerts -file root.crt
# keytool -import -alias startsslsub -keystore keystore.jks -trustcacerts -file 1_Intermediate.crt
# keytool -import -alias domainname -keystore keystore.jks -trustcacerts -file 2_www.domain.crt

Import certificates cacerts.jks
# keytool -import -alias startsslcert -keystore cacerts.jks -trustcacerts -file root.crt
# keytool -import -alias startsslsub -keystore cacerts.jks -trustcacerts -file 1_Intermediate.crt

Anschließend habe ich in der domain.xml Datei s1as mit "Domain" aus dem erstellten Keystore ersetzt.

Nachdem ich den Glassfish neugestartet habe, kann ich die Seite nicht mehr aufrufen, da diese als nicht sicher behandelt wird.

Habe ich einen Schritt vergessen oder etwas falsch gemacht?
 

marce

Active Member
Welche Glassfish-Version verwendest Du denn?

Für den 4er könnte ich Dir morgen ein kleines Tut posten, welches hier zumindest soweit funktioniert, daß sowohl die Admin-Oberflache als auch die Applikationscontainer funktionieren und ihre jeweils "gewünschten" Zertifikate beeinhalten. Nicht elegant, aber es geht.

... und ja, das Thema Glassfish und Doku und teilweise zum daonvlaufen...
 

marce

Active Member
Hab's spontan gefunden, ist nicht perfekt und aus meiner Sicht will ich da noch optimieren - aber damit hat's zumindest funktioniert, Web tut mit dem (hier: Wildcard-Zertifikat) und die Admin-Oberfläche mit dem default-Glassfish-Zert. von Oracle.

Konvertieren des Zertifikates, des Private Keys und ggf. der Intermediates in ein P12-File
Code:
cat /etc/ssl/certs/ca-bundle.trust.crt intermediates.crt > ca-certs.pem
openssl pkcs12 -export -in ${domain}.crt -inkey ${domain}.key -chain -CAfile ca-certs.pem -name "*.${domain}" -out ${domain}.p12
(wichtig: Passwort vergeben, sonst erfolgt beim Import des FIles in den Keystore eine Null-Pointer-Exception

Kopieren des originalen GlassFish-Keystores
Code:
cp /usr/local/glassfish4/glassfish/domains/domain1/config/keystore.jks .
Importieren des erstellten P12-Files in den KeyStore
Code:
keytool -importkeystore -deststorepass changeit -destkeystore keystore.jks -srckeystore ${domain}.p12 -srcstoretype PKCS12
Kontrolle
Code:
keytool -list -v -keystore keystore.jks
Keystore zurückkopieren
Code:
cp keystore.jks /usr/local/glassfish4/glassfish/domains/domain1/config/keystore.jks
... danach dann noch
Code:
./asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.cert-nickname=*.${domain}
./asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.ssl3-tls-ciphers=+TLS_RSA_WITH_AES_128_CBC_SHA,+SSL_RSA_WITH_3DES_EDE_CBC_SHA,+TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,+TLS_DHE_DSS_WITH_AES_128_GCM_SHA256,+SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA,+SSL_RSA_WITH_DES_CBC_SHA,+SSL_DHE_RSA_WITH_DES_CBC_SHA,+SSL_DHE_DSS_WITH_DES_CBC_SHA,+SSL_RSA_EXPORT_WITH_DES40_CBC_SHA,+SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA,+SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA,+TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256,+TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,+TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,+TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,+TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,+TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256,+TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,+TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,+TLS_ECDH_anon_WITH_AES_128_CBC_SHA,+TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA,+TLS_ECDH_ECDSA_WITH_NULL_SHA,+TLS_ECDH_RSA_WITH_NULL_SHA,+TLS_ECDH_anon_WITH_NULL_SHA,+TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,+TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,+TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,+TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,+TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,+TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,+TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,+TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,+TLS_ECDHE_ECDSA_WITH_NULL_SHA,+TLS_ECDHE_RSA_WITH_NULL_SHA
Ich hab' noch was kürzeres gefunden, da kam ich aber noch nicht zum testen...
Am meisten nervt mich der 1. Schritt (cat /etc/ssl/certs/ca-bundle.trust.crt ...) - aber ohne den habe ich es irgendwie nie hinbekommen, zumindest nicht bestehenden Zertifkaten und Keys, die nicht über Java direkt erstellt wurden sondern mit openssl.

Die Cypher-Liste kann man sicherlich auch optimieren und entschlacken...
 
Last edited by a moderator:

Rallenaldo

New Member
Hi.

Vielen dank für die Mühen.

Aber da haben wir ja schon mein erstes Problem. Wie bekomme ich den private key :D?

Muss ich dazu das StartSSL Tool Startcom verwenden?
 

marce

Active Member
hm, den priv. Key solltest Du eigentlich haben - entweder über openssl erstellt oder evtl. auch zusammen mit dem CSR über irgendwelche Web-Tools, wie das bei StartSSL aussieht weiß ich gerade nicht (da wo ich die verwendet habe habe ich den priv. Key selbst erstellt)
 

kannnix

Registered User
Für welche der beiden Optionen hast du dich beim Prozess entschieden?

Code:
Please submit your Certificate Signing Request (CSR):
[ ] Generated by Myself   (.cer PEM format certificate)
You can use StartComTool.exe to generate the CSR.
or use the openssl command: openssl req -newkey rsa:2048 -keyout yourname.key -out yourname.csr

[ ] Generated by IE Browser to get .PFX format certificate

Please use Windows IE browser, once your certificate is issued, just click the issued certificate to install it into your Windows system,
then you can export it to .PFX format in IE "Internet Options" - "Content" - "Certificates".
 

Attachments

Rallenaldo

New Member
Ich habe mit dem Internet Explorer das PFX File erstellt. Diese habe ich nun auf der Festplatte.

@marce:

Ich bin noch nicht dazu gekommen deinen Code auszuprobieren. Dennoch vielen Dank.
 

Rallenaldo

New Member
Hi.

Ich habe mit diesem Tutorial meinen private Key aus der PFX Datei bekommen.

Jetzt habe ich aber bei Punkt 1 das Problem, dass er mir beim openssl Befehl folgenden Fehler bringt:

Loading 'screen' into random state - done
No certificate matches private key
unable to write 'random state'


Erfahrungen damit?
 

Top