Skip to content

Commit 6c9c4b3

Browse files
authored
Switch Windows code signing from PFX to DigiCert KeyLocker (#5797)
* ci(windows): switch code signing from PFX to DigiCert KeyLocker * test(ui): fix Jest failures after msw 2.13 upgrade
1 parent 4b61ee0 commit 6c9c4b3

6 files changed

Lines changed: 67 additions & 75 deletions

File tree

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,43 @@
11
name: Install Windows certs
22

33
inputs:
4-
WIN_CSC_PFX_BASE64:
4+
WIN_CSC_DIGICERT_API_KEY:
5+
required: true
6+
WIN_CSC_DIGICERT_CLIENT_CERT_B64:
7+
required: true
8+
WIN_CSC_DIGICERT_CLIENT_CERT_PASSWORD:
9+
required: true
10+
WIN_CSC_DIGICERT_HOST:
11+
required: false
12+
default: 'https://clientauth.one.digicert.com'
13+
WIN_CSC_DIGICERT_KEYPAIR_ALIAS:
514
required: true
615

716
runs:
817
using: 'composite'
918
steps:
10-
- name: Setup sign certificates
19+
- name: Setup certificate from base64 secret
20+
shell: bash
21+
run: |
22+
echo "${{ inputs.WIN_CSC_DIGICERT_CLIENT_CERT_B64 }}" | base64 --decode > /d/Certificate_pkcs12.p12
23+
24+
- name: Set DigiCert environment variables
1125
shell: bash
12-
env:
13-
WIN_CSC_PFX_BASE64: ${{ inputs.WIN_CSC_PFX_BASE64 }}
1426
run: |
15-
mkdir -p certs
16-
echo "$WIN_CSC_PFX_BASE64" | base64 -d > certs/redislabs_win.pfx
27+
echo "SM_HOST=${{ inputs.WIN_CSC_DIGICERT_HOST }}" >> "$GITHUB_ENV"
28+
echo "SM_API_KEY=${{ inputs.WIN_CSC_DIGICERT_API_KEY }}" >> "$GITHUB_ENV"
29+
echo "SM_CLIENT_CERT_FILE=D:\\Certificate_pkcs12.p12" >> "$GITHUB_ENV"
30+
echo "SM_CLIENT_CERT_PASSWORD=${{ inputs.WIN_CSC_DIGICERT_CLIENT_CERT_PASSWORD }}" >> "$GITHUB_ENV"
31+
echo "C:\Program Files\DigiCert\DigiCert Keylocker Tools" >> $GITHUB_PATH
32+
33+
- name: Install DigiCert KeyLocker tools
34+
shell: cmd
35+
run: |
36+
curl -X GET https://one.digicert.com/signingmanager/api-ui/v1/releases/Keylockertools-windows-x64.msi/download -H "x-api-key:%SM_API_KEY%" -o Keylockertools-windows-x64.msi
37+
msiexec /i Keylockertools-windows-x64.msi /quiet /qn
38+
39+
- name: Register KSP and sync certificate to Windows certificate store
40+
shell: cmd
41+
run: |
42+
smctl windows ksp register
43+
smctl windows certsync --keypair-alias=${{ inputs.WIN_CSC_DIGICERT_KEYPAIR_ALIAS }}

.github/workflows/pipeline-build-windows.yml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,22 +38,25 @@ jobs:
3838
- name: Setup certs
3939
uses: ./.github/actions/install-windows-certs
4040
with:
41-
WIN_CSC_PFX_BASE64: ${{ secrets.WIN_CSC_PFX_BASE64 }}
41+
WIN_CSC_DIGICERT_API_KEY: ${{ secrets.WIN_CSC_DIGICERT_API_KEY }}
42+
WIN_CSC_DIGICERT_CLIENT_CERT_B64: ${{ secrets.WIN_CSC_DIGICERT_CLIENT_CERT_B64 }}
43+
WIN_CSC_DIGICERT_CLIENT_CERT_PASSWORD: ${{ secrets.WIN_CSC_DIGICERT_CLIENT_CERT_PASSWORD }}
44+
WIN_CSC_DIGICERT_KEYPAIR_ALIAS: ${{ secrets.WIN_CSC_DIGICERT_KEYPAIR_ALIAS }}
4245

4346
- name: Install plugins dependencies and build plugins
4447
run: yarn build:statics:win
4548

4649
- name: Build windows exe (production)
4750
if: vars.ENV == 'production'
4851
run: |
49-
yarn package:prod
52+
yarn package:prod -c.win.signtoolOptions.certificateSha1=${{ secrets.WIN_CSC_DIGICERT_CERT_SHA1 }}
5053
rm -rf release/win-unpacked
5154
shell: bash
5255

5356
- name: Build windows exe (staging)
5457
if: (vars.ENV == 'staging' || vars.ENV == 'development')
5558
run: |
56-
yarn package:stage
59+
yarn package:stage -c.win.signtoolOptions.certificateSha1=${{ secrets.WIN_CSC_DIGICERT_CERT_SHA1 }}
5760
rm -rf release/win-unpacked
5861
shell: bash
5962

@@ -67,8 +70,6 @@ jobs:
6770
./release/latest.yml
6871
6972
env:
70-
WIN_CSC_LINK: ${{ secrets.WIN_CSC_LINK }}
71-
WIN_CSC_KEY_PASSWORD: ${{ secrets.WIN_CSC_KEY_PASSWORD }}
7273
RI_AI_CONVAI_TOKEN: ${{ secrets.RI_AI_CONVAI_TOKEN }}
7374
RI_AI_QUERY_PASS: ${{ secrets.RI_AI_QUERY_PASS }}
7475
RI_AI_QUERY_USER: ${{ secrets.RI_AI_QUERY_USER }}

electron-builder.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,11 @@
8787
"target": ["nsis"],
8888
"artifactName": "Redis-Insight-${os}-installer.${ext}",
8989
"icon": "resources/icon.ico",
90-
"legalTrademarks": "Redis Inc., Redis Labs Inc."
90+
"legalTrademarks": "Redis Inc., Redis Labs Inc.",
91+
"signtoolOptions": {
92+
"signingHashAlgorithms": ["sha256"],
93+
"rfc3161TimeStampServer": "http://timestamp.digicert.com"
94+
}
9195
},
9296
"nsis": {
9397
"oneClick": false,

jest.config.cjs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,14 @@ module.exports = {
4040
],
4141
setupFilesAfterEnv: ['<rootDir>/redisinsight/ui/src/setup-tests.ts'],
4242
moduleDirectories: ['node_modules', 'redisinsight/node_modules'],
43-
moduleFileExtensions: ['js', 'jsx', 'ts', 'tsx', 'json'],
43+
moduleFileExtensions: ['js', 'mjs', 'jsx', 'ts', 'tsx', 'json'],
4444
testEnvironment: 'jest-fixed-jsdom',
45+
transform: {
46+
'\\.[jt]sx?$': 'babel-jest',
47+
'\\.mjs$': 'babel-jest',
48+
},
4549
transformIgnorePatterns: [
46-
'node_modules/(?!(monaco-editor|react-monaco-editor|brotli-dec-wasm|until-async)/)',
50+
'node_modules/(?!(monaco-editor|react-monaco-editor|brotli-dec-wasm|until-async|rettime)/)',
4751
],
4852
// TODO: add tests for plugins
4953
modulePathIgnorePatterns: [

redisinsight/ui/src/setup-env.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,13 @@
11
import { defaultConfig } from 'uiSrc/config/default'
2+
import { WritableStream as NodeWritableStream } from 'stream/web'
3+
4+
const globalWithStreams = globalThis as typeof globalThis & {
5+
WritableStream?: typeof NodeWritableStream
6+
}
7+
8+
if (typeof globalWithStreams.WritableStream === 'undefined') {
9+
globalWithStreams.WritableStream = NodeWritableStream
10+
}
211

312
riConfig = defaultConfig
413

yarn.lock

Lines changed: 8 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -4117,20 +4117,13 @@
41174117
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15"
41184118
integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==
41194119

4120-
"@types/yargs@^17.0.33":
4120+
"@types/yargs@^17.0.33", "@types/yargs@^17.0.8":
41214121
version "17.0.35"
41224122
resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.35.tgz#07013e46aa4d7d7d50a49e15604c1c5340d4eb24"
41234123
integrity sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==
41244124
dependencies:
41254125
"@types/yargs-parser" "*"
41264126

4127-
"@types/yargs@^17.0.8":
4128-
version "17.0.33"
4129-
resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d"
4130-
integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==
4131-
dependencies:
4132-
"@types/yargs-parser" "*"
4133-
41344127
"@types/yauzl@^2.9.1":
41354128
version "2.10.3"
41364129
resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.3.tgz#e9b2808b4f109504a03cda958259876f61017999"
@@ -5203,16 +5196,11 @@ base64-js@^1.3.0, base64-js@^1.3.1, base64-js@^1.5.1:
52035196
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
52045197
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
52055198

5206-
baseline-browser-mapping@^2.10.12:
5199+
baseline-browser-mapping@^2.10.12, baseline-browser-mapping@^2.9.0:
52075200
version "2.10.19"
52085201
resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.19.tgz#7697721c22f94f66195d0c34299b1a91e3299493"
52095202
integrity sha512-qCkNLi2sfBOn8XhZQ0FXsT1Ki/Yo5P90hrkRamVFRS7/KV9hpfA4HkoWNU152+8w0zPjnxo5psx5NL3PSGgv5g==
52105203

5211-
baseline-browser-mapping@^2.9.0:
5212-
version "2.9.19"
5213-
resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz#3e508c43c46d961eb4d7d2e5b8d1dd0f9ee4f488"
5214-
integrity sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==
5215-
52165204
better-opn@^3.0.2:
52175205
version "3.0.2"
52185206
resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-3.0.2.tgz#f96f35deaaf8f34144a4102651babcf00d1d8817"
@@ -5290,18 +5278,7 @@ browserify-zlib@^0.1.4:
52905278
dependencies:
52915279
pako "~0.2.0"
52925280

5293-
browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.24.0, browserslist@^4.24.2, browserslist@^4.25.1, browserslist@^4.28.1:
5294-
version "4.28.1"
5295-
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.1.tgz#7f534594628c53c63101079e27e40de490456a95"
5296-
integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==
5297-
dependencies:
5298-
baseline-browser-mapping "^2.9.0"
5299-
caniuse-lite "^1.0.30001759"
5300-
electron-to-chromium "^1.5.263"
5301-
node-releases "^2.0.27"
5302-
update-browserslist-db "^1.2.0"
5303-
5304-
browserslist@^4.28.2:
5281+
browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.24.0, browserslist@^4.24.2, browserslist@^4.25.1, browserslist@^4.28.1, browserslist@^4.28.2:
53055282
version "4.28.2"
53065283
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.2.tgz#f50b65362ef48974ca9f50b3680566d786b811d2"
53075284
integrity sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==
@@ -5532,12 +5509,7 @@ caniuse-api@^3.0.0:
55325509
lodash.memoize "^4.1.2"
55335510
lodash.uniq "^4.5.0"
55345511

5535-
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001687, caniuse-lite@^1.0.30001759:
5536-
version "1.0.30001769"
5537-
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz#1ad91594fad7dc233777c2781879ab5409f7d9c2"
5538-
integrity sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==
5539-
5540-
caniuse-lite@^1.0.30001782:
5512+
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001687, caniuse-lite@^1.0.30001759, caniuse-lite@^1.0.30001782:
55415513
version "1.0.30001788"
55425514
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001788.tgz#31e97d1bfec332b3f2d7eea7781460c97629b3bf"
55435515
integrity sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ==
@@ -7123,12 +7095,7 @@ electron-store@*, electron-store@^8.0.0:
71237095
conf "^10.2.0"
71247096
type-fest "^2.17.0"
71257097

7126-
electron-to-chromium@^1.5.263:
7127-
version "1.5.286"
7128-
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz#142be1ab5e1cd5044954db0e5898f60a4960384e"
7129-
integrity sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==
7130-
7131-
electron-to-chromium@^1.5.328:
7098+
electron-to-chromium@^1.5.263, electron-to-chromium@^1.5.328:
71327099
version "1.5.339"
71337100
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.339.tgz#d797bf5f222a7f6241a42b43a97bf52ff43947f1"
71347101
integrity sha512-Is+0BBHJ4NrdpAYiperrmp53pLywG/yV/6lIMTAnhxvzj/Cmn5Q/ogSHC6AKe7X+8kPLxxFk0cs5oc/3j/fxIg==
@@ -11655,12 +11622,7 @@ node-int64@^0.4.0:
1165511622
resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
1165611623
integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==
1165711624

11658-
node-releases@^2.0.27:
11659-
version "2.0.27"
11660-
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.27.tgz#eedca519205cf20f650f61d56b070db111231e4e"
11661-
integrity sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==
11662-
11663-
node-releases@^2.0.36:
11625+
node-releases@^2.0.27, node-releases@^2.0.36:
1166411626
version "2.0.37"
1166511627
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.37.tgz#9bd4f10b77ba39c2b9402d4e8399c482a797f671"
1166611628
integrity sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==
@@ -12449,15 +12411,7 @@ postcss-reduce-transforms@^7.0.1:
1244912411
dependencies:
1245012412
postcss-value-parser "^4.2.0"
1245112413

12452-
postcss-selector-parser@^7.0.0:
12453-
version "7.1.0"
12454-
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz#4d6af97eba65d73bc4d84bcb343e865d7dd16262"
12455-
integrity sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==
12456-
dependencies:
12457-
cssesc "^3.0.0"
12458-
util-deprecate "^1.0.2"
12459-
12460-
postcss-selector-parser@^7.1.1:
12414+
postcss-selector-parser@^7.0.0, postcss-selector-parser@^7.1.1:
1246112415
version "7.1.1"
1246212416
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz#e75d2e0d843f620e5df69076166f4e16f891cb9f"
1246312417
integrity sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==
@@ -14531,14 +14485,7 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1:
1453114485
dependencies:
1453214486
ansi-regex "^5.0.1"
1453314487

14534-
strip-ansi@^7.0.1:
14535-
version "7.1.2"
14536-
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.2.tgz#132875abde678c7ea8d691533f2e7e22bb744dba"
14537-
integrity sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==
14538-
dependencies:
14539-
ansi-regex "^6.0.1"
14540-
14541-
strip-ansi@^7.1.0, strip-ansi@^7.1.2:
14488+
strip-ansi@^7.0.1, strip-ansi@^7.1.0, strip-ansi@^7.1.2:
1454214489
version "7.2.0"
1454314490
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.2.0.tgz#d22a269522836a627af8d04b5c3fd2c7fa3e32e3"
1454414491
integrity sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==

0 commit comments

Comments
 (0)