cacert-devsetup/README.md

86 lines
3.5 KiB
Markdown
Raw Normal View History

# CAcert local development setup
2020-12-23 06:30:43 +01:00
This repository contains a local development environment setup for the CAcert
software.
It runs multiple Docker containers using docker-compose the provide different
parts of the CAcert software. This includes CATS (CAcert automated testing
system), the test manager software and the WebDB software as well as supporting
server components (database, SMTP and IMAP).
## Prerequisites
* Linux system (tested on Debian Bullseye)
* [Docker](https://tracker.debian.org/pkg/docker.io)
* [docker-compose](https://pypi.org/project/docker-compose/)
* [openssl](https://tracker.debian.org/pkg/openssl)
* [myrepos](https://tracker.debian.org/pkg/myrepos)
```shell
sudo apt-get update
sudo apt-get install docker.io openssl myrepos
sudo adduser $USER docker
newgrp docker
python3 -m pip install --user -U docker-compose
# make sure that ~/.local/bin is in $PATH
```
## Usage
```shell
git clone https://git.dittberner.info/jan/cacert-devsetup.git
cd cacert-devsetup
mr checkout
```
Create a .env file that defines the following variables
Variable | Usage
--- | ---
2020-12-23 06:30:43 +01:00
`CATCHALL_MAILBOX_PASSWORD` | The password of the IMAP mailbox used by the test manager software
2020-12-22 08:49:18 +01:00
`CLIENT_CERT_EMAIL` | email address for client certificate generated by `setup_test_ca.sh`
2020-12-23 06:30:43 +01:00
`CLIENT_CERT_EMAIL` | email address that should be included in the test client certificate that is generated in `testca/certs/testclient.crt.pem` and included in `testca/certs/testclient.p12`
2020-12-22 08:49:18 +01:00
`CLIENT_CERT_PASSWORD` | PKCS#12 keystore password for client certificate generated by `setup_test_ca.sh`
2020-12-23 06:30:43 +01:00
`CLIENT_CERT_PASSWORD` | password used to encrypt `testca/certs/testclient.p12`
`CLIENT_CERT_USERNAME` | full name for a user that is included in the CN field of the subject distinguished name in the test client certificate
`CLIENT_CERT_USERNAME` | user name for client certificate generated by `setup_test_ca.sh`
`MYSQL_CATS_PASSWORD` | Database password for cats
`MYSQL_CATS_USER` | Database user for cats
`MYSQL_MGR_PASSWORD` | Database password for the test manager
`MYSQL_MGR_USER` | Database user for the test manager
`MYSQL_ROOT_PASSWORD` | Database root password
`MYSQL_WEBDB_PASSWORD` | Database password for webdb
`MYSQL_WEBDB_USER` | Database user for webdb
2020-12-23 06:30:43 +01:00
```shell
2021-04-23 17:01:12 +02:00
echo "CATCHALL_MAILBOX_PASSWORD='$(openssl rand -base64 18)'
2020-12-23 06:30:43 +01:00
CLIENT_CERT_EMAIL=user@example.org
2021-04-23 17:01:12 +02:00
CLIENT_CERT_PASSWORD='$(openssl rand -base64 18)'
CLIENT_CERT_USERNAME='John Doe'
MYSQL_WEBDB_PASSWORD='$(openssl rand -base64 18)'
MYSQL_WEBDB_USER=cacert_dev
2021-04-23 17:01:12 +02:00
MYSQL_CATS_PASSWORD='$(openssl rand -base64 18)'
2020-12-23 06:30:43 +01:00
MYSQL_CATS_USER=cats
2021-04-23 17:01:12 +02:00
MYSQL_MGR_PASSWORD='$(openssl rand -base64 18)'
2020-12-23 06:30:43 +01:00
MYSQL_MGR_USER=cacert_mgr
2021-04-23 17:01:12 +02:00
MYSQL_ROOT_PASSWORD='$(openssl rand -base64 18)'" | sed 's@/@_@g' > .env
./setup_test_ca.sh
docker-compose up
```
2020-12-23 06:30:43 +01:00
After these steps you should be able to reach the CAcert application at
https://www.cacert.localhost:8443/. The test manager application is reachable
2020-12-23 06:30:43 +01:00
at https://mgr.cacert.localhost:9443/. CATS is reachable at
https://cats.cacert.localhost:7443/. The magic hostname resolution works on
systems using systemd's nss module for host resolution. If you do not have that
on your system you might need a set of entries in your `/etc/hosts` or its
equivalent for your operating system.
2020-12-22 08:49:18 +01:00
2020-12-23 06:30:43 +01:00
A client certificate is created by `setup_test_ca.sh` and is placed in
`testca/certs/clientcert.p12` which can be imported in a browser to support
client certificate authentication. You may also wish to add the CA certificates
in `testca/root/ca.crt.pem` and `testca/class3/ca.crt.pem` to your browser's
trusted CA certificate list.