ฉันจะสร้างใบรับรองที่ลงนามด้วยตนเองสำหรับ localhost ได้อย่างไร


134

ฉันได้ทำตามขั้นตอนโดยละเอียดในHow do you use https / SSL on localhost? แต่นี่เป็นการตั้งค่าใบรับรองที่ลงนามด้วยตนเองสำหรับชื่อเครื่องของฉันและเมื่อเรียกดูผ่านhttps: // localhostฉันได้รับคำเตือนจาก IE

มีวิธีสร้างใบรับรองที่ลงนามด้วยตนเองสำหรับ "localhost" เพื่อหลีกเลี่ยงคำเตือนนี้หรือไม่


คุณติดตั้งใบรับรองเป็น CA หรือไม่
vcsjones

ฉันทำตามขั้นตอนเพื่อติดตั้งใบรับรองที่ลงนามด้วยตนเองใน IIS ภายใต้ Win7 แต่นั่นเป็นการสร้างใบรับรองสำหรับ "mymachinename" และฉันต้องการใบรับรองสำหรับ "localhost"
chris

1
Hi! พิจารณากำหนดคำตอบของ Auri เป็นคำตอบหลักเนื่องจาก makecert เลิกใช้งานแล้ว ลิงก์ไปยังคำตอบ: stackoverflow.com/a/44164653/1461602
Tormod Haugene

คำตอบ:


81

แม้ว่าโพสต์นี้จะถูกแท็กสำหรับ Windows แต่ก็เป็นคำถามที่เกี่ยวข้องกับ OS X ที่ฉันไม่เห็นคำตอบสำหรับที่อื่น ต่อไปนี้เป็นขั้นตอนในการสร้างใบรับรองที่ลงนามด้วยตนเองสำหรับ localhost บนOS X :

# Use 'localhost' for the 'Common name'
openssl req -x509 -sha256 -nodes -newkey rsa:2048 -days 365 -keyout localhost.key -out localhost.crt

# Add the cert to your keychain
open localhost.crt

ในKeychain Accessให้ดับเบิลคลิกที่ใบรับรอง localhost ใหม่นี้ ขยายลูกศรข้าง "Trust" และเลือก "Always trust" Chrome และ Safari ควรเชื่อถือใบรับรองนี้แล้ว ตัวอย่างเช่นหากคุณต้องการใช้ใบรับรองนี้กับ node.js:

var options = {
    key: fs.readFileSync('/path/to/localhost.key').toString(),
    cert: fs.readFileSync('/path/to/localhost.crt').toString(),
    ciphers: 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384',
    honorCipherOrder: true,
    secureProtocol: 'TLSv1_2_method'
};

var server = require('https').createServer(options, app);

2
คำสั่งแรกssh-keygenเป็นคำสั่งที่ไม่จำเป็นเป็น OpenSSL จะยังสร้างคีย์ใหม่ (และเขียนทับหนึ่งที่สร้างขึ้นโดย SSH)
Félix Saparelli

7
นอกจากนี้คุณสามารถดำเนินการโดยอัตโนมัติอย่างสมบูรณ์โดยการเพิ่ม-subj '/CN=localhost'กับopensslข้อโต้แย้ง
Félix Saparelli

8
หากต้องการให้ OS X เชื่อถือได้จากบรรทัดคำสั่งแทนที่จะคลิกไปรอบ ๆ คุณสามารถทำได้:sudo security add-trusted-cert -p ssl -d -r trustRoot -k ~/Library/Keychains/login.keychain localhost.crt
philfreo

1
ยังเกี่ยวข้องกับลินุกซ์ ขอบคุณมาก.
Marcel

1
ฉันทำตามขั้นตอนเหล่านี้ทั้งหมดและได้รับERR_SSL_VERSION_OR_CIPHER_MISMATCHChrome 60 และ Safari 10.1.2 ก็ไม่ชอบเช่นกัน
styfle

62

เนื่องจากคำถามนี้ถูกแท็กIISและฉันไม่พบคำตอบที่ดีเกี่ยวกับวิธีรับใบรับรองที่เชื่อถือได้ฉันจะให้ 2 เซ็นต์เกี่ยวกับเรื่องนี้:

ก่อนอื่นให้ใช้คำสั่งจาก @AuriRahimzadeh ใน PowerShell ในฐานะผู้ดูแลระบบ:

New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"

สิ่งนี้ดี แต่ใบรับรองไม่น่าเชื่อถือและจะส่งผลให้เกิดข้อผิดพลาดต่อไปนี้ เป็นเพราะไม่ได้ติดตั้งในTrusted Root Certification Authorities.

ใส่คำอธิบายภาพที่นี่

mmc.exeแก้ปัญหานี้ด้วยการเริ่มต้น

จากนั้นไปที่:

ไฟล์ -> เพิ่มหรือลบสแนปอิน -> ใบรับรอง -> เพิ่ม -> บัญชีคอมพิวเตอร์ -> คอมพิวเตอร์ในเครื่อง คลิกเสร็จสิ้น

