Skip to content

Commit cbbff59

Browse files
committed
Switch to OIDC for signing login.
Adds the test certificate root CA to work around signing tool limitation.
1 parent a46c43d commit cbbff59

File tree

3 files changed

+67
-15
lines changed

3 files changed

+67
-15
lines changed

windows-release/TestCertRoot.cer

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIF4jCCA8qgAwIBAgIQfaIvgmtqu6hPjv+NyFOgRzANBgkqhkiG9w0BAQwFADCB
3+
gTELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjFS
4+
MFAGA1UEAxNJTWljcm9zb2Z0IElkZW50aXR5IFZlcmlmaWNhdGlvbiBURVNUIE9O
5+
TFkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgMjAyMDAeFw0yMDA0MTYxODQ5
6+
MjRaFw00NTA0MTYxODU3NThaMIGBMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWlj
7+
cm9zb2Z0IENvcnBvcmF0aW9uMVIwUAYDVQQDE0lNaWNyb3NvZnQgSWRlbnRpdHkg
8+
VmVyaWZpY2F0aW9uIFRFU1QgT05MWSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0
9+
eSAyMDIwMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEApSJ41oA+1J4w
10+
UvgaCv15SdfRcHDKIEyO6QZG5GkBIF6lq8SmEwVeGlX7qPE1lbeZ+fus1X++Gfi9
11+
FYrC1q1GgZAfhpDlmj5NFonHpVjTKQsgTz3pducrDijFdA0LxZTqe5luseNdNOLc
12+
SkqdaEj+VzSgzS4CfBqnk36yhlUrfBLOVhSoApZLZsAxsMUq5puOGk/rXoKHjeYr
13+
SPa+FFaI3r4Kz26qgZ+HJsrd0AIurAUIlSy/fGAMPkcd/1NJBJ6jNPdrjSR8aUmU
14+
bTRRo5ImF0avOtirTwYaaYkvGf9vydMcE8fgzB8JMSwQAM52i9vjZ7b4UXv2CgM/
15+
C7jsp9JA2XY5OJJaSGh0Ab1UBzPJbB+HQNLnl9mUlHKqGxbM4saIV3aUkE0rl2gZ
16+
KkWhztvOcAv9USQLFwhYIdKBN1RjuFQ83DbvwZ8W9xLG0Qv2QgT9WAYOL6VXv/nX
17+
AZy2Zhefvluh4H/glANEc/AQhdwpI2cdlVYs99yA2ppjzMdcgiymZHsUS5WXy5k9
18+
sMVldFQ6sfT/OEXkNntVUbTIaSYRF70626q9X+5VmqrMkMH125AKapesL5ekB08j
19+
8zqqHQxoHihG/bv+RoLllA1+nuUmdpPCadoPg5PuFz3KTG/UVL+sOOnsA9CYHNMg
20+
meXh2ORvDUKxggz0aJX3l35DB0TFKHECAwEAAaNUMFIwDgYDVR0PAQH/BAQDAgGG
21+
MA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFINztgy61yyzu84KpaJPGrRhu00r
22+
MBAGCSsGAQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBDAUAA4ICAQAkizoOlkTmonOs
23+
H7uUWKcL+r6uEdhuD6yhu4ZERDV0xIWe3dw98Eq9RRdOsvqRkKDy28bPyvVD8XDm
24+
6gQqu6g1UPkgUY5PzuSrOLTFjqPX7WB7La7+nBVqjBBdEHL+hZLh77OIi2pgzuIo
25+
B9yn25LcU0mu1S3UphPhXfvTGUfOZyLDvHRaTHPieaCZ6im1YcpJWdVe7K+59R4h
26+
BHty88+hyv0TJ5ymAWRUhzqwt4iVga/yCVeaEoTZxEfJeshklRvPs74/1SEFhUJt
27+
/z3WqejqalUs8bxYBVdYjJeMkiDNoNc29ELjSY2Q4cQMcMsw9pQgjn7iA22ILzii
28+
XF7tIwNnLWGcTjiVqWL8nMDu04UV+nSNggkpeBRSbNMNX47Z1i3SOwxSvHm99hQ4
29+
PaxE2KAL4YuT3AKzJ4Ez+NBoyhKdQDOEhGg+5vgde0I8+5VKE6xnxj6C4ns0SqUP
30+
FAdS2qvJnYK2BDPHYAPWCNQOk/wRMFHTJfawuo1kFSsdIKeRFybHWAlh/TIvjWIt
31+
DOkLRI4mXYrK12NaEMpDOAwj8OM1kLdonLoGNIQqPDbvP6xZP8Ql/Qx5D7ZPdSxk
32+
vsNmjgvCFs+G0MVbeOhEJ5ttWaJ9PyakVz8kVE2TXRbrmqFXC/GQGhHbr5m7TTIP
33+
cyfNsdfsKFE0GOrSxQsxI86SBX82IA==
34+
-----END CERTIFICATE-----

