SSL configuration on JBoss EAP 6.4

From berki WIKI
Revision as of 16:51, 12 May 2021 by Adam (talk | contribs) (Keystore létrehozása)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

SSL beállítása

Korábban már létrehoztuk az autentikációs hatóságot (mycompany-ca.pem) ami aláírta az myproject.mycompany.hu és az jenkins.mycompany.hu tanúsítványokat. A lokális szerver példányt is csak https eléréssel lehet futtatni a HTTPs sütik használata miatt. Két lehetőségünk van. Vagy elé teszünk egy apache-ot, ami https-en fut, vagy beállítjuk a jboss-ban a https használatát. Én az utóbbit használtam.


Az alernat-ca-t már korábban importáltuk a böngészőbe mint cert hatóság, így minden általa aláírt cert-et el fog fogadni a böngésző, ami különösen Chrome-ban hasznos, mert nem lehet permanensen elfogadni.


SSL kulcsok legyártása

Lokális szerver privát kulcsa

$ openssl genrsa -out myproject.mycompany.local-server.key 2048
Generating RSA private key, 2048 bit long modulus
.......+++
.............................................+++
e is 65537 (0x10001)

Aláírás kérő legyártása a titkos kulcsból

Az aláírás kérő már tartalmazza a domain nevet is, a lényeg itt, hogy az aláró hatóság azt bizonyítja, hogy a cert a domain névhez tartozik.

Ez a Common Name paraméter, ezt nem szabad elrontani. Az itt megadott névvel lehet csak elérni a szervert (myproject.mycompany.local). Ezt majd fel kell venni a host fájlba, hogy a localhost-ra mutasson.

$ openssl req -new -key myproject.mycompany.local-server.key -out myproject.mycompany.local-server.req
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:HU
State or Province Name (full name) []:BUD
Locality Name (eg, city) [Default City]:BUD
Organization Name (eg, company) [Default Company Ltd]:mycompany Zrt.
Organizational Unit Name (eg, section) []:myproject
Common Name (eg, your name or your server's hostname) []:myproject.mycompany.local <<<----------------- az egyetlen fontos paraméter
Email Address []:berki.adam@mycompany.hu
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:


Cert legyártása

Írjuk alá a korábban már használt mycompany-ca -val az aláírás kérőt.

$ openssl x509 -req -in myproject.mycompany.local-server.req -CA mycompany-ca.pem -CAkey mycompany-ca.key -set_serial 102 -days 3650 -outform PEM -out myproject.mycompany.local-server.cer


PKCS12 keystore legyártása

A titkos kulcsunkból és a hozzá tartozó cert-ből csinálni kell egy PKCS12 keystore fájlt, ami mind a kettőt tartalmazza, mert csak így lehet a java keystore-ba importálni.

ImportantIcon.png

Note
Fontos, hogy adjunk meg jelszót a keystore-hoz, mert mikor majd a java keystor-ba importáljuk, panaszkondi fog, ha nincs jelszó


A PKCS12 keystore legyártásakor a keystore-t el kell nevezni a -name paraméterben. Az itt megadott név fontos lesz a java keystore-ba való importáláskor, ezzel a névvel kell majd rá hivatkozni, máshogy nem lehet importálni.

$ openssl pkcs12 -export -name myprojectlocalcert -in myproject.mycompany.local-server.cer -inkey myproject.mycompany.local-server.key -out myproject.mycompany.local-server.p12
Enter Export Password:
Verifying - Enter Export Password:


Java keystore

Keystore létrehozása

Hozzunk létre egy üres keystor-t a JBoss bin mappájában:

$ /usr/lib/jvm/jdk1.8.0_45/bin/keytool -genkey -alias jbossStore -keyalg RSA -keystore /home/adam/runable/jboss/EAP-6.4.0_second/bin/myproject.keystore
Enter keystore password: 
Re-enter new password: 
What is your first and last name?
[Unknown]: Adam Berki
What is the name of your organizational unit?
[Unknown]: mycompany Zrt.
What is the name of your organization?
[Unknown]: myproject
What is the name of your City or Locality?
[Unknown]: BUD
What is the name of your State or Province?
[Unknown]: BUD
What is the two-letter country code for this unit?
[Unknown]: HUN
Is CN=Adam Berki, OU=mycompany Zrt., O=myproject, L=BUD, ST=BUD, C=HUN correct?
[no]: yes
Enter key password for <jbossStore>
(RETURN if same as keystore password): 
Re-enter new password:


ca importálása

Rakjuk be a keystore-a az mycompany-ca cert. hatóságot, hogy a szerverünk is megbízzon mindenkiben akinek a kulcsát ezzel írtuk alá:

$ /usr/lib/jvm/jdk1.8.0_45/bin/keytool -import -alias mycompanyAtuth -keystore /home/adam/runable/jboss/EAP-6.4.0_second/bin/myproject.keystore -trustcacerts -file /home/adam/svn/myproject/Project/Documentation/TechnicalDocuments/apache/mycompany-ca.pem
Enter keystore password: 
Owner: EMAILADDRESS=berki.adam@mycompany.hu, CN=ca.mycompany.hu, OU=mycompany-CA Divison, O=mycompany Zrt, L=Budapest, C=HU
Issuer: EMAILADDRESS=berki.adam@mycompany.hu, CN=ca.mycompany.hu, OU=mycompany-CA Divison, O=mycompany Zrt, L=Budapest, C=HU
Serial number: 92484dba84d2d5ee
Valid from: Fri Oct 07 13:26:23 CEST 2016 until: Mon Oct 05 13:26:23 CEST 2026
Certificate fingerprints:
MD5: 3D:BC:11:FC:E2:DD:C4:FE:50:CA:CF:34:B3:84:EF:5C
SHA1: 3C:90:F0:45:F7:EF:37:92:D1:9B:AE:E5:2B:B8:67:26:8F:26:1F:6E
SHA256: 2E:EC:FB:C6:F5:33:0D:6A:43:41:A8:BE:11:A3:E8:A0:3F:21:18:82:CB:89:02:7C:0A:28:76:41:8C:58:AA:94
Signature algorithm name: SHA256withRSA
Version: 3
Extensions:
#1: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 6E 60 BB 76 75 06 22 3F D7 6E 63 1B 52 00 F3 2A n`.vu."?.nc.R..*
0010: 83 7A F9 7C .z..
]
]
#2: ObjectId: 2.5.29.19 Criticality=false
BasicConstraints:[
CA:true
PathLen:2147483647
]
#3: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 6E 60 BB 76 75 06 22 3F D7 6E 63 1B 52 00 F3 2A n`.vu."?.nc.R..*
0010: 83 7A F9 7C .z..
]
]
Trust this certificate? [no]: yes
Certificate was added to keystore

