io7m | single-page | multi-page | epub | Certusine User Manual
1. Introduction
Previous
Front Matter
Up
3. Configuration
Next

# 2. Installation

- 2.1. Overview
- 2.2. Maven Central
- 2.3. OCI Images
  - 2.3.1. Quay.io
- 2.4. Platform-Specific Issues
  - 2.4.1. SELinux
- 2.5. Migrating From 2.*.*
  - 2.5.1. SQLite Store

## 2.1. Overview

1
The certusine package is available from the following sources:

### 2.1.2. Sources

- Maven Central
- Quay.io

3
Regardless of the distribution method, the certusine package will contain a command named certusine that acts as the main entrypoint to all the package's functionality. The certusine command expects an environment variable named CERTUSINE_HOME to be defined that points to the installation directory. See the documentation for the installation methods below for details.

## 2.2. Maven Central

1
A distribution package can be found at Maven Central.
2
The certusine command requires that a Java 21+ compatible JVM be accessible via /usr/bin/env java.
3
Verify the integrity of the distribution zip file:

### 2.2.4. Verify

    $ gpg --verify com.io7m.certusine.cmdline-4.0.0-beta0001-distribution.zip.asc
    gpg: assuming signed data in 'com.io7m.certusine.cmdline-4.0.0-beta0001-distribution.zip.asc'
    gpg: Signature made Tue 28 Jun 2022 15:01:56 GMT
    gpg:                using RSA key 3CCE59428B30462D10459909C5607DA146E128B8
    gpg:                issuer "contact@io7m.com"
    gpg: using pgp trust model
    gpg: Good signature from "io7m.com (2022 maven-rsa-key) <contact@io7m.com>" [unknown]

5
Unzip the zip file, and set CERTUSINE_HOME appropriately:

### 2.2.6. Extract

    $ unzip com.io7m.certusine.cmdline-4.0.0-beta0001-distribution.zip
    $ export CERTUSINE_HOME=$(realpath certusine)
    $ ./certusine/bin/certusine
    info: Usage: certusine [options] [command] [command options]
    ...

## 2.3. OCI Images

## 2.3.1. Quay.io

1
OCI images are available from Quay.io for use with podman or docker.

### 2.3.1.2. Podman/Docker

    $ podman pull quay.io/io7mcom/certusine:4.0.0-beta0001
    $ podman run quay.io/io7mcom/certusine:4.0.0-beta0001
    certusine: usage: certusine [command] [arguments ...]
    ...

## 2.4. Platform-Specific Issues

## 2.4.1. SELinux

1
The certusine package uses SQLite internally. The certusine package is written in Java and includes native SQLite libraries compiled for a wide range of platforms. At run-time, the native library for the current platform is extracted to a temporary directory. By default, the standard temporary directory specified by the java.io.tmpdir system property is used (/tmp on most Unix-like systems).
2
On systems using SELinux, applications are not allowed to execute code from binaries or libraries that are in a directory that has the tmp_t SELinux type. It is practically guaranteed that any system-wide temporary directory will be configured to have this type. Therefore, in order to run certusine on these systems, it is necessary to specify a directory using the org.sqlite.tmpdir system property. As an example, the OCI image configures this property to use /certusine/var to store the temporary native libraries.

## 2.5. Migrating From 2.*.*

## 2.5.1. SQLite Store

1
Versions of the certusine package prior to 3.0.0 used the MVStore database to store internal certificate state. In version 3.0.0, the certusine package switched to using SQLite.
2
Please either delete the existing store before running 3.0.0 on a system that previously used 2.*.*, or specify a new file name for the store in the configuration file. Certificates will be automatically recreated and placed into the new store on application startup.
1. Introduction
Previous
Front Matter
Up
3. Configuration
Next
io7m | single-page | multi-page | epub | Certusine User Manual