আমি কীভাবে উইন্ডোজে কোড স্বাক্ষরের জন্য স্ব-স্বাক্ষরিত শংসাপত্র তৈরি করব?


225

আমি কীভাবে উইন্ডোজ এসডিকে থেকে সরঞ্জাম ব্যবহার করে কোড স্বাক্ষরের জন্য স্ব-স্বাক্ষরিত শংসাপত্র তৈরি করব?


এই উত্তরটি দেখুন: স্ট্যাকওভারফ্লো.
com

উত্তর:


363

আপডেট উত্তর

আপনি যদি নিম্নলিখিত উইন্ডোজ সংস্করণগুলি বা তার পরে ব্যবহার করে থাকেন: উইন্ডোজ সার্ভার 2012, উইন্ডোজ সার্ভার 2012 আর 2, বা উইন্ডোজ 8.1 তবে মেককার্ট এখন হ্রাস পেয়েছে , এবং মাইক্রোসফ্ট পাওয়ারশেল সিএমডলেট নতুন-স্বতঃসংশ্লিষ্ট ব্যবহার করার পরামর্শ দিচ্ছে

যদি আপনি উইন্ডোজ 7 এর মতো কোনও পুরানো সংস্করণ ব্যবহার করেন তবে আপনাকে মেককার্ট বা অন্য কোনও সমাধানের সাথে আটকে থাকতে হবে। কিছু লোক পাবলিক কী ইনফ্রাস্ট্রাকচার পাওয়ারশেল (পিএসপিকেআই) মডিউলটির পরামর্শ দেয় ।

আসল উত্তর

আপনি স্ব-স্বাক্ষরিত কোড-স্বাক্ষরকারী শংসাপত্র (এসপিসি - সফ্টওয়্যার প্রকাশক শংসাপত্র) তৈরি করতে পারার সময় ) তৈরি করতে গেলে, আমি নিম্নলিখিতগুলি করতে পছন্দ করি:

একটি স্ব-স্বাক্ষরিত শংসাপত্র কর্তৃপক্ষ (সিএ) তৈরি করা হচ্ছে

makecert -r -pe -n "CN=My CA" -ss CA -sr CurrentUser ^
         -a sha256 -cy authority -sky signature -sv MyCA.pvk MyCA.cer

(^ = ব্যাচ কমান্ড-লাইনকে মোড়ানো লাইনে অনুমতি দিন)

এটি রফতানিযোগ্য প্রাইভেট কী (-pe) সহ একটি স্ব-স্বাক্ষরিত (-r) শংসাপত্র তৈরি করে। এটির নাম "আমার সিএ", এবং বর্তমান ব্যবহারকারীর জন্য সিএ স্টোরে রাখা উচিত। আমরা SHA-256 ব্যবহার করছি অ্যালগরিদম । কীটি সাইন ইন করার জন্য বোঝায় (-স্কি)।

প্রাইভেট কীটি MyCA.pvk ফাইলে এবং মাইসিএ.এসার ফাইলে শংসাপত্র সংরক্ষণ করতে হবে।

সিএ শংসাপত্র আমদানি করা হচ্ছে

সিএ সার্টিফিকেট থাকার কোনও কারণ নেই কারণ আপনি যদি এটির উপর বিশ্বাস না করেন, আপনাকে এটি উইন্ডোজ শংসাপত্রের দোকানে আমদানি করতে হবে। আপনি শংসাপত্রগুলি এমএমসি স্ন্যাপিন ব্যবহার করতে পারেন তবে কমান্ড লাইন থেকে:

certutil -user -addstore Root MyCA.cer

একটি কোড স্বাক্ষরকারী শংসাপত্র (এসপিসি) তৈরি করা হচ্ছে

makecert -pe -n "CN=My SPC" -a sha256 -cy end ^
         -sky signature ^
         -ic MyCA.cer -iv MyCA.pvk ^
         -sv MySPC.pvk MySPC.cer

