diff --git a/koji-setup/deploy-koji.sh b/koji-setup/deploy-koji.sh index 2a75d57..f87b617 100755 --- a/koji-setup/deploy-koji.sh +++ b/koji-setup/deploy-koji.sh @@ -44,6 +44,7 @@ default_crl_days = 30 default_md = sha512 preserve = no policy = policy_match +copy_extensions = copy [policy_match] countryName = match @@ -90,14 +91,19 @@ authorityKeyIdentifier = keyid,issuer:always [v3_ca] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer:always -basicConstraints = CA:true +basicConstraints = CA:TRUE +subjectAltName = @alternate_names + +[alternate_names] +DNS.1 = $KOJI_MASTER_FQDN +IP.1 = $KOJI_MASTER_IP EOF # Generate and trust CA touch "$KOJI_PKI_DIR"/index.txt echo 01 > "$KOJI_PKI_DIR"/serial openssl genrsa -out "$KOJI_PKI_DIR"/private/koji_ca_cert.key 2048 -openssl req -subj "/C=$COUNTRY_CODE/ST=$STATE/L=$LOCATION/O=$ORGANIZATION/OU=koji_ca/CN=$KOJI_MASTER_FQDN" -config "$KOJI_PKI_DIR"/ssl.cnf -new -x509 -days 3650 -key "$KOJI_PKI_DIR"/private/koji_ca_cert.key -out "$KOJI_PKI_DIR"/koji_ca_cert.crt -extensions v3_ca +openssl req -subj "/C=$COUNTRY_CODE/ST=$STATE/L=$LOCATION/O=$ORGANIZATION/OU=koji_ca/CN=$KOJI_MASTER_FQDN" -addext "subjectAltName=DNS:$KOJI_MASTER_FQDN,IP:$KOJI_MASTER_IP" -config "$KOJI_PKI_DIR"/ssl.cnf -new -x509 -days 3650 -key "$KOJI_PKI_DIR"/private/koji_ca_cert.key -out "$KOJI_PKI_DIR"/koji_ca_cert.crt -extensions v3_ca mkdir -p /etc/ca-certs/trusted cp -a "$KOJI_PKI_DIR"/koji_ca_cert.crt /etc/ca-certs/trusted while true; do @@ -109,10 +115,10 @@ done # Generate the koji component certificates and the admin certificate and generate a PKCS12 user certificate (for web browser) cp "$SCRIPT_DIR"/gencert.sh "$KOJI_PKI_DIR" pushd "$KOJI_PKI_DIR" -./gencert.sh kojiweb "/C=$COUNTRY_CODE/ST=$STATE/L=$LOCATION/O=$ORGANIZATION/OU=kojiweb/CN=$KOJI_MASTER_FQDN" -./gencert.sh kojihub "/C=$COUNTRY_CODE/ST=$STATE/L=$LOCATION/O=$ORGANIZATION/OU=kojihub/CN=$KOJI_MASTER_FQDN" -./gencert.sh kojiadmin "/C=$COUNTRY_CODE/ST=$STATE/L=$LOCATION/O=$ORGANIZATION/OU=$ORG_UNIT/CN=kojiadmin" -./gencert.sh kojira "/C=$COUNTRY_CODE/ST=$STATE/L=$LOCATION/O=$ORGANIZATION/OU=$ORG_UNIT/CN=kojira" +./gencert.sh kojiweb "/C=$COUNTRY_CODE/ST=$STATE/L=$LOCATION/O=$ORGANIZATION/OU=kojiweb/CN=$KOJI_MASTER_FQDN" "subjectAltName=DNS:$KOJI_MASTER_FQDN,IP:$KOJI_MASTER_IP" +./gencert.sh kojihub "/C=$COUNTRY_CODE/ST=$STATE/L=$LOCATION/O=$ORGANIZATION/OU=kojihub/CN=$KOJI_MASTER_FQDN" "subjectAltName=DNS:$KOJI_MASTER_FQDN,IP:$KOJI_MASTER_IP" +./gencert.sh kojiadmin "/C=$COUNTRY_CODE/ST=$STATE/L=$LOCATION/O=$ORGANIZATION/OU=$ORG_UNIT/CN=kojiadmin" "subjectAltName=DNS:kojiadmin,IP:$KOJI_MASTER_IP" +./gencert.sh kojira "/C=$COUNTRY_CODE/ST=$STATE/L=$LOCATION/O=$ORGANIZATION/OU=$ORG_UNIT/CN=kojira" "subjectAltName=DNS:kojira,IP:$KOJI_MASTER_IP" popd # Copy certificates into ~/.koji for kojiadmin @@ -326,7 +332,7 @@ sudo -u kojiadmin koji edit-host --capacity="$KOJID_CAPACITY" "$KOJI_SLAVE_FQDN" # Generate certificates pushd "$KOJI_PKI_DIR" -./gencert.sh "$KOJI_SLAVE_FQDN" "/C=$COUNTRY_CODE/ST=$STATE/L=$LOCATION/O=$ORGANIZATION/CN=$KOJI_SLAVE_FQDN" +./gencert.sh "$KOJI_SLAVE_FQDN" "/C=$COUNTRY_CODE/ST=$STATE/L=$LOCATION/O=$ORGANIZATION/CN=$KOJI_SLAVE_FQDN" "subjectAltName=DNS:$KOJI_SLAVE_FQDN,IP:$KOJI_SLAVE_IP" popd if [[ "$KOJI_SLAVE_FQDN" = "$KOJI_MASTER_FQDN" ]]; then diff --git a/koji-setup/gencert.sh b/koji-setup/gencert.sh index 9c6c896..ce185cb 100755 --- a/koji-setup/gencert.sh +++ b/koji-setup/gencert.sh @@ -4,12 +4,13 @@ KOJI_USER="$1" CERT_SUBJECT="$2" +CERT_EXT="$3" openssl genrsa -out private/"$KOJI_USER".key 2048 if [ -z "$CERT_SUBJECT" ]; then openssl req -config ssl.cnf -new -nodes -out certs/"$KOJI_USER".csr -key private/"$KOJI_USER".key else - openssl req -subj "$CERT_SUBJECT" -config ssl.cnf -new -nodes -out certs/"$KOJI_USER".csr -key private/"$KOJI_USER".key + openssl req -subj "$CERT_SUBJECT" -addext "$CERT_EXT" -config ssl.cnf -new -nodes -out certs/"$KOJI_USER".csr -key private/"$KOJI_USER".key fi openssl ca -batch -config ssl.cnf -keyfile private/koji_ca_cert.key -cert koji_ca_cert.crt -out certs/"$KOJI_USER".crt -outdir certs -infiles certs/"$KOJI_USER".csr cat certs/"$KOJI_USER".crt private/"$KOJI_USER".key > "$KOJI_USER".pem diff --git a/koji-setup/parameters.sh b/koji-setup/parameters.sh index e5ef4f6..f9eb420 100644 --- a/koji-setup/parameters.sh +++ b/koji-setup/parameters.sh @@ -6,7 +6,9 @@ export KOJI_DIR=/srv/koji export KOJI_MOUNT_DIR=/mnt/koji export KOJI_MASTER_FQDN="$(hostname -f)" +export KOJI_MASTER_IP="$(hostname -i)" export KOJI_SLAVE_FQDN="$KOJI_MASTER_FQDN" +export KOJI_SLAVE_IP="$KOJI_MASTER_IP" export KOJI_URL=https://"$KOJI_MASTER_FQDN" export KOJID_CAPACITY=16 export TAG_NAME=clear