pkcs12 keystore importálása

Töltsük be a korábban létrehozott pkcs12 keystore-t amiben a myproject.mycompany.local cert-je és titkos kulcsa van.

ImportantIcon.png

Note
Fontos hogy az -alias paraméterben azt adjuk meg, amit a pkcs12 létrehozásakor a -name paraméterben megadtunk. Elsőként meg kell adni a pkcs12 kulcsát majd a java keystore kulcsát

$ /usr/lib/jvm/jdk1.8.0_45/bin/keytool -importkeystore -destkeystore /home/adam/runable/jboss/EAP-6.4.0_second/bin/myproject.keystore -srckeystore myproject.mycompany.local-server.p12 -srcstoretype pkcs12 -alias myprojectlocalcert
Enter destination keystore password: 
Enter source keystore password:

Keystore karbantartás

Java keystore listázása

$ /usr/lib/jvm/jdk1.8.0_45/bin/keytool -list -keystore /home/adam/runable/jboss/EAP-6.4.0_second/bin/myproject.keystore
Enter keystore password:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 3 entries


mycompanyatuth, Oct 26, 2016, trustedCertEntry, 
Certificate fingerprint (SHA1): 3C:90:F0:45:F7:EF:37:92:D1:9B:AE:E5:2B:B8:67:26:8F:26:1F:6E


jbossstore, Oct 26, 2016, PrivateKeyEntry, 
Certificate fingerprint (SHA1): 89:B5:FD:07:08:4B:C0:E4:6C:4F:B9:A1:BF:6E:7A:8C:B0:C1:14:92


myprojectlocalcert, Oct 27, 2016, PrivateKeyEntry, 
Certificate fingerprint (SHA1): 5D:4C:B1:21:48:43:7C:2A:04:DD:E3:BB:B2:FD:34:2E:80:EC:69:EB


Törlés a keystore-bol

$ /usr/lib/jvm/jdk1.8.0_45/bin/keytool -delete -alias myprojectlocalcert -keystore /home/adam/runable/jboss/EAP-6.4.0_second/bin/myproject.keystore


JBoss beállítások

A standalon.xml-ben a urn:jboss:domain:web:2.2 modult cseréljük ki az alábbira. Fontos, hogy a key-alias paraméterben a pkcs12 kulcs importálásakor megadott alias-t használjuk, hogy a java keystore-bol ki tudja választani a szerver, hogy melyik titkos kulcsot használja. A java keystor jelszavát is meg kell adni, hogy a JBoss tudjon olvasni belőle.

<profile>
      <subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default-host" native="false"> 
	    <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http" secure="true"/>        
            <connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" secure="true">
                <ssl name="https" key-alias="myprojectlocalcert" password="liteon" certificate-key-file="/home/adam/runable/jboss/EAP-6.4.0_second/bin/myproject.keystore" cipher-suite="RSA_WITH_3DES_EDE_CBC_SHA,DHE_RSA_WITH_3DES_EDE_CBC_SHA,RSA_WITH_AES_128_CBC_SHA,DHE_RSA_WITH_AES_128_CBC_SHA,RSA_WITH_AES_256_CBC_SHA,DHE_RSA_WITH_AES_256_CBC_SHA,RSA_WITH_AES_128_CBC_SHA256,RSA_WITH_AES_256_CBC_SHA256,DHE_RSA_WITH_AES_128_CBC_SHA256,DHE_RSA_WITH_AES_256_CBC_SHA256,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384" protocol="TLSv1.2"/>
            </connector>
            <virtual-server name="default-host" enable-welcome-root="true">
                <alias name="myproject.mycompany.local"/>
            </virtual-server>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:weld:1.0"/>
    </profile>

Az alkalmazás itt érhető el: https://myproject.mycompany.local:8443/myproject/Login/Login.do A böngészőnek el kell fogadni a cert-et.