Introduction

  • If JOC Cockpit is installed for the high security level then deployment of workflows requires external signing.
    • For the low security level the private key of the root account available with the JS7 - Database is used for all users.
    • For the medium security level the user's individual private key available with the JS7 database is used.
    • For the high security level signing is performed outside of JOC Cockpit. No private keys are stored with JOC Cockpit and the JS7 database.
  • For details see JS7 - Security Architecture.
  • For automated signing see JS7 - Signing Workflows for High Security Level.

Prerequisites

Required: User Signing Certificate

Each user with the permission to deploy workflows has to add their X.509 signing certificate to their profile like this:

Optional: Root CA Certificate

In addition, the X.509 Root CA Certificate which signed the user's signing certificate can be added to JOC Cockpit. There is a single Root CA Certificate for all user profiles.



  • Any user signing certificates have to be available with the Controller instances and Agents. Certificates are stored in the config/private/trusted-x509-keys sub-directory of Controller and Agent installations.
  • If a Root CA Certificate is present in JOC Cockpit then it is sufficient to add the Root CA Certificate to the config/private/trusted-x509-keys sub-directory of Controller and Agent installations.
    • No further user signing certificates have to be added to Controller instances or Agents as long as user signing certificates are created by the same Root CA.
    • This mechanism implies that any user signing certificate signed by the same Root CA Certificate will be accepted.
    • Users who do not wish to use this implicit mechanism should not add the Root CA Certificate to the Controller instances and Agents but should add individual user signing certificates only.

Deployment Process Overview

  • Users have to export workflows using the Export operation available from the JOC Cockpit's Configuration view.

    • Other deployable objects such as File Order Sources, Job Resources, Notice Boards, Resource Locks etc. do not require signing.
    • Releasable objects that are not digitally signed include Calendars, Schedules, Script Includes, Job Templates etc.
  • Deployment tasks include:
    • Exporting workflows using the checkbox for Signing to a .tar.gz/.zip export archive file.

    • Extracting the export archive file.
      • The export archive file includes a meta_inf file and related folders and files for workflows.
    • Signing the extracted workflow files.
    • Storing the base64 encoded signature file for each workflow file in same folder.
    • Note that each signature file has to use the same name as the original workflow with an additional file extension.
      • for X.509 RSA/ECDSA signature files use the file extension .sig.
      • for PGP signature files use the file extension .asc.
    • Adding signature files to a .tar.gz/.zip import archive file. This includes that the meta_inf file is available in the top-level folder of the import archive file.
    • Uploading the import archive file using the Import and Deploy button available from the JOC Cockpit's Configuration view..

Example for Deployment Process

Export

  • Click Export in the context menu of a folder or use the Export button in the right upper corner of the Configuration view:



  • In the Export popup window check the checkbox for Signing:



  • Select the workflows to deploy.

Signing

The following steps are explained for manual signing. For automated signing see JS7 - Signing Workflows for High Security Level.

It is essential that the signing procedure is performed on a secure device and in a secure manner outside of the host operating JOC Cockpit.

Extract the export archive file and preserve the folder structure of included workflow files:


Signing Workflow Files

This example makes use of OpenSSL to sign a workflow file in two steps:

Step 1: Create binary signature file from signing a workflow file
openssl dgst -sha256 -sign c:\tmp\sos.private-ec-key.pem -out c:\tmp\example-wf.workflow.json.sig.bin c:\tmp\example-wf.workflow.json
  • -sha256
    • the signer algorithm
  • -sign c:\tmp\sos.private-ec-key.pem
    • the private key file used to sign the workflow file
  • -out c:\tmp\example-wf.workflow.json.sig.bin
    • the path to the output file that contains the binary representation of the signature
  • c:\tmp\example-wf.workflow.json
    • the path to the original workflow file.


Step 2: Convert binary signature file to base64 encoding
openssl base64 -in c:\tmp\example-wf.workflow.json.sig.bin -out c:\tmp\example-wf.workflow.json.sig
  • base64
    • OpenSSL switch to transform the signature file from binary encoding to base64 encoding
  • -in c:\tmp\example-wf.workflow.json.sig.bin
    • the binary encoded signature file as created in step 1)
  • -out c:\tmp\example-wf.workflow.json.sig
    • the base64 encoded signature file to be created that carries a .sig extension and that will be picked up later on by JOC Cockpit when importing workflows and signatures.

The procedure for adding workflow files and signature files to an import archive includes the following steps:

  • base64 encoded signature files have to be available in the same folder as the workflow file.
  • Creating a .tar.gz/.zip import archive file that includes the workflow files and signature files.
    • The exported archive contains the meta_inf file. This file does not have to be signed. However, it should be present in the top-level folder of the import archive file.
  • Importing and deploying the archive file using the Import and Deploy operation of JOC Cockpit.



Enter the signing algorithm using default Java names:


Supported signing algorithm names include:

OpenSSLJava with RSAJava with ECDSA
sha512SHA512withRSA-
sha256SHA256withRSASHA256withECDSA


During import, any workflow files and the signature files from the import archive file will be deployed to Controller instances & Agents. This includes validation by Controller instances and Agents independently. After successful validation the workflows will be available in a deployed state that is ready to accept orders for workflow execution.



  • No labels