এটি উপরের মতো বেশ একইরকম, তবে আমরা একটি জারি কী এবং শংসাপত্র সরবরাহ করছি (-ic এবং -iv স্যুইচ)।

আমরা শংসাপত্র এবং কীটিকে একটি পিএফএক্স ফাইলে রূপান্তর করতে চাই:

pvk2pfx -pvk MySPC.pvk -spc MySPC.cer -pfx MySPC.pfx

আপনি যদি পিএফএক্স ফাইলটি সুরক্ষিত করতে চান তবে -পো সুইচ যুক্ত করুন, অন্যথায় পিভিকে ২ পিএফএক্স কোনও পাসফ্রেজ ছাড়াই একটি পিএফএক্স ফাইল তৈরি করে।

কোড স্বাক্ষর করার জন্য শংসাপত্র ব্যবহার করে

signtool sign /v /f MySPC.pfx ^
              /t http://timestamp.url MyExecutable.exe

( কেন টাইমস্ট্যাম্পগুলি গুরুত্বপূর্ণ হতে পারে দেখুন )

আপনি যদি সার্টিফিকেট স্টোরে পিএফএক্স ফাইলটি আমদানি করেন (আপনি পিভিকেআইএমপিআরটি বা এমএমসি স্ন্যাপিন ব্যবহার করতে পারেন), আপনি নীচে কোড সাইন করতে পারেন:

signtool sign /v /n "Me" /s SPC ^
              /t http://timestamp.url MyExecutable.exe

কিছু সম্ভাব্য টাইমস্ট্যাম্প ইউআরএল হ'ল signtool /t:

  • http://timestamp.verisign.com/scripts/timstamp.dll
  • http://timestamp.globalsign.com/scripts/timstamp.dll
  • http://timestamp.comodoca.com/authenticode

সম্পূর্ণ মাইক্রোসফ্ট ডকুমেন্টেশন

ডাউনলোডগুলি

যারা নেট নেট বিকাশকারী নয় তাদের জন্য আপনার উইন্ডোজ এসডিকে এবং। নেট ফ্রেমওয়ার্কের একটি অনুলিপি লাগবে। একটি বর্তমান লিঙ্ক এখানে উপলভ্য: SDK & .NET (যা মেকারেট ইনস্টল করে C:\Program Files\Microsoft SDKs\Windows\v7.1)। আপনার মাইলেজ পরিবর্তিত হতে পারে.

মেককার্ট ভিজ্যুয়াল স্টুডিও কমান্ড প্রম্পট থেকে উপলব্ধ। ভিজ্যুয়াল স্টুডিও 2015 এর রয়েছে এবং এটি উইন্ডোজ 7-এর স্টার্ট মেনু থেকে "ভিএস 2015 এর জন্য বিকাশকারী কমান্ড প্রম্পট" বা "ভিএস2015 x64 নেটিভ সরঞ্জাম কমান্ড প্রম্পট" (সম্ভবত এটি সমস্ত একই ফোল্ডারে) এর অধীনে চালু করা যেতে পারে।


এই পদ্ধতিটি ব্যবহার করে শংসাপত্রের ইমেল ঠিকানা ক্ষেত্রটি জনপ্রিয় করার কোনও উপায় আছে কি? এক্সিকিউটিভ> বৈশিষ্ট্য> ডিজিটাল স্বাক্ষর স্বাক্ষর করার পরে ইমেল "উপলব্ধ নয়" হিসাবে ডান ক্লিক করুন।
ক্রোনোকলি

যদি আপনি "অনেকগুলি পরামিতি" ত্রুটি পান তবে আপনি পরীক্ষা করে দেখুন যে আপনি হাইফেনগুলির একটিতেও দুর্ঘটনাক্রমে সম্পাদনা করেননি। এটি ব্যর্থ - হাইফেনগুলি আবার টাইপ করুন - পেস্টটি অনুলিপি করবেন না।
ফিয়াট