windows-release/msi-steps.yml

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,8 @@ steps:
8181
displayName: 'Build launcher installer'
8282
env:
8383
Platform: x86
84-
${{ if parameters.SigningCertificate }}:
85-
AZURE_TENANT_ID: $(TrustedSigningTenantId)
86-
AZURE_CLIENT_ID: $(TrustedSigningClientId)
87-
AZURE_CLIENT_SECRET: $(TrustedSigningSecret)
88-
# Only need the variable here for msi.props to detect
89-
SigningCertificate: ${{ parameters.SigningCertificate }}
84+
# Only need the variable here for msi.props to detect
85+
SigningCertificate: ${{ parameters.SigningCertificate }}
9086
9187
- ${{ each b in parameters.Bundles }}:
9288
- script: |
@@ -99,12 +95,8 @@ steps:
9995
PYTHONHOME: $(Build.SourcesDirectory)
10096
${{ if b.TclTkArtifact }}:
10197
TclTkLibraryDir: $(Pipeline.Workspace)\${{ b.TclTkArtifact }}
102-
${{ if parameters.SigningCertificate }}:
103-
AZURE_TENANT_ID: $(TrustedSigningTenantId)
104-
AZURE_CLIENT_ID: $(TrustedSigningClientId)
105-
AZURE_CLIENT_SECRET: $(TrustedSigningSecret)
106-
# Only need the variable here for msi.props to detect
107-
SigningCertificate: ${{ parameters.SigningCertificate }}
98+
# Only need the variable here for msi.props to detect
99+
SigningCertificate: ${{ parameters.SigningCertificate }}
108100
109101
- powershell: |
110102
del $env:ResponseFile -ErrorAction Continue

windows-release/sign-files.yml

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,16 @@ parameters:
77
SigningCertificate: ''
88
ExportCommand: ''
99
ContinueOnError: false
10+
AzureServiceConnectionName: 'Python Signing'
1011

1112
steps:
1213
- ${{ if parameters.SigningCertificate }}:
1314
- powershell: |
15+
# Install test root, so that signing tool can do test signing
16+
# See https://github.com/dotnet/sign/issues/908 for underlying issue
17+
Import-Certificate -FilePath .\TestCertRoot.cer -CertStoreLocation Cert:\LocalMachine\Root
18+
19+
# Install sign tool
1420
dotnet tool install --global --prerelease sign
1521
$signtool = (gcm sign -EA SilentlyContinue).Source
1622
if (-not $signtool) {
@@ -32,6 +38,29 @@ steps:
3238
env:
3339
EXPORT_COMMAND: ${{ parameters.ExportCommand }}
3440
41+
# We sign in once with the AzureCLI task, as it uses OIDC to obtain a
42+
# temporary token. But the task also logs out, and so we save the token and
43+
# use it to log in persistently (for the rest of the build).
44+
- task: AzureCLI@2
45+
displayName: 'Authenticate signing tools (1/2)'
46+
inputs:
47+
azureSubscription: ${{ parameters.AzureServiceConnectionName }}
48+
scriptType: 'ps'
49+
scriptLocation: 'inlineScript'
50+
inlineScript: |
51+
"##vso[task.setvariable variable=AZURE_CLIENT_ID;issecret=true]${env:servicePrincipalId}"
52+
"##vso[task.setvariable variable=AZURE_ID_TOKEN;issecret=true]${env:idToken}"
53+
"##vso[task.setvariable variable=AZURE_TENANT_ID;issecret=true]${env:tenantId}"
54+
addSpnToEnvironment: true
55+
56+
- powershell: >
57+
az login --service-principal
58+
-u $(AZURE_CLIENT_ID)
59+
--tenant $(AZURE_TENANT_ID)
60+
--allow-no-subscriptions
61+
--federated-token $(AZURE_ID_TOKEN)
62+
displayName: 'Authenticate signing tools (2/2)'
63+
3564
- ${{ if parameters.Include }}:
3665
- powershell: |
3766
if ("${{ parameters.Exclude }}") {
@@ -58,9 +87,6 @@ steps:
5887
env:
5988
TRUSTED_SIGNING_CMD: $(__TrustedSigningCmd)
6089
TRUSTED_SIGNING_ARGS: $(__TrustedSigningArgs)
61-
AZURE_TENANT_ID: $(TrustedSigningTenantId)
62-
AZURE_CLIENT_ID: $(TrustedSigningClientId)
63-
AZURE_CLIENT_SECRET: $(TrustedSigningSecret)
6490
${{ if parameters.Filter }}:
6591
FILTER: ${{ parameters.Filter }}
6692

0 commit comments

Comments
 (0)