Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रणाली >> Windows 7

विंडोज़ में अनसाइन्ड डिवाइस ड्राइवर को कैसे साइन करें?

परिचय

डिफ़ॉल्ट रूप से, सभी 64-बिट विंडोज़ संस्करण उन डिवाइस ड्राइवर्स की स्थापना को रोकते हैं जो वैध डिजिटल हस्ताक्षर के साथ साइन नहीं किए गए हैं। अनसाइन्ड ड्राइवर्स ऑपरेटिंग सिस्टम द्वारा ब्लॉक कर दिए जाते हैं। एक डिजिटल हस्ताक्षर सुनिश्चित करता है कि ड्राइवर एक विश्वसनीय डेवलपर या विक्रेता द्वारा जारी किया गया है, और इसका कोड संशोधित नहीं किया गया है।

विंडोज़ में अनसाइन्ड ड्राइवर्स के लिए ड्राइवर हस्ताक्षर सत्यापन अक्षम करने के कई तरीके हैं (GPO का उपयोग करके, टेस्ट बूट मोड, आदि)। आज हम दिखाएंगे कि विंडोज़ x64 के लिए किसी भी अनसाइन्ड ड्राइवर को कैसे साइन किया जाए (यह गाइड विंडोज़ 11, 10, 8.1, और 7 के लिए लागू है)।

सामग्री

  • सेल्फ-साइन्ड ड्राइवर सर्टिफिकेट बनाएं
  • ड्राइवर पैकेज साइन करने के लिए कैटलॉग फ़ाइल (CAT) बनाएं
  • सेल्फ-साइन्ड सर्टिफिकेट के साथ ड्राइवर पैकेज साइन करें
  • सेल्फ-साइन्ड ड्राइवर को विंडोज़ पर इंस्टॉल करें
  • विंडोज़ में यूज़र-मोड और कर्नेल-मोड ड्राइवर्स

सेल्फ-साइन्ड ड्राइवर सर्टिफिकेट बनाएं

सिस्टम ड्राइव के रूट पर C:\DriverCert फ़ोल्डर बनाएं।

कोड साइनिंग सर्टिफिकेट बनाने के लिए New-SelfSignedCertificate PowerShell cmdlet का उपयोग करें। इस उदाहरण में, हम 3 साल की वैधता अवधि के साथ एक सेल्फ-साइन्ड सर्टिफिकेट बनाएंगे।

$todaydate = Get-Date
$add3year = $todaydate.AddYears(3)
$cert = New-SelfSignedCertificate -Subject "WOSHUB" -Type CodeSigningCert -CertStoreLocation cert:\LocalMachine\My -notafter $add3year

फिर इस सर्टिफिकेट को पासवर्ड के साथ PFX फ़ाइल में एक्सपोर्ट करें:

$CertPassword = ConvertTo-SecureString -String "P@ss0wrd" -Force -AsPlainText
Export-PfxCertificate -Cert $cert -FilePath C:\DriverCert\myDrivers.pfx -Password $CertPassword

चूंकि हमारे द्वारा बनाया गया सर्टिफिकेट सेल्फ-साइन्ड है, विंडोज़ डिफ़ॉल्ट रूप से इस पर भरोसा नहीं करता। जब आप Sigcheck यूटिलिटी के साथ सर्टिफिकेट स्टोर चेक करते हैं, तो यह सर्टिफिकेट अविश्वसनीय के रूप में प्रदर्शित होगा, क्योंकि यह माइक्रोसॉफ्ट ट्रस्टेड रूट सर्टिफिकेट्स की सूची में सूचीबद्ध नहीं है (इस सूची को समय-समय पर अपडेट करने की आवश्यकता होती है)।

अब आपको सर्टिफिकेट को Trusted Root स्टोर और Trusted Publisher सर्टिफिकेट्स में जोड़ने की आवश्यकता है:

$certFile = Export-Certificate -Cert $cert -FilePath C:\DriverCert\drivecert.cer
Import-Certificate -CertStoreLocation Cert:\LocalMachine\AuthRoot -FilePath $certFile.FullName
Import-Certificate -CertStoreLocation Cert:\LocalMachine\TrustedPublisher -FilePath $certFile.FullName

