Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Connections from user browsers to the JOC Cockpit can be secured by HTTPS with TLS/SSL certificates.
  • Connections from clients using the JS7 - REST Web Service API (that ships with the JOC Cockpit) can be secured by HTTPS with TLS/SSL certificates.
  • This article describes the steps required to set up secure HTTPS communication with the JOC Cockpit. This includes to set up a standalone JOC Cockpit instance or a JOC Cockpit cluster with a number of instances.

...

  • JOC_HOME is the installation path that is specified during JOC Cockpit installation:
    • /opt/sos-berlin.com/js7/joc (default on Unix)
    • C:\Program Files\sos-berlin.com\js7\joc (default on Windows)
  • JETTY_HOME = JOC_HOME/jetty
  • JETTY_BASE is Jetty's base directory that is specified during JOC Cockpit installation:
    • /home/<setup-user>/sos-berlin.com/js7/joc (default on Unix)
    • C:\ProgramData\sos-berlin.com\js7\joc (default on Windows)

...

  • On the JOC Cockpit server create the keystore using openssl and the keytool from your Java JRE, JDK or other third party utility.
    • For use with a third party utility create a keystore, e.g. https-keystore.p12, in PKCS12 format and import:
      • the JOC Cockpit private key and certificate for Server Authentication
      • the Root CA Certificate
      • Intermediate CA Certificate(s)
    • The examples below describe a possible approach for certificate management, however, there are other ways to achieve similar results.
      • Example for importing an existing private key and CA-signed certificate to a keystore:

        Code Block
        languagebash
        titleExample how to add a private key and CA-signed certificate to a PKCS12 keystore
        # Assume the fully qualified domain name (FQDN) of the JOC Cockpit server to be "joc.example.com"
        
        # If the JOC Cockpit CA-signed certificate is provided from a pkcs12 keystore (certificate.p12), extract the JOC Cockpit certificate to a .crt file in PEM format (joc.example.com.crt)
        # openssl pkcs12 -in certificate.p12 -nokeys -out joc.example.com.crt
        
        # Import the JOC Cockpit private key (joc.example.com.key) and JOC Cockpit certificate (joc.example.com.crt) from PEM format to a new keystore (joc.example.com.p12)
        openssl pkcs12 -export -in joc.example.com.crt -inkey joc.example.com.key --name joc.example.com -out "JETTY_BASE/resources/joc/https-keystore.p12"
        Hide If
        currentSpaceJS7
        Code Block
        languagebash
        titleExample how to add a private key and CA-signed certificate to a PKCS12 keystore
        # If the JOC Cockpit's private key and certificate are provided with a .jks keystore (keypair.jks) then temporarily convert the keystore to pkcs12 (keystore.p12)
        #   for later use with openssl, assuming the alias name of the JOC Cockpit private key being "joc.example.com"
        # keytool -importkeystore -srckeystore keypair.jks -srcstoretype JKS -destkeystore keystore.p12 -deststoretype PKCS12 -srcalias joc.example.com
        
        # Assuming the JOC Cockpit private key from a pkcs12 keystore (keystore.p12), store the JOC Cockpit private key to a .key file in PEM format (joc-https.key)
        openssl pkcs12 -in keystore.p12 -nocerts -out joc-https.key
        
        # Concatenate the CA Root certificate and optionally CA Intermediate certificates to a single CA Bundle certificate file (ca-bundle.crt)
        cat RootCACertificate.crt > ca-bundle.crt
        cat CACertificate.crt >> ca-bundle.crt
        
        # Export the JOC Cockpit private key (joc-https.key), JOC Cockpit certificate (joc-https.crt) and CA Bundle (ca-bundle.crt) in PEM format to a new keystore (https-keystore.p12)
        #   assume the fully qualified domain name (FQDN) of the JOC Cockpit server to be "joc.example.com"
        openssl pkcs12 -export -in joc-https.crt -inkey joc-https.key -chain -CAfile ca-bundle.crt -name joc.example.com -out "JETTY_BASE/resources/joc/https-keystore.p12"
        
        # If you require use of a .jks keystore type then convert the pkcs12 keystore, assuming the alias name of the JOC Cockpit private key to be "joc.example.com"
        # keytool -importkeystore -srckeystore https-keystore.p12 -srcstoretype PKCS12 -destkeystore https-keystore.jks -deststoretype JKS -srcalias joc.example.com



      • Example for creating a private key and self-signed certificate and importing to a keystore

        • Refer to examples available from JS7 - How to create self-signed Certificates, chapter Creating a Server Certificate.

          Code Block
          languagebash
          titleExample how to create a private key and self-signed certificate
          # Creating the private key and self-signed certificate for the given validity period
          ./create_certificate.sh --dns=joc.example.com --days=365
        • Refer to examples available from JS7 - How to add SSL TLS Certificates to Keystore and Truststore.

          Code Block
          titleExample how to add a private key and certificate to a PKCS12 keystore
          # Adding the private key and certificate to a keystore
          ./js7_create_certificate_store.sh \
              --keystore=JETTY_BASE/resources/joc/https-keystore.p12 \
              --key=joc.example.com.key \
              --cert=joc.example.com.crt \
              --alias=joc.example.com \
              --password="jobscheduler"


          When using additional arguments for creation of a truststore then users can skip the later step 3:

          Code Block
          titleExample how to add a private key and certificate to a PKCS12 keystore and the Root CA Certificate to a truststore
          # Adding the private key and certificate to a keystore and Root CA Certificate to a truststore
          ./js7_create_certificate_store.sh \
              --keystore=JETTY_BASE/resources/joc/https-keystore.p12 \
              --truststore=JETTY_BASE/resources/joc/https-keystore.p12 \ 
              --key=joc.example.com.key \
              --cert=joc.example.com.crt \
              --alias=joc.example.com \
              --password="jobscheduler" \
              --ca-root=root-ca.crt
          Hide If
          currentSpaceJS7
          Code Block
          languagebash
          titleExample how to generate a private key and self-signed certificate for import into a PKCS12 keystore
          collapsetrue
          # Generate the JOC Cockpit's private key with the "joc.example.com" alias name and certificate in a keystore (https-keystore.p12)
          #   use the fully qualified domain name (FQDN) assumed to be "joc.example.com" and name of your organization for the distinguished name
          #   Note that PKCS12 keystores require to use the same key password and store password
          keytool -genkey -alias "joc.example.com" -dname "CN=joc.example.com,O=organization" -validity 1461 -keyalg RSA -keysize 2048 -keypass jobscheduler -keystore "JETTY_BASE/resources/joc/https-keystore.p12" -storepass jobscheduler -storetype PKCS12

...

The above explanations indicate use of a Root CA Certificate for verification of Client Authentication Certificates certificates when it comes to mutual authentication.

  • In fact use of a Root CA Certificate allows any clients that dispose of a Client Authentication Certificate certificate signed by the same Root CA Certificate or Intermediate CA Certificate(s) to be authenticated. This implication might allow an unwanted number of clients to access JOC Cockpit.
  • Coping strategies include
    • to use a separate Certificate Authority to sign Client Authentication Certificates certificates for access to JOC Cockpit.
    • to import individual Client Authentication Certificates certificates to the JOC Cockpit's truststore instead of using a Root CA Certificate.

...

  • A restart of JOC Cockpit is required to apply modifications to the JOC Cockpit JETTY_BASE/start.d/*.ini configuration file  and JETTY_BASE/resources/joc/joc.properties configuration files configuration file.

Further Resources

...