Skip to content

Commit 5d19f66

Browse files
committed
added instructions for disabling signature enforcement
1 parent 46c890b commit 5d19f66

File tree

1 file changed

+37
-10
lines changed

1 file changed

+37
-10
lines changed

README.md

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -146,36 +146,63 @@ generate your Makefile.
146146

147147
Signing
148148
-----------
149-
150149
To install a built-from-source or a nightly (from github actions) driver, you need to sign it
151-
In this section, I will show how to compile the driver using test-signing.
152-
Example commands are given for each steps but it is recommand to check the microsoft documentation link about test-signing, so you know what you are doing
150+
In this section, I will show how to disable driver signature enforcement, or how to sign the driver using test-signing
151+
Warning : both of these solutions aren't perfect, if you are looking for a everyday-use it is recommanded to use the release builds, which are signed with a Microsoft-trusted key.
152+
153+
154+
## Disabling signature enforcement
155+
Note : this isn't persistent accross reboots
156+
Relevant link : https://docs.microsoft.com/en-us/windows-hardware/drivers/install/installing-an-unsigned-driver-during-development-and-test
157+
158+
### 1 - Reboot your computer without driver signature enforcement
159+
160+
(This can be done by pressing the 'Shift' key while rebooting the computer, this will take you to a special screen from which you can select "Troubleshoot" -> "Startup settings" -> "Disable driver signature enforcement")
161+
162+
### 2 - Install the driver
163+
164+
Open the previously downloaded artifact from Github Actions (or mimic the directory structure and fill it with the binaries you just compiled), right-click the .inf file -> install
165+
A window saying "Microsoft can't verify the publisher of this driver" should pop-up. Click "Install anyway"
166+
If the window didn't show up, the driver probably wasn't installed, make sure you booted your computer with driver signature enforcement disabled.
153167

154-
More information can be found at https://docs.microsoft.com/en-us/windows-hardware/drivers/install/test-signing
168+
The computer should next tell you to reboot your computer
169+
170+
### 3 - Reboot the computer again without driver signature enforcement
171+
Follow the same instructions as step 1
172+
173+
### 4 - Done !
174+
The driver should now be installed ! Note it will only load when the computer is started without driver signature enforcement
175+
176+
177+
178+
## Test-signing the driver
179+
Note : This method is harder to put in place, and has the only benefit of persisting after reboots.
180+
181+
Example commands are given for each steps but it is recommand to check the microsoft documentation link about test-signing, so you know what you are doing
155182

156-
Note : this is not practical for a everyday use
183+
Relevant link : https://docs.microsoft.com/en-us/windows-hardware/drivers/install/test-signing
157184

158-
**1 - Put your computer in test mode**
185+
### 1 - Put your computer in test mode
159186

160187
test-signing doesn't seem to work with Windows by default. You will need to put your computer in a special mode to allow test-signing.
161188

162189
`bcdedit /set testsigning on`
163190

164191
Note : you might need to disable Secure Boot for this to work
165192

166-
**2 - Generate a MakeCert certificate**
193+
### 2 - Generate a MakeCert certificate
167194

168195
This certificate will be used to sign the catalog file of the driver
169196

170197
`makecert -r -pe -ss PrivateCertStore -n CN=Contoso.com(Test) ContosoTest.cer`
171198

172-
**3 - Install the certificate to your system**
199+
### 3 - Install the certificate to your system
173200

174201
For your certificate to be effective, it needs to be installed in the "Trusted Root Certification Authorities" certificate store of the computer you want to install the driver on.
175202
You can add it by launching "CertMgr" **as administrator**, selecting the "Trusted Root Certification Authorities" certificate store, and importing the .cer file generated earlier
176203
(The command given on the documentation doesn't seem to work and just launches the CertMgr GUI)
177204

178-
**4 - Generate a catalog file for your driver**
205+
### 4 - Generate a catalog file for your driver
179206

180207
You will need the "Inf2Cat" tool, installed as part of the WDK.
181208
Run the command in the same directory as your .inf file (or modify the /driver flag)
@@ -186,7 +213,7 @@ The command will differ in your case (because of the path) but here is the one I
186213

187214
Note : this was tested in Windows 11, you might need to change the values of the /os flag according to your Windows version
188215

189-
**5 - Sign the catalog file**
216+
### 5 - Sign the catalog file
190217

191218
Simply sign the catalog file of the driver with the certificate you generated
192219

0 commit comments

Comments
 (0)