पुराने विंडोज़ संस्करणों के लिए (makecert.exe का उपयोग करके)

पिछले विंडोज़ संस्करणों में, आपको विंडोज़ सॉफ्टवेयर डेवलपमेंट किट (SDK) से makecert.exe टूल का उपयोग करके सेल्फ-साइन्ड सर्टिफिकेट जनरेट करना होगा। इस मामले में, सर्टिफिकेट बनाने के कमांड इस तरह दिखेंगे:

cd "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1\bin"
makecert -r -sv C:\DriverCert\myDrivers.pvk -n CN="WinOSHub" C:\DriverCert\myDrivers.cer

सर्टिफिकेट निर्माण के दौरान, टूल आपसे कुंजी के लिए पासवर्ड निर्दिष्ट करने के लिए कहेगा। इसे P@ss0wrd रहने दें।

cert2spc C:\DriverCert\myDrivers.cer C:\DriverCert\myDrivers.spc
pvk2pfx -pvk C:\DriverCert\myDrivers.pvk -pi P@ss0wrd -spc C:\DriverCert\myDrivers.spc -pfx C:\DriverCert\myDrivers.pfx -po P@ss0wrd
certmgr.exe -add C:\DriverCert\myDrivers.cer -s -r localMachine ROOT
certmgr.exe -add C:\DriverCert\myDrivers.cer -s -r localMachine TRUSTEDPUBLISHER

आप इस सर्टिफिकेट को AD डोमेन में ग्रुप पॉलिसी का उपयोग करके क्लाइंट कंप्यूटर्स पर केंद्रीय रूप से तैनात कर सकते हैं।

लोकल सर्टिफिकेट मैनेजमेंट स्नैप-इन (certlm.msc) खोलें और सत्यापित करें कि आपका सर्टिफिकेट Trusted Publishers और Trusted Root Certification Authorities में है।

नोट: भले ही सर्टिफिकेट की एक सीमित वैधता अवधि हो, CodeSigning सर्टिफिकेट की समाप्ति का अर्थ है कि आप नए हस्ताक्षर नहीं बना सकते। इस सर्टिफिकेट द्वारा पहले से साइन किए गए ड्राइवर की वैधता असीमित है (या पुराने हस्ताक्षर निर्दिष्ट टाइमस्टैम्प के दौरान मान्य हैं)।

ड्राइवर पैकेज साइन करने के लिए कैटलॉग फ़ाइल (CAT) बनाएं

C:\DriverCert\xg20 डायरेक्टरी बनाएं और उस फ़ोल्डर से सभी फ़ाइलों को कॉपी करें जिसमें ड्राइवर को मूल रूप से आर्काइव से निकाला गया था (c:\tools\drv1\)। सुनिश्चित करें कि इन फ़ाइलों में .sys और .inf एक्सटेंशन वाली फ़ाइलें हैं (हमारे मामले में, ये xg20grp.sys और xg20gr.inf हैं)।

md C:\DriverCert\xg
xcopy c:\tools\drv1\ C:\DriverCert\xg /i /c /k /e /r /y

निम्न डायरेक्टरी पर जाएं:

cd "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x86"

INF फ़ाइल के आधार पर CAT फ़ाइल (ड्राइवर पैकेज में सभी फ़ाइलों के बारे में जानकारी रखती है) जनरेट करें। inf2cat.exe टूल (विंडोज़ ड्राइवर किट, WDK से) आपके प्लेटफॉर्म के लिए CAT फ़ाइल जनरेट करने की अनुमति देता है:

inf2cat.exe /driver:"C:\DriverCert\xg20" /os:7_X64 /verbose

यह सुनिश्चित करने के लिए कि प्रक्रिया सही थी, जांचें कि फ़ाइल C:\DriverCert\xg\xg20gr.cat लक्ष्य डायरेक्टरी में दिखाई दी है, और लॉग में संदेश हैं:

Signability test complete.
Catalog generation complete.

नोट: मेरे मामले में Inf2Cat.exe कमांड ने एक त्रुटि लौटाई:

Signability test failed. Errors: 22.9.7: DriverVer set to incorrect date (must be postdated to 4/21/2009 for newest OS) in \hdx861a.inf

त्रुटि ठीक करने के लिए, [Version] सेक्शन में DriverVer = वाली लाइन ढूंढें और इसे इससे बदलें:

DriverVer=05/01/2009,9.9.9.9

यदि आपको त्रुटि Missing AMD64 CatalogFile entry (x64 के लिए) या Missing 32-bit CatalogFile entry मिलती है, तो .inf फ़ाइल के [Version] सेक्शन में लाइन CatalogFile=xg20gr.cat जोड़ें।

सेल्फ-साइन्ड सर्टिफिकेट के साथ ड्राइवर पैकेज साइन करें

निम्न फ़ोल्डर पर जाएं:

cd "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x64"

आपके द्वारा पहले बनाए गए सर्टिफिकेट का उपयोग करके ड्राइवर पैकेज (फ़ाइलों का सेट) साइन करें, Verisign को टाइमस्टैम्प सेवा के रूप में उपयोग करते हुए। निम्न कमांड पासवर्ड-सुरक्षित .pfx फ़ाइल में संग्रहीत सर्टिफिकेट का उपयोग करके CAT फ़ाइल को डिजिटल हस्ताक्षर के साथ साइन करेगा:

signtool sign /f C:\DriverCert\myDrivers.pfx /p P@ss0wrd /t https://timestamp.verisign.com/scripts/timstamp.dll /v C:\DriverCert\xg20\xg20gr.cat

आधुनिक विंडोज़ 10 और विंडोज़ 11 संस्करणों पर, इस कमांड को चलाने का परिणाम एक त्रुटि होगा:

SignTool Error: No file digest algorithm specified. Please specify the digest algorithm with the /fd flag. Using /fd SHA256 is recommended and more secure than SHA1.

आपको दूसरे कमांड का उपयोग करने की आवश्यकता है:

signtool sign /tr https://timestamp.digicert.com /td SHA256 /v /f C:\DriverCert\myDrivers.pfx /p P@ss0wrd "C:\DriverCert\xg\xg20gr.cat"

यदि कमांड त्रुटि लौटाता है SignTool Error: An unexpected internal error has occurred, या Error information: SignerTimeStamp() failed. (-2147012865/0x80072eff), तो एक अलग टाइमस्टैम्प सर्वर URL आज़माएं। सूची में से कोई भी आज़माएं:

https://timestamp.comodoca.com/authenticode
https://timestamp.globalsign.com/scripts/timstamp.dll
https://timestamp.verisign.com/scripts/timstamp.dll
https://tsa.starfieldtech.com
https://www.startssl.com/timestamp

यदि CAT फ़ाइल सफलतापूर्वक साइन हो जाती है, तो निम्न संदेश दिखाई देना चाहिए:

Successfully signed: C:\DriverCert\xg\xg20gr.cat
Number of files successfully Signed: 1

ड्राइवर का डिजिटल हस्ताक्षर .inf फ़ाइल में संदर्भित .cat फ़ाइल में निहित है। आप निम्न कमांड का उपयोग करके CAT फ़ाइल में ड्राइवर के डिजिटल हस्ताक्षर की जांच कर सकते हैं:

SignTool verify /v /pa c:\DriverCert\xg\xg20gr.cat

आप CAT फ़ाइल के गुणों के Digital Signatures टैब पर सर्टिफिकेट के बारे में जानकारी भी देख सकते हैं।

यदि सर्टिफिकेट विश्वसनीय नहीं है (या Trusted Root Certificate Store में नहीं जोड़ा गया है), तो SignTool verify कमांड चलाते समय एक त्रुटि दिखाई देगी:

SignTool Error: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.