ขยายPersonalโฟลเดอร์และคุณจะเห็นlocalhostใบรับรองของคุณ:

ใส่คำอธิบายภาพที่นี่

คัดลอกใบรับรองลงในTrusted Root Certification Authorities - Certificatesโฟลเดอร์

ขั้นตอนสุดท้ายคือการเปิดหรือเพียงแค่Internet Information Services (IIS) Manager inetmgr.exeจากนั้นไปที่เว็บไซต์ของคุณให้เลือกBindings...และหรือAdd... Edit...ตั้งค่าhttpsและเลือกใบรับรองของคุณจากเมนูแบบเลื่อนลง

ใส่คำอธิบายภาพที่นี่

ตอนนี้ใบรับรองของคุณเชื่อถือได้:

ใส่คำอธิบายภาพที่นี่


9
นี่ควรเป็นคำตอบที่ได้รับการยอมรับ! มันได้ผล! หากคุณยุ่งกับ localhost และใบรับรองที่เชื่อถือได้ อย่าลืมลบใบรับรอง localhost เก่าทั้งหมด (ผ่านคอนโซล mmc และ IIS (เซิร์ฟเวอร์ที่มีการจัดการระดับสูง)
Tuan Jinn

ขอบคุณ! มีคำตอบ SO จำนวนมากและโพสต์บล็อกในหัวข้อนี้ แต่มีการพูดถึงปัญหาเกี่ยวกับความน่าเชื่อถือใบรับรองน้อยมาก เคล็ดลับ: บางทีคุณควรอธิบายว่าทำไมคุณไม่ใช้พอร์ต SSL เริ่มต้น 443? ฉันเดาว่าเป็นเพราะพอร์ตนี้มักถูกใช้โดยกระบวนการอื่น
HoffZ

คำตอบที่ดีจริงๆและใช้งานได้ดีกับ IIS ในปี 2020 ขอบคุณมาก!
alessandrocb

ใช้ได้กับนามแฝงในไฟล์โฮสต์
Zef

52

คุณสามารถใช้ PowerShell เพื่อสร้างใบรับรองที่ลงนามด้วยตนเองโดยใช้ cmdlet selfsignedcertificate ใหม่:

New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"

หมายเหตุ: makecert.exe เลิกใช้แล้ว

Cmdlet อ้างอิง: https://technet.microsoft.com/itpro/powershell/windows/pkiclient/new-selfsignedcertificate


นี่ควรเป็นคำตอบในปี 2017
Tormod Haugene

1
สำหรับผู้ที่ติดตามและไม่ทราบวิธีติดตั้งใบรับรองผลลัพธ์ให้ทำตามขั้นตอนในวิดีโอนี้ได้ผลสำหรับฉัน! youtube.com/watch?v=y4uKPUFmSZ0
Eric Brown - Cal

6
คีย์และไฟล์ crt เก็บไว้ที่ไหน
woojoo666

1
@ woojoo666 พร้อม-KeyLocationแฟล็กคุณสามารถระบุตำแหน่งได้
hamid

46

หลังจากใช้เวลาพอสมควรกับปัญหานี้ฉันพบเมื่อใดก็ตามที่ฉันทำตามคำแนะนำในการใช้ IIS เพื่อสร้างใบรับรองที่ลงนามด้วยตนเองฉันพบว่าออกให้และออกโดยไม่ถูกต้อง SelfSSL.exe เป็นกุญแจสำคัญในการแก้ปัญหานี้ เว็บไซต์ต่อไปนี้ไม่เพียงให้วิธีการทีละขั้นตอนในการสร้างใบรับรองที่ลงนามด้วยตนเองเท่านั้น แต่ยังแก้ไขปัญหาที่ออกให้และออกให้ด้วย นี่คือทางออกที่ดีที่สุดที่ฉันพบในการสร้างใบรับรองที่ลงนามด้วยตนเอง หากคุณต้องการที่จะเห็นการกวดวิชาเดียวกันในรูปแบบวิดีโอคลิกที่นี่

ตัวอย่างการใช้ SelfSSL จะมีลักษณะดังนี้:

SelfSSL /N:CN=YourWebsite.com / V: 1000 / S: 2

SelfSSL /? จะให้รายการพารามิเตอร์พร้อมคำอธิบาย


บทความโดย RobBagby.com ทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน พบเฮนรี่ได้ดี
cymorg

MEGA! วิดีโอนั้นมีคุณภาพต่ำ แต่มีทุกสิ่งที่จำเป็น
tonco

2
ลิงก์ไปยังไซต์ robbagby ไม่สามารถใช้งานได้ ดูคำตอบของฉันสำหรับบทแนะนำ YouTube คุณภาพสูง 2 รายการโดย CodeCowboyOrg
Moses Machua

แก้ไขคำตอบเพื่อลิงก์ไปยังที่เก็บถาวรของ Wayback ของบทความบน robbagby.com
Prometheus

23

หากคุณกำลังพยายามสร้างใบรับรองที่ลงนามด้วยตนเองซึ่งจะช่วยให้คุณไปได้http://localhost/mysite จากนั้นนี่คือวิธีสร้าง

makecert -r -n "CN=localhost" -b 01/01/2000 -e 01/01/2099 -eku 1.3.6.1.5.5.7.3.1 -sv localhost.pvk localhost.cer
cert2spc localhost.cer localhost.spc
pvk2pfx -pvk localhost.pvk -spc localhost.spc -pfx localhost.pfx

จากhttp://social.msdn.microsoft.com/Forums/en-US/wcf/thread/32bc5a61-1f7b-4545-a514-a11652f11200


2
ใบรับรองของฉันหายไปไหน: o ไม่ได้อยู่ใน C: \ Windows \ system32
EaterOfCode

2
อย่างไรก็ตามเครื่องมือ makecert.exe ใช้ผ่านพรอมต์คำสั่ง Visual Studio สำหรับผู้อ่านในอนาคต คุณยังสามารถใช้ Internet Information Services (IIS) Resource Kit Tools และติดตั้ง SelfSSL 1.0 microsoft.com/downloads/th/…
atconway

3
แม้ว่าคำตอบด่วนจะดี แต่ก็ไม่ได้ช่วยเสมอไป "ไม่สามารถใช้ใบรับรองเป็นใบรับรองเซิร์ฟเวอร์ SSL" เป็นข้อผิดพลาดที่ฉันเห็นใน IIS7 Op ได้กล่าวถึงคำเตือนเกี่ยวกับเบราว์เซอร์และไม่ "ฉันจะสร้างใบรับรองได้อย่างไร"
cmroanirgo

คุณสามารถละเว้นพารามิเตอร์ขั้นตอนที่กำหนดของ cert2spc pvk2pfx -spc ยอมรับทั้ง. spc และ. cer
abatishchev

1
@EaterOfCode Mine อยู่ใน C: \ Windows \ SysWOW64
Bay Sola

10

ฉันจะแนะนำเครื่องมือของ Pluralsight สำหรับการสร้างใบรับรองที่ลงนามด้วยตนเอง: http://blog.pluralsight.com/selfcert-create-a-self-signed-certificate-interactively-gui-or-programmatically-in-net

ทำให้ใบรับรองของคุณเป็น. pfx และนำเข้าสู่ IIS และเพิ่มเป็นผู้ออกใบรับรองหลักที่เชื่อถือได้


1
หลังจากกระพือปีกไปมาด้วยการลองใช้ "เวทมนตร์" ของ PowerShell และสิ่งอื่น ๆ ที่ไม่ได้ผล - เครื่องมือของ Pluralsight สร้างสคริปต์ที่ใช้งานได้สำหรับฉันในเวลา 30 วินาทีต่อเนื่องและนั่นรวมถึงเวลาที่ใช้ในการกินพิซซ่า (+ ดาวน์โหลดและ แตกเครื่องมือฉันหมายถึง) ในขณะที่ฉันยังใช้ Windows 7 บนแล็ปท็อปเครื่องเก่านี้ - นี่เป็นทางออกที่สมบูรณ์แบบสำหรับฉันขอบคุณ!
อาเด

1

ใช่และไม่. ใบรับรองที่ลงนามด้วยตนเองส่งผลให้เกิดข้อความเตือนดังกล่าวเนื่องจากใบรับรองไม่ได้ลงนามโดยผู้ออกใบรับรองที่เชื่อถือได้ มีตัวเลือกสองสามอย่างที่คุณสามารถพิจารณาเพื่อลบคำเตือนนี้ในเครื่องของคุณ ดูคำตอบที่ได้รับการจัดอันดับสูงสุดสำหรับคำถามนี้สำหรับรายละเอียด:

ฉันต้องทำอย่างไรเพื่อให้ Internet Explorer 8 ยอมรับใบรับรองที่ลงนามด้วยตนเอง

หวังว่านี่จะช่วยได้!


แก้ไข:

ขออภัยตอนแรกฉันไม่ทราบว่าคุณถูก จำกัด ให้ใช้งาน localhost คุณสามารถลองทำตามคำแนะนำในลิงก์ด้านล่างเพื่อ "สร้างใบรับรองที่ลงนามด้วยตนเองโดยใช้ชื่อสามัญที่ถูกต้อง"

http://www.sslshopper.com/article-how-to-create-a-self-signed-certificate-in-iis-7.html


ไม่ได้มีข้อความแจ้งเตือนเนื่องจาก URL ( localhost ) ไม่ตรงกับชื่อใบรับรองซึ่งออกภายใต้ชื่อเครื่อง หากฉันเปลี่ยนไปใช้mymachinenameแล้วฉันไม่ได้รับข้อผิดพลาด น่าเสียดายที่ฉันต้องใช้ localhost ไม่ใช่ชื่อเครื่องด้วยเหตุผลที่ไม่ส่งผลต่อคำถาม
chris


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.