Skip to content

Commit 195e96f

Browse files
StranDuttonddlees
andauthored
chore: migrate digicert signing action to Node.js 24 successor - BED-8168 (#196)
* chore: migrate digicert signing action to Node.js 24 successor - BED-8168 * cd: align signing action with recommended setup --- Co-authored-by: Dillon Lees <dlees@specterops.io>
1 parent 1d812fb commit 195e96f

1 file changed

Lines changed: 21 additions & 39 deletions

File tree

.github/workflows/publish.yml

Lines changed: 21 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -91,56 +91,38 @@ jobs:
9191
name: azurehound-bin-${{ matrix.os }}-${{ matrix.arch }}
9292
path: unsigned/azurehound-bin-${{ matrix.os }}-${{ matrix.arch }}
9393

94-
- name: Install osslsigncode & pkcs11 engine
95-
run: |
96-
sudo apt-get update
97-
sudo apt-get install -y osslsigncode libengine-pkcs11-openssl
98-
99-
- name: Install DigiCert Client Tools
100-
id: digicert
101-
uses: digicert/ssm-code-signing@1d820463733701cf1484c7eb5d7d24a15ca2c454 # ratchet:digicert/ssm-code-signing@v1.2.1
102-
103-
- name: Set PKCS#11 Paths
104-
id: pkcs11
105-
run: |
106-
SM_TOOLS_DIR=$(dirname "$(realpath '${{ steps.digicert.outputs.PKCS11_CONFIG }}')")
107-
echo "module=${SM_TOOLS_DIR}/smpkcs11.so" >> "$GITHUB_OUTPUT"
108-
LIB_PKCS11="$(dpkg -L libengine-pkcs11-openssl | grep "libpkcs11.so")"
109-
echo "engine=$LIB_PKCS11" >> "$GITHUB_OUTPUT"
110-
111-
- name: Sign Artifacts via DigiCert Signing Manager
94+
- name: Setup SM_CLIENT_CERT_FILE
95+
shell: bash
11296
env:
113-
SM_HOST: ${{ secrets.SM_HOST }}
114-
SM_API_KEY: ${{ secrets.SM_API_KEY }}
11597
SM_CLIENT_CERT_FILE_B64: ${{ secrets.SM_CLIENT_CERT_FILE_B64 }}
116-
SM_CLIENT_CERT_PASSWORD: ${{ secrets.SM_CLIENT_CERT_PASSWORD }}
117-
shell: bash
11898
run: |
119-
export SM_CLIENT_CERT_FILE=$(mktemp)
99+
SM_CLIENT_CERT_FILE="${RUNNER_TEMP}/Certificate_pkcs12.p12"
120100
printenv SM_CLIENT_CERT_FILE_B64 | base64 --decode > "$SM_CLIENT_CERT_FILE"
121-
trap 'rm $SM_CLIENT_CERT_FILE' EXIT
101+
echo "SM_CLIENT_CERT_FILE=${SM_CLIENT_CERT_FILE}" >> "$GITHUB_ENV"
122102
123-
mkdir signed
124-
artifact=unsigned/azurehound-bin-${{ matrix.os }}-${{ matrix.arch }}/azurehound.exe
125-
smctl sign --keypair-alias "${{ secrets.SM_KEYPAIR_ALIAS }}" --input "$artifact" --openssl-pkcs11-engine "${{ steps.pkcs11.outputs.engine }}" --pkcs11-module "${{ steps.pkcs11.outputs.module }}" --tool osslsigncode --verbose
126-
mv "$artifact" "signed/azurehound.exe"
127-
128-
- name: Verify Signed Artifacts
103+
- name: Setup Software Trust Manager & Sign
104+
id: digicert
105+
uses: digicert/code-signing-software-trust-action@fae23a455ba4bde62b64fd7cb2f81ade788f5a95 # ratchet:digicert/code-signing-software-trust-action@v1.2.1
106+
with:
107+
simple-signing-mode: true
108+
input: unsigned/azurehound-bin-${{ matrix.os }}-${{ matrix.arch }}/azurehound.exe
109+
keypair-alias: ${{ secrets.SM_KEYPAIR_ALIAS }}
129110
env:
130111
SM_HOST: ${{ secrets.SM_HOST }}
131112
SM_API_KEY: ${{ secrets.SM_API_KEY }}
132-
SM_CLIENT_CERT_FILE_B64: ${{ secrets.SM_CLIENT_CERT_FILE_B64 }}
113+
SM_CLIENT_CERT_FILE: ${{ env.SM_CLIENT_CERT_FILE}}
133114
SM_CLIENT_CERT_PASSWORD: ${{ secrets.SM_CLIENT_CERT_PASSWORD }}
115+
116+
- name: Cleanup cert file
117+
if: always()
134118
shell: bash
135-
run: |
136-
export SM_CLIENT_CERT_FILE=$(mktemp)
137-
printenv SM_CLIENT_CERT_FILE_B64 | base64 --decode > "$SM_CLIENT_CERT_FILE"
138-
smctl certificate download --keypair-alias "${{ secrets.SM_KEYPAIR_ALIAS }}" --format pem --chain --name cert-chain.pem
139-
trap 'rm $SM_CLIENT_CERT_FILE cert-chain.pem' EXIT
119+
run: rm -f "${{ env.SM_CLIENT_CERT_FILE }}"
140120

141-
for artifact in signed/*; do
142-
osslsigncode verify -CAfile cert-chain.pem "$artifact"
143-
done
121+
- name: Move Signed Artifacts
122+
shell: bash
123+
run: |
124+
mkdir signed
125+
mv unsigned/azurehound-bin-${{ matrix.os }}-${{ matrix.arch }}/azurehound.exe signed/azurehound.exe
144126
145127
- name: Zip Signed Executables
146128
run: |

0 commit comments

Comments
 (0)