CAT फ़ाइल में ड्राइवर डायरेक्टरी में मौजूद सभी फ़ाइलों के डिजिटल हस्ताक्षर (थंबप्रिंट) होते हैं (INF फ़ाइल के CopyFiles सेक्शन में सूचीबद्ध फ़ाइलें)। यदि इनमें से किसी भी फ़ाइल को बदला गया है, तो फ़ाइलों का चेकसम CAT फ़ाइल में डेटा से मेल नहीं खाएगा, और परिणामस्वरूप ऐसे ड्राइवर की स्थापना विफल हो जाएगी।

सेल्फ-साइन्ड ड्राइवर को विंडोज़ पर इंस्टॉल करें

हमारे द्वारा साइन किए गए ड्राइवर को फिर से इंस्टॉल करने का प्रयास करें:

Pnputil -i -a C:\DriverCert\xg20\xg20gr.inf

अब आपको ड्राइवर के लापता डिजिटल हस्ताक्षर के बारे में चेतावनी नहीं दिखाई देगी।

Successfully installed the driver on a device on the system.
Driver package added successfully.

विंडोज़ 10 और 11 में निम्न चेतावनी दिखाई देती है:

Would you like to install this device software?

ड्राइवर पैकेज को विंडोज़ पर इंस्टॉल करने के लिए "Install" पर क्लिक करें।

यदि किसी कारण से ड्राइवर इंस्टॉल नहीं होता है, तो विस्तृत ड्राइवर इंस्टॉलेशन लॉग फ़ाइल C:\Windows\inf\setupapi.dev.log में निहित है। यह लॉग फ़ाइल आपको ड्राइवर इंस्टॉलेशन त्रुटियों के बारे में अधिक जानकारी प्राप्त करने की अनुमति देती है। ज्यादातर मामलों में, "Driver package failed signature validation" त्रुटि होती है। इसका सबसे अधिक संभावना है कि ड्राइवर का सर्टिफिकेट विश्वसनीय सर्टिफिकेट स्टोर में नहीं जोड़ा गया है।

यदि ड्राइवर इंस्टॉलेशन सफल रहा, तो setupapi.dev.log फ़ाइल में निम्न लाइनें होनी चाहिए:

>>> [Device Install (DiInstallDriver) - C:\WINDOWS\System32\DriverStore\FileRepository\xg20gr.inf_amd64_c5955181214aa12b\xg20gr.inf]
>>>> Section start 2018/07/22 23:32:57.015
cmd: Pnputil -i -a c:\DriverCert\xg\xg20gr.inf
ndv: Flags: 0x00000000
ndv: INF path: C:\WINDOWS\System32\DriverStore\FileRepository\xg20gr.inf_amd64_c5955181214aa12b\xg20gr.inf
inf: {SetupCopyOEMInf: C:\WINDOWS\System32\DriverStore\FileRepository\xg20gr.inf_amd64_c5955181214aa12b\xg20gr.inf}
13:23:37.046
inf: Copy style: 0x00000000
inf: Driver Store Path: C:\WINDOWS\System32\DriverStore\FileRepository\xg20gr.inf_amd64_c5955181214aa12b\xg20gr.inf
inf: Published Inf Path: C:\WINDOWS\INF\oem23.inf
inf: {SetupCopyOEMInf exit (0x00000000)}
13:23:37.077
<<<< Section end 2018/07/22 13:23:37.155
<<<< [Exit status: SUCCESS]

विंडोज़ में यूज़र-मोड और कर्नेल-मोड ड्राइवर्स

मैं आपको याद दिला दूं कि विंडोज़ में ड्राइवर कर्नेल-मोड या यूज़र मोड में निष्पादित हो सकता है। इस तरह से साइन किए गए कर्नेल-मोड ड्राइवर्स सिक्योर बूट सक्षम के साथ UEFI डिवाइस पर विंडोज़ बूट होने पर लोड नहीं होंगे, त्रुटि के साथ:

Event ID: 7000 ERROR_DRIVER_BLOCKED 1275 (0x4FB) This driver has been blocked from loading.