8
@ ক্রোনোকলি শংসাপত্রের ইমেল ক্ষেত্রটি জনপ্রিয় করতে, কেবল যুক্ত করুন E=your@email। উদাহরণস্বরূপ:makecert -pe -n "CN=My SPC,E=email@domain" ........
রব ডাব্লু

1
আপনার বর্ধিত ব্যবহার কী পতাকাটির দরকার নেই -eku 1.3.6.1.5.5.7.3.3যাতে কোডটি স্বাক্ষর করার জন্য শংসাপত্রটি ব্যবহার করা যেতে পারে (আমি জানি পাওয়ারশেল এটি অনুপস্থিত থাকলে স্ক্রিপ্টগুলিতে স্বাক্ষর করতে ব্যর্থ হয়)
স্কট চেম্বারলাইন

1
@ অ্যাডামফেল্পস, উইন্ডোজ আপনার শংসাপত্রকে বিশ্বাস করতে "শিখবে" না। আপনার ব্যবহারকারীদের রুট স্টোরে সিএ শংসাপত্র ইনস্টল করতে হবে। এটি, সাধারণভাবে বলতে গেলে, একটি খারাপ ধারণা (কারণ রুট সিএ শংসাপত্রগুলি নিকৃষ্ট উদ্দেশ্যে ব্যবহার করা যেতে পারে)। এটি এন্টারপ্রাইজ দৃশ্যে যদিও তা উপলব্ধি করতে পারে।
রজার লিপসক্বে

36

উত্তরে বর্ণিত হিসাবে, আপনার নিজের স্ক্রিপ্টে স্বাক্ষর করার জন্য অবহেলিত উপায় ব্যবহার করার জন্য, একটিতে নতুন-স্বাক্ষরিত সার্টিফিকেট ব্যবহার করা উচিত ।

  1. কী তৈরি করুন:
New-SelfSignedCertificate -DnsName email@yourdomain.com -Type CodeSigning -CertStoreLocation cert:\CurrentUser\My
  1. ব্যক্তিগত কী ছাড়াই শংসাপত্রটি রফতানি করুন:
Export-Certificate -Cert (Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert)[0] -FilePath code_signing.crt

[0] যখন আপনার একাধিক শংসাপত্র রয়েছে তখন ক্ষেত্রে এই কাজটি করা হবে ... অবশ্যই আপনি যে শংসাপত্রটি ব্যবহার করতে চান তার সাথে সূচীটি তৈরি করুন ... বা ফিল্টারেট করার একটি উপায় ব্যবহার করুন (থাম্বপ্রিন্ট বা ইস্যুকারী দ্বারা)।

  1. এটি বিশ্বস্ত প্রকাশক হিসাবে আমদানি করুন
Import-Certificate -FilePath .\code_signing.crt -Cert Cert:\CurrentUser\TrustedPublisher
  1. রুট শংসাপত্র কর্তৃপক্ষ হিসাবে এটি আমদানি করুন।
Import-Certificate -FilePath .\code_signing.crt -Cert Cert:\CurrentUser\Root
  1. স্ক্রিপ্টটি স্বাক্ষর করুন (এখানে ধরে নেওয়া এর স্ক্রিপ্ট.পিএস 1 নামকরণ করা হয়েছে, সেই অনুসারে পথটি ঠিক করুন)।
Set-AuthenticodeSignature .\script.ps1 -Certificate (Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert)

স্পষ্টতই একবার আপনি কীটি সেটআপ করে নিলে আপনি এটির সাথে অন্য কোনও স্ক্রিপ্টগুলিতে সাইন ইন করতে পারেন।
আপনি এই নিবন্ধে আরও বিস্তারিত তথ্য এবং কিছু সমস্যা সমাধানের সহায়তা পেতে পারেন ।


এই এক জন্য ধন্যবাদ। আমার প্রথমে নীচের উত্তরগুলি থেকে শুরু করা উচিত ছিল!
mdiehl13

ধন্যবাদ. এটি এই 'আপাতদৃষ্টিতে সহজ' প্রক্রিয়াটি কাজ করার চেষ্টা করার ফলে আমার সমস্ত সমস্যার সমাধান করেছে।
ডেভ

1
আমি "২" তে ত্রুটি পেয়েছি (get-ChildItem ...)একাধিক শংসাপত্র ফিরিয়ে দেওয়ার কারণে , তাই আমি শেষে "[0]" রেখেছি এবং এটি কার্যকর হয়েছে। হিসাবে হিসাবেExport-Certificate -Cert (Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert)[0] -FilePath code_signing.crt
লন্ডম্যান

1
@ ল্যারা মতামতের জন্য ধন্যবাদ আমি কম ক্যাফিন চেষ্টা করার পরেও এটিকে আরও সহজ করার জন্য কিছু প্রাসঙ্গিক তথ্য যুক্ত করেছি ;-)
চামি

1
@ লারাকে সিগন্যাল করার জন্য ধন্যবাদ, আমি সম্পাদনার সময় খুব বেশি মনোযোগ দিইনি, মনে হচ্ছে স্ট্যাকওভারফ্লো এখন ব্লকের বাক্য গঠন সম্পর্কে আরও পটু এবং কোড শুরুর আগে এখন নতুন লাইনের প্রয়োজন।
চামি

21

রজারের উত্তরটি খুব সহায়ক ছিল।

যদিও এটি ব্যবহার করতে আমার একটু সমস্যা হয়েছিল, এবং লাল "উইন্ডোজ এই ড্রাইভার সফ্টওয়্যারটির প্রকাশককে যাচাই করতে পারে না" ত্রুটি কথোপকথনটি পেয়ে যেতে থাকি। কীটি ছিল পরীক্ষার মূল শংসাপত্রটি দিয়ে ইনস্টল করা

certutil -addstore Root Demo_CA.cer

যা রজারের উত্তরটি পুরোপুরি didn'tাকেনি।

এখানে একটি ব্যাচ ফাইল রয়েছে যা আমার জন্য কাজ করেছিল (আমার .inf ফাইল সহ, অন্তর্ভুক্ত নয়)। এটি দেখায় যে কীভাবে জিইআইআই সরঞ্জামগুলি নেই (কয়েকটি পাসওয়ার্ড প্রম্পট ব্যতীত) কোনও কিছুর শুরু থেকে শেষ পর্যন্ত কীভাবে এটি করা যায়।

REM Demo of signing a printer driver with a self-signed test certificate.
REM Run as administrator (else devcon won't be able to try installing the driver)
REM Use a single 'x' as the password for all certificates for simplicity.

PATH %PATH%;"c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin";"c:\Program Files\Microsoft SDKs\Windows\v7.0\Bin";c:\WinDDK\7600.16385.1\bin\selfsign;c:\WinDDK\7600.16385.1\Tools\devcon\amd64

makecert -r -pe -n "CN=Demo_CA" -ss CA -sr CurrentUser ^
   -a sha256 -cy authority -sky signature ^
   -sv Demo_CA.pvk Demo_CA.cer

makecert -pe -n "CN=Demo_SPC" -a sha256 -cy end ^
   -sky signature ^
   -ic Demo_CA.cer -iv Demo_CA.pvk ^
   -sv Demo_SPC.pvk Demo_SPC.cer

pvk2pfx -pvk Demo_SPC.pvk -spc Demo_SPC.cer ^
   -pfx Demo_SPC.pfx ^
   -po x

inf2cat /drv:driver /os:XP_X86,Vista_X64,Vista_X86,7_X64,7_X86 /v

signtool sign /d "description" /du "www.yoyodyne.com" ^
   /f Demo_SPC.pfx ^
   /p x ^
   /v driver\demoprinter.cat

certutil -addstore Root Demo_CA.cer

rem Needs administrator. If this command works, the driver is properly signed.
devcon install driver\demoprinter.inf LPTENUM\Yoyodyne_IndustriesDemoPrinter_F84F

rem Now uninstall the test driver and certificate.
devcon remove driver\demoprinter.inf LPTENUM\Yoyodyne_IndustriesDemoPrinter_F84F

certutil -delstore Root Demo_CA

4
আপনি যদি ড্রাইভারগুলিতে স্বাক্ষর করার জন্য এটি ব্যবহার করতে চান তবে আপনাকে সিএ শংসাপত্রটি মেশিন স্টোরে আমদানি করতে হবে। আমার উদাহরণ এটিকে ব্যবহারকারীর দোকানে আমদানি করে, যা বেশিরভাগ সফ্টওয়্যারের পক্ষে পরীক্ষা / অভ্যন্তরীণ উদ্দেশ্যে।
রজার লিপসক্বে

20

পাওয়ারশেলের নিউ-সেল্ফসাইডার্টিফিট কমান্ডটি ব্যবহার করা মোটামুটি সহজ । পাওয়ারশেল খুলুন এবং এই 3 টি কমান্ড চালান।

1) শংসাপত্র তৈরি করুন :
t সার্টিট = নতুন স্ব-স্বাক্ষরিত সার্টিফিকেট - DnsName www.yourwebsite.com- টাইপ কোডসাইনিং -CertStoreLocation শংসাপত্র: \ কারেন্টউজার \ আমার

2) এটির জন্য পাসওয়ার্ড সেট করুন :
t সার্টপ্যাসওয়ার্ড = কনভার্টটো-সিকিউরস্ট্রিং-স্ট্রিং "মাই_পাসওয়ার্ড" -ফর্স -এসপ্লেইনটেক্সট

3) এটি রফতানি করুন :
এক্সপোর্ট-পিএফএক্সসিটিফিকেট-সার্ট "শংসাপত্র: \ কারেন্ট ইউজার \ মাই \ $ (t সার্টি। থাম্বপ্রিন্ট)" -ফিলিপথ "d: \ selfsigncert.pfx" -প্যাসওয়ার্ড $ সার্টপ্যাসওয়ার্ড

আপনার শংসাপত্র selfsigncert.pfx অবস্থিত হবে @D:/


Alচ্ছিক পদক্ষেপ: আপনাকে সিস্টেম পরিবেশের ভেরিয়েবলগুলিতে শংসাপত্রের পাসওয়ার্ড যুক্ত করতে হবে। নীচে সেন্টিমিডিতে প্রবেশ করে এটি করুন:setx CSC_KEY_PASSWORD "my_password"


জেরিওয়েল আপনি কীভাবে স্ব স্বাক্ষরিত শংসাপত্রকে সিএ রুট বিশ্বস্ত শংসাপত্রে রূপান্তর করতে জানেন?
মিঃ হিলিস

12

পাওয়ারশেল ৪.০ (উইন্ডোজ ৮.১ / সার্ভার ২০১২ আর ২) মেকারসেট.এক্স.বিহীন উইন্ডোজে একটি শংসাপত্র তৈরি করা সম্ভব ।

কমান্ড আপনার যা দরকার হয় নিউ-SelfSignedCertificate এবং এক্সপোর্ট-PfxCertificate

পাওয়ারশেলের সাহায্যে স্ব স্বাক্ষরিত শংসাপত্র তৈরির নির্দেশনা রয়েছে ।


3
এটি উল্লেখ করার মতো, এমনকি যদি আপনি উইন্ডোজ 7 তে পাওয়ারশেল ৪.০ পাওয়ার জন্য ডাব্লুএমএফ আপডেট ইনস্টল করেন তবে আপনার এই আদেশটি অ্যাক্সেস পাবে না। এটি Win8 বা সার্ভার 2012 বা তার পরের বলে মনে হচ্ছে।
ড্যানিয়েল ইয়ানকোভস্কি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.