आप PowerShell कमांड का उपयोग करके जांच सकते हैं कि सिक्योर बूट मोड सक्षम है या नहीं:
Confirm-SecureBootUEFI

सिक्योर बूट सक्षम के साथ लोड किए गए सभी कर्नेल-मोड ड्राइवर्स को Microsoft प्रमाणीकरण प्रक्रिया (WHQL - Windows Hardware Quality Lab) के दौरान साइन किया जाना चाहिए। कारण यह है कि जब कर्नेल लोड होता है, UEFI विंडोज़ लोकल मशीन सर्टिफिकेट स्टोर में सर्टिफिकेट्स को सत्यापित नहीं कर सकता।

SignTool Error: Signing Cert does not chain to a Microsoft Code Verification Root.

माइक्रोसॉफ्ट को विंडोज़ 10 1607 से शुरू होकर विंडोज़ हार्डवेयर कम्पैटिबिलिटी प्रोग्राम के तहत थर्ड-पार्टी ड्राइवर प्रमाणीकरण अनिवार्य है।

सेल्फ-साइन्ड यूज़र-मोड ड्राइवर्स (आमतौर पर प्रिंटर, स्कैनर, प्लॉटर, आदि) सिक्योर बूट सक्षम होने पर भी काम करेंगे।
कर्नेल-मोड ड्राइवर्स के लिए, आपको डिजिटल हस्ताक्षर सत्यापन अक्षम करना होगा और विंडोज़ को bcdedit.exe कमांड्स के साथ टेस्ट मोड में बूट करना होगा:

bcdedit.exe /set /nointegritychecks on
bcdedit.exe /set testsigning ON
  1. Windows 10 पर जेनेरिक PNP मॉनिटर ड्राइवर समस्याओं को ठीक करें - चरण-दर-चरण गाइड Windows 10 पर जेनेरिक PNP मॉनिटर ड्राइवर समस्याओं को ठीक करें - चरण-दर-चरण गाइड

    क्या आपने एक नया मॉनिटर खरीदा है केवल यह पता लगाने के लिए कि यह आपके कंप्यूटर से कुछ भी प्रदर्शित नहीं कर रहा? या शायद मॉनिटर अचानक काम करना बंद कर देता है? कई मौकों पर, यह समस्या एक दोषपूर्ण जेनेरिक PNP मॉनिटर ड्राइवर के कारण होती है। ड्राइवर समस्याओं के अलावा, मॉनिटर केबल से जुड़े अनुचित कनेक्शन क

  1. विंडोज़ 10 पर ब्लूटूथ इनेबल करें: चरण-दर-चरण गाइड विंडोज़ 10 पर ब्लूटूथ इनेबल करें: चरण-दर-चरण गाइड

    आजकल अधिकांश पीसी ब्लूटूथ कार्यक्षमता से लैस होते हैं ताकि आप अपने ब्लूटूथ डिवाइस से कनेक्ट कर सकें, जैसे आपके एक्सटर्नल ब्लूटूथ स्पीकर। यदि आपके पीसी पर ब्लूटूथ है लेकिन आप नहीं जानते कि इसका उपयोग कैसे करना है, तो यह गाइड दिखाएगा कि विंडोज़ 10 पीसी पर ब्लूटूथ कैसे चालू करें। गाइड के अंत तक, आप सीख

  1. विंडोज 10 पर ड्राइवर त्रुटि कोड 32 को ठीक करें: 4 सिद्ध समाधान विंडोज 10 पर ड्राइवर त्रुटि कोड 32 को ठीक करें: 4 सिद्ध समाधान

    ड्राइवर त्रुटि कोड 32 एक सामान्य डिवाइस मैनेजर त्रुटि है जो तब होती है जब किसी विशिष्ट हार्डवेयर के ड्राइवर किसी कारण से अक्षम हो जाते हैं। जब विंडोज किसी विशेष घटक के हार्डवेयर ड्राइवर का पता लगाने में असमर्थ होता है, तो यह स्क्रीन पर निम्न संदेश प्रदर्शित करता है।     कंप्यूटिंग क्षेत्र