รับ Chrome เพื่อยอมรับใบรับรองโฮสต์ในพื้นที่ที่ลงชื่อด้วยตนเอง


1209

ฉันสร้างใบรับรอง SSL ที่ลงชื่อด้วยตนเองสำหรับ localhost CN Firefox ยอมรับใบรับรองนี้หลังจากเริ่มบ่นเรื่องนี้ตามที่คาดไว้ อย่างไรก็ตาม Chrome และ IE ปฏิเสธที่จะยอมรับแม้ว่าจะเพิ่มใบรับรองไปยังที่เก็บใบรับรองระบบภายใต้ Trusted Roots แม้ว่าใบรับรองจะแสดงรายการว่าติดตั้งอย่างถูกต้องเมื่อฉันคลิก "ดูข้อมูลใบรับรอง" ในป๊อปอัพ HTTPS ของ Chrome แต่ก็ยังยืนยันว่าใบรับรองไม่น่าเชื่อถือ

ฉันควรทำอย่างไรเพื่อให้ Chrome ยอมรับใบรับรองและหยุดบ่นเกี่ยวกับเรื่องนี้


13
เมื่อคุณบอกว่า Firefox บ่นเกี่ยวกับมันในตอนแรกคุณหมายถึงว่ามันขอให้คุณเพิ่มข้อยกเว้นใบรับรองหรือไม่ สิ่งนี้จะไม่เกิดขึ้นหากใบรับรองถูกติดตั้งอย่างถูกต้อง ฟังดูแล้วว่าทั้งสามเบราว์เซอร์บ่น แต่ Firefox อนุญาตให้คุณยกเลิกการร้องเรียนได้ ฉันโพสต์สิ่งนี้เป็นความคิดเห็นเนื่องจากฉันไม่มีคำตอบเฉพาะ แต่ฉันได้ทำสิ่งนี้แล้วและทำงานได้ดีในเบราว์เซอร์ทั้งสาม ฉันขอแนะนำให้คุณลองใช้ IE ก่อนแล้วจึงค่อยมีความสุขกับอีกสองคน ขออภัยฉันไม่สามารถช่วยได้มากขึ้น!
starskythehutch

1
คุณต้องสร้างใบรับรองที่มีรูปแบบที่ดีรวมถึงวิธีแสดงชื่อ DNS OpenSSL ไม่ได้นำเสนอในลักษณะที่ทำให้เบราว์เซอร์พอใจ ดูวิธีสร้างใบรับรองที่ลงชื่อด้วยตนเองด้วย openssl .
jww

4
Firefox ไม่ได้ใช้ที่เก็บใบรับรองระบบ
curiousguy

4
ถ้าลายเซ็นใบรับรองของคุณใช้ SHA-1 รุ่นล่าสุดของ Chrome (ประมาณ 57) จะแสดงคำเตือนแม้ว่าคุณจะได้รับสามารถที่จะเพิ่มใบรับรองกำหนดเองของคุณประสบความสำเร็จ ไม่ว่า "ความปลอดภัย" net::ERR_CERT_WEAK_SIGNATURE_ALGORITHMแผงของเครื่องมือสำหรับนักพัฒนาจะพูดมากขึ้นโดยเฉพาะสิ่งที่เป็นปัญหาเช่น:
SeldomNeedy

2
ฉันเพิ่งหยุดใช้ Chrome เพื่อการพัฒนาเนื่องจากไม่เป็นมิตรกับนักพัฒนา โดยปกติแล้วคนที่ลงเอยในสถานการณ์นี้จะรู้ว่าพวกเขากำลังทำอะไรอยู่ ขอบคุณ แต่ไม่ขอบคุณ ฉันผิดหวังกับ Chrome มากพอ!
GTodorov

คำตอบ:


66

2020-05-22 : ด้วยคำสั่งเชลล์เพียง6คำสั่งคุณสามารถทำสิ่งนี้ได้สำเร็จ

กรุณาอย่าเปลี่ยนการตั้งค่าความปลอดภัยเบราว์เซอร์ของคุณ

ด้วยรหัสต่อไปนี้คุณสามารถ (1) เป็น CA ของคุณเอง (2) จากนั้นลงชื่อใบรับรอง SSL ของคุณเป็น CA (3) จากนั้นนำเข้าใบรับรอง CA (ไม่ใช่ใบรับรอง SSL ซึ่งไปยังเซิร์ฟเวอร์ของคุณ) ลงใน Chrome / Chromium (ใช่มันใช้งานได้กับ Linux)

######################
# Become a Certificate Authority
######################

# Generate private key
openssl genrsa -des3 -out myCA.key 2048
# Generate root certificate
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 825 -out myCA.pem

######################
# Create CA-signed certs
######################

NAME=mydomain.com # Use your own domain name
# Generate a private key
openssl genrsa -out $NAME.key 2048
# Create a certificate-signing request
openssl req -new -key $NAME.key -out $NAME.csr
# Create a config file for the extensions
>$NAME.ext cat <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = $NAME # Be sure to include the domain name here because Common Name is not so commonly honoured by itself
DNS.2 = bar.$NAME # Optionally, add additional domains (I've added a subdomain here)
IP.1 = 192.168.0.13 # Optionally, add an IP address (if the connection which you have planned requires it)
EOF
# Create the signed certificate
openssl x509 -req -in $NAME.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial \
-out $NAME.crt -days 825 -sha256 -extfile $NAME.ext

วิธีการสรุป:

  1. กลายเป็นแคลิฟอร์เนีย
  2. เซ็นรับรองโดยใช้คีย์ CA ของคุณ
  3. นำเข้าmyCA.pemในฐานะผู้มีอำนาจในการตั้งค่า Chrome ของคุณ (การตั้งค่า> จัดการใบรับรอง> ผู้มีอำนาจ> นำเข้า)
  4. ใช้.crtไฟล์ในเซิร์ฟเวอร์ของคุณ

ขั้นตอนพิเศษ (สำหรับ Mac อย่างน้อย):

  1. นำเข้าใบรับรอง CA ที่ "ไฟล์> นำเข้าไฟล์" จากนั้นค้นหาในรายการคลิกขวาขยาย "> เชื่อถือ" และเลือก "เสมอ"
  2. เพิ่มextendedKeyUsage=serverAuth,clientAuthด้านล่างbasicConstraints=CA:FALSEและให้แน่ใจว่าคุณตั้ง "CommonName" เป็นเช่นเดียวกับ$NAMEเมื่อมันขอตั้งค่า

คุณสามารถตรวจสอบงานของคุณ

openssl verify -CAfile myCA.pem -verify_hostname bar.mydomain.com mydomain.com.crt

2
@maverick เบราว์เซอร์และระบบปฏิบัติการมาพร้อมกับ CA จำนวน จำกัด ที่พวกเขาเชื่อถือ แม้ว่าใคร ๆ ก็สามารถเป็น CA ได้เพื่อให้ทุกคนเชื่อถือใบรับรองได้ แต่พวกเขาต้องการคนที่จะเพิ่มพวกเขาด้วยตนเองเป็น CA ที่เชื่อถือได้ (ตามที่เราบอกให้ Chrome ทำเมื่อเรานำเข้าใบรับรองด้วยตนเอง)
JellicleCat

2
ที่ดี! ข้อสังเกตสองประการสำหรับผู้ใช้ Mac อย่างฉัน: ในบรรทัดสุดท้ายให้ใช้-days 825แทน-days 1825เนื่องจากsuperuser.com/questions/1492643/และมันก็คุ้มค่าที่จะสังเกตเห็นว่าการนำเข้าใบรับรองรูทเข้าสู่การเข้าถึงห่วงโซ่คุณไม่เพียงต้องการ "ไฟล์" > นำเข้าไฟล์ "แต่จากนั้นจะค้นหาในรายการคลิกขวาขยาย"> เชื่อถือ "และเลือก" เสมอ "
michielbdejong

2
หากคุณต้องการไฟล์PEMแทนที่จะเป็นไฟล์CRTสำหรับเซิร์ฟเวอร์ dev ในพื้นที่ของคุณไม่ต้องกังวลเพียงรวมไฟล์. crtและ. csrแล้วบันทึกเป็นไฟล์. pemและคุณก็พร้อมใช้งาน
Kerem Baydoğan

1
เมื่อไม่นานมานี้! BRAVO สำหรับคำตอบนี้ โปรดอย่าลืมโหลด myCA.pem ไปยัง Chrome หรือ Firefox ของคุณ (การตั้งค่า> จัดการใบรับรอง> ผู้มีอำนาจ> นำเข้า)
Fryser wow

3
ฉันเปลี่ยน DNS.1 เป็น IP.1 สำหรับเซิร์ฟเวอร์ LAN ที่ใช้ IP ของฉัน มันได้ผล. ขอบคุณ
dw1

766

สำหรับlocalhostเท่านั้น:

เพียงวางสิ่งนี้ลงใน chrome ของคุณ:

chrome://flags/#allow-insecure-localhost

คุณควรเห็นข้อความที่เน้นว่า: อนุญาตใบรับรองที่ไม่ถูกต้องสำหรับทรัพยากรที่โหลดจาก localhost

Enableคลิก


3
ปิดใช้งานการเตือน ... แต่ยังเป็นแคช! bugs.chromium.org/p/chromium/issues/detail?id=103875
Hugo Wood

4
สิ่งนี้จะไม่ทำงานหากคุณใช้โครเมี่ยมในโหมดไม่ระบุตัวตน (เพื่อสลับข้อมูลประจำตัวของเช่น) แต่ก็สะอาดมาก
baywet

5
นี่ - ถ้าคุณสามารถยืนได้สีแดงน่ารำคาญไม่ปลอดภัยผงชูรส มิฉะนั้นจะต้องใช้เวลานานหลายชั่วโมงกว่าจะมีคาถา openssl ลึกลับจากนั้นพยายามจัดการกับผู้จัดการใบรับรองภายในใน Chrome
timbo

10
ฉันไม่รู้ว่าทำไมคำตอบนี้ถึงได้รับการโหวต แต่มีความแตกต่างระหว่างใบรับรองที่ไม่ถูกต้องและใบรับรองที่ลงชื่อด้วยตนเอง คำถามเกี่ยวกับใบรับรองที่ลงชื่อด้วยตนเอง
เมห์

2
ไม่ได้ผลสำหรับฉันเลย สิ่งที่ใช้ได้ผลสำหรับฉันคือการสร้างใบรับรองที่ลงชื่อด้วยตัวเองรวมถึง subjectAltName ตามที่อธิบายโดยคำตอบนี้: stackoverflow.com/a/42917227/2873507
Vic Seedoubleyew

507

สิ่งนี้ใช้ได้กับฉัน:

  1. ใช้ Chrome กดหน้าเว็บบนเซิร์ฟเวอร์ของคุณผ่าน HTTPS และดำเนินการต่อผ่านหน้าคำเตือนสีแดง (สมมติว่าคุณยังไม่ได้ทำสิ่งนี้)
  2. Chrome Settings > Show advanced settings > HTTPS/SSL > Manage Certificatesที่เปิดขึ้นมา
  3. คลิกAuthoritiesแท็บและเลื่อนลงเพื่อค้นหาใบรับรองของคุณภายใต้ชื่อองค์กรที่คุณมอบให้กับใบรับรอง
  4. เลือกคลิกแก้ไข ( หมายเหตุ : ใน Chrome รุ่นล่าสุดปุ่มตอนนี้เป็น "ขั้นสูง" แทน "แก้ไข") ทำเครื่องหมายในช่องทั้งหมดแล้วคลิกตกลง คุณอาจต้องรีสตาร์ท Chrome

คุณควรได้ล็อคสีเขียวที่ดีบนหน้าของคุณตอนนี้

แก้ไข:ฉันลองอีกครั้งในเครื่องใหม่และใบรับรองไม่ปรากฏในหน้าต่างจัดการใบรับรองเพียงแค่ดำเนินการต่อจากหน้าใบรับรองสีแดงที่ไม่น่าเชื่อถือ ฉันต้องทำดังต่อไปนี้:

  1. ในหน้าที่มีใบรับรองที่ไม่น่าเชื่อถือ ( https://ขีดเป็นสีแดง) ให้คลิกที่ล็อค> ข้อมูลใบรับรอง หมายเหตุ:ในรุ่นใหม่ของโครเมี่ยม, คุณต้องเปิดและเลือกDeveloper Tools > SecurityView certificate
  2. Details tab > Exportคลิกที่ เลือกPKCS #7, single certificateเป็นรูปแบบไฟล์
  3. จากนั้นทำตามคำแนะนำดั้งเดิมของฉันเพื่อไปที่หน้าจัดการใบรับรอง คลิกAuthorities tab > Importและเลือกไฟล์ที่คุณส่งออกใบรับรองและให้แน่ใจว่าจะเลือก เป็นประเภทของไฟล์PKCS #7, single certificate
  4. หากที่เก็บใบรับรองได้รับแจ้งให้เลือกผู้ให้บริการออกใบรับรองหลักที่เชื่อถือได้
  5. ทำเครื่องหมายที่ช่องทั้งหมดแล้วคลิกตกลง รีสตาร์ท Chrome

143
ฉันลองสิ่งนี้บนเครื่อง Linux แต่มันบอกว่าการนำเข้าล้มเหลวเพราะ xxx.xxx.com: ไม่ใช่ผู้ออกใบรับรอง
แมตต์

15
ขอบคุณ @kellen .. อย่างไรก็ตามการใช้ Chrome เวอร์ชัน 29.0.1547.57 เบต้าดูเหมือนจะไม่มีตัวเลือก "ส่งออก" ที่ใดก็ได้ในข้อมูลใบรับรอง ที่กล่าวว่ามีความเป็น "รายละเอียด" ส่วนแต่ก็ไม่ได้อยู่ในรูปแบบของแท็บ มันจะปรากฏเป็นบล็อกที่ยุบ / ขยายได้ i.imgur.com/dDmNEIh.png
ขบวนแห่

20
ใน Chrome 37 ไม่มีExportปุ่มอธิบายที่มีประโยชน์อีกต่อไปดูเหมือนว่าจะถูกแทนที่ด้วยCopy to fileปุ่มวิเศษ ทำไม 'การส่งออก' ไม่ถูกเก็บไว้ใจเพียง แต่กระวนกระวาย
kolin

13
@ Jakobud เพียงลากสัญลักษณ์ใบรับรองไปที่เดสก์ท็อปหรือบางสิ่งและมันถูกส่งออก อย่างไรก็ตามคำตอบที่เหลือไม่ทำงานบน OS X (Yosemite) เท่าที่ฉันจะบอกได้ (Chrome 39)
db

33
ตั้งแต่ Chrome 56 การเข้าถึงการตั้งค่าใบรับรอง SSL ใน Windows คุณต้องใช้เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ (CTRL + SHIFT + i) ไปที่แท็บ "ความปลอดภัย" และคลิกปุ่ม "ดูใบรับรอง"
void.pointer

167

อัปเดตสำหรับโครเมี่ยม 58+ (เปิดตัว 2017-04-19)

ในฐานะของ Chrome 58, ความสามารถในการระบุโฮสต์โดยใช้เพียงถูกลบออกcommonName ใบรับรองต้องใช้subjectAltNameเพื่อระบุโฮสต์ของพวกเขา ดูเพิ่มเติมอภิปรายที่นี่และติดตามข้อผิดพลาดที่นี่ ในอดีตsubjectAltNameเคยใช้สำหรับ certs หลายโฮสต์เท่านั้นเครื่องมือ CA ภายในบางตัวไม่รวม

หาก certs ที่ลงชื่อด้วยตนเองของคุณทำงานได้ดีในอดีตแต่ก็เริ่มสร้างข้อผิดพลาดใน Chrome 58 ด้วยเหตุนี้เอง

ดังนั้นวิธีใดก็ตามที่คุณใช้เพื่อสร้างใบรับรองที่ลงนามด้วยตนเอง (หรือใบรับรองที่ลงนามโดย CA ที่ลงนามเอง) ตรวจสอบให้แน่ใจว่าใบรับรองของเซิร์ฟเวอร์ประกอบด้วย a subjectAltNameด้วยรายการที่เหมาะสมDNSและ / หรือIPรายการ / แม้ว่าจะเป็นเพียงโฮสต์เดียว .

สำหรับ openssl นี่หมายถึงการกำหนดค่าOpenSSL ของคุณ ( /etc/ssl/openssl.cnfบน Ubuntu) ควรมีสิ่งที่คล้ายกับรายการต่อไปนี้สำหรับโฮสต์เดียว:

[v3_ca]   # and/or [v3_req], if you are generating a CSR
subjectAltName = DNS:example.com

หรือสำหรับโฮสต์หลายรายการ:

[v3_ca]   # and/or [v3_req], if you are generating a CSR
subjectAltName = DNS:example.com, DNS:host1.example.com, DNS:*.host2.example.com, IP:10.1.2.3

ในมุมมองใบรับรองของ Chrome (ซึ่งได้ย้ายไปที่แท็บ "ความปลอดภัย" ภายใต้ F12) คุณจะเห็นว่ามันอยู่ภายใต้Extensionsเป็นCertificate Subject Alternative Name:

โปรแกรมดูใบรับรองของ Chrome


12
ขอบคุณที่โพสต์เกี่ยวกับการอัปเดต Chrome 58+! สำหรับผู้ที่ต้องการสร้างใบรับรองที่เซ็นชื่อด้วยตนเองที่มี SAN ใน Windows วิธีหนึ่งที่ง่ายคือการใช้ Commandlet PowerShell New-SelfSignedCertificate New-SelfSignedCertificate -DnsName localhost -CertStoreLocation cert:\LocalMachine\My
DanO

3
@DANO ขอขอบคุณ! ไม่มีวิธีแก้ไขอื่นใดที่ทำงานให้ฉันใน Win10 ดีใจที่ได้ทราบ Powershell อย่างน้อยสร้างใบรับรองที่ถูกต้อง!
Brian Donahue

1
พบวิธีแก้ปัญหาสำหรับ Reddit สำหรับ Chrome 58+ และใช้งานได้! ในพรอมต์คำสั่งผู้ดูแลระบบ: reg เพิ่ม HKLM \ Software \ Policies \ Google \ Chrome / v EnableCommonNameFallbackForLocalAnchors / t REG_DWORD / d REG_DWORD / d 1
IrfanClemson

3
หากต้องการสร้างนโยบายบน Linux คุณต้องสร้างแฟ้มนโยบายพูด/etc/opt/chrome/policies/managed/EnableCommonNameFallbackForLocalAnchors.jsonกับเนื้อหาเหล่านี้: { "EnableCommonNameFallbackForLocalAnchors": true }
seanf

5
"ในโปรแกรมดูใบรับรองของ Chrome (ซึ่งย้ายไปที่แท็บ" ความปลอดภัย "ภายใต้ F12) คุณควรเห็นรายการอยู่ในรายการExtensionsในชื่อCertificate Subject Alternative Name" ฉันไม่เห็นส่วน "ส่วนขยาย" ใด ๆ เมื่อฉันเปิดแท็บความปลอดภัยในเครื่องมือ F12 dev (Chrome 62) มันถูกย้ายไปที่อื่นหรือไม่?
Thunderforge

143

ใน Mac คุณสามารถใช้ยูทิลิตี Keychain Access เพื่อเพิ่มใบรับรองที่ลงชื่อด้วยตัวเองลงใน Keychain System แล้ว Chrome จะยอมรับมัน ฉันพบคำแนะนำทีละขั้นตอนที่นี่:

ใบรับรอง Google Chrome, Mac OS X และ SSL ที่ลงชื่อด้วยตนเอง

โดยทั่วไป:

  1. ดับเบิลคลิกที่ไอคอนล็อคด้วย X และลากและวางไอคอนใบรับรองไปที่เดสก์ท็อป
  2. เปิดไฟล์นี้ (ลงท้ายด้วยนามสกุล. cer) นี่เป็นการเปิดแอปพลิเคชั่นพวงกุญแจที่ให้คุณอนุมัติใบรับรอง

12
ที่สำคัญคุณอาจต้องรีสตาร์ท Chrome เพื่อให้สิ่งนี้มีผล
Xiong Chiamiov

10
ฉันต้องแก้ไขการตั้งค่าใบรับรองและเปิดใช้งานความน่าเชื่อถือ SSL ด้วยตนเอง
NeDark

1
สิ่งนี้ใช้ได้กับฉันใน Yosemite, 10.10.5, Chrome เวอร์ชัน 46.0.2490.80 (64-bit) ขอบคุณ!
romellem

2
ทำงานบน El Capitan ไม่จำเป็นต้องรีสตาร์ท ฉันเพิ่มใบรับรองคลิกที่มันขยาย Trust dropdown และตั้งAlways Trustเป็นส่วน SSL โดยพื้นฐานแล้ว @NeDark พูดอะไร
Tom

1
ฉันต้องการลากและวางใบรับรองจากเดสก์ท็อปลงใน Keychain แล้วทำการอนุมัติ
jmq

130

คลิกที่ใดก็ได้บนหน้าและพิมพ์ BYPASS_SEQUENCE

" thisisunsafe" เป็น BYPASS_SEQUENCE สำหรับ Chrome เวอร์ชัน 65

" badidea" Chrome รุ่น 62 - 64

" danger" เคยทำงานกับ Chrome รุ่นก่อนหน้า

คุณไม่จำเป็นต้องค้นหาช่องป้อนข้อมูลเพียงพิมพ์ มันรู้สึกแปลก ๆ แต่ก็ใช้งานได้

ฉันลองบน Mac High Sierra

หากต้องการตรวจสอบอีกครั้งหากพวกเขาเปลี่ยนมันอีกครั้งไปที่รหัสแหล่งโครเมียมล่าสุด

หากต้องการค้นหา BYPASS_SEQUENCE ในขณะนี้ดูเหมือนว่า:

var BYPASS_SEQUENCE = window.atob('dGhpc2lzdW5zYWZl');

ตอนนี้พวกเขามีลายพราง แต่เพื่อดู BYPASS_SEQUENCE จริงคุณสามารถเรียกใช้บรรทัดต่อไปนี้ในคอนโซลเบราว์เซอร์

console.log(window.atob('dGhpc2lzdW5zYWZl'));

6
wtf ขอบคุณที่ทำงานกับฉัน Ubuntu 16.04 63.0.3239.84
gries

8
รหัสนี้มีการเปลี่ยนแปลงตั้งแต่รุ่นใหม่ วลีใหม่คือthisisunsafe
The Java Guy

6
ใน Chrome 65 บน Windows 10 การพิมพ์thisisunsafeดูเหมือนจะมีผลกับการเพิ่มไซต์นี้ในข้อยกเว้นเท่านั้น (แถบที่อยู่ยังคงระบุว่า "ไม่ปลอดภัย" ในสีแดง)
Ryan

2
สิ่งนี้ใช้ได้ แต่สำหรับการโหลดครั้งแรกหากคุณสำรวจหน้าเว็บคุณจะต้องพิมพ์ bupass_squence อีกครั้ง
talsibony

"thisisunsafe" BYPASS_SEQUENCE เป็นสิ่งเดียวจากหน้านี้ที่ทำงานให้ฉันใน Mac Chrome 72 ฉันรู้สึกว่าฉันไม่จำเป็นต้องกังวลในการสร้างใบรับรองที่ลงชื่อด้วยตัวเอง ... !
Jono

95

ลินุกซ์

หากคุณใช้งาน Linux คุณสามารถติดตามหน้า wiki อย่างเป็นทางการนี้ได้:

โดยทั่วไป:

  • คลิกที่ไอคอนล็อคด้วย X
  • เลือกข้อมูลใบรับรอง
  • ไปที่แท็บรายละเอียด
  • คลิกที่ส่งออก ... (บันทึกเป็นไฟล์)

ตอนนี้คำสั่งต่อไปนี้จะเพิ่มใบรับรอง (โดยที่ YOUR_FILE เป็นไฟล์ที่ส่งออกของคุณ):

certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n YOUR_FILE -i YOUR_FILE

หากต้องการแสดงใบรับรองทั้งหมดของคุณให้เรียกใช้คำสั่งต่อไปนี้:

certutil -d sql:$HOME/.pki/nssdb -L

หากยังไม่สามารถใช้งานได้คุณอาจได้รับผลกระทบจากข้อผิดพลาดนี้: ปัญหา 55050: ข้อผิดพลาด Ubuntu SSL 8179

ป.ล. โปรดตรวจสอบให้แน่ใจว่าคุณมีlibnss3-toolsก่อนที่คุณจะสามารถใช้คำสั่งข้างต้น

หากคุณไม่มีโปรดติดตั้งโดย:

sudo apt-get install libnss3-tools # on Ubuntu
sudo yum install nss-tools # on Fedora, Red Hat, etc.

เป็นโบนัสคุณสามารถใช้สคริปต์ที่มีประโยชน์ต่อไปนี้:

$ cat add_cert.sh
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n $1 -i $1
$ cat list_cert.sh
certutil -d sql:$HOME/.pki/nssdb -L # add '-h all' to see all built-in certs
$ cat download_cert.sh
echo QUIT | openssl s_client -connect $1:443 | sed -ne '/BEGIN CERT/,/END CERT/p'

การใช้งาน:

add_cert.sh [FILE]
list_cert.sh
download_cert.sh [DOMAIN]

การแก้ไขปัญหา

  • เรียกใช้ Chrome พร้อม--auto-ssl-client-authพารามิเตอร์

    google-chrome --auto-ssl-client-auth


ยอดเยี่ยมฉันรักสคริปต์ของคุณ คุณไม่จำเป็นต้องมี QUIT (ไม่มีคำสั่ง HTTP เช่น QUIT อยู่แล้ว) และคุณไม่จำเป็นต้องใช้คำสั่ง sed เครื่องมือ nss สามารถกรองใบรับรองระหว่าง BEGIN และ END CERT ดังนั้นdownload_cert.shสามารถเป็นเพียงนี้:echo | openssl s_client -connect $1:443
Paul Tobias

ฉันได้ลองใช้ตัวเลือกอื่นแล้ว แต่ปัจจุบันมีเพียงตัวเดียวที่ใช้งานได้ใน Chrome 4x สำหรับ Linux ซึ่งปฏิเสธที่จะนำเข้าสู่ร้านค้าใด ๆ โดยใช้เครื่องมือในตัว
Kendrick

93

ใน Mac คุณสามารถสร้างใบรับรองที่ Chrome และ Safari เชื่อถือได้อย่างสมบูรณ์ในระดับระบบโดยทำสิ่งต่อไปนี้:

    # create a root authority cert
    ./create_root_cert_and_key.sh

    # create a wildcard cert for mysite.com
    ./create_certificate_for_domain.sh mysite.com

    # or create a cert for www.mysite.com, no wildcards
    ./create_certificate_for_domain.sh www.mysite.com www.mysite.com

ด้านบนใช้สคริปต์ต่อไปนี้และไฟล์สนับสนุนv3.extเพื่อหลีกเลี่ยงข้อผิดพลาดที่ไม่มีทางเลือกชื่อเรื่อง

หากคุณต้องการสร้างใบรับรองที่ลงนามเองใหม่ซึ่งเชื่อถือได้อย่างเต็มที่โดยใช้สิทธิ์รูทของคุณเองคุณสามารถทำได้โดยใช้สคริปต์เหล่านี้

create_root_cert_and_key.sh

    #!/usr/bin/env bash
    openssl genrsa -out rootCA.key 2048
    openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem

create_certificate_for_domain.sh

    #!/usr/bin/env bash

    if [ -z "$1" ]
    then
      echo "Please supply a subdomain to create a certificate for";
      echo "e.g. www.mysite.com"
      exit;
    fi

    if [ ! -f rootCA.pem ]; then
      echo 'Please run "create_root_cert_and_key.sh" first, and try again!'
      exit;
    fi
    if [ ! -f v3.ext ]; then
      echo 'Please download the "v3.ext" file and try again!'
      exit;
    fi

    # Create a new private key if one doesnt exist, or use the xeisting one if it does
    if [ -f device.key ]; then
      KEY_OPT="-key"
    else
      KEY_OPT="-keyout"
    fi

    DOMAIN=$1
    COMMON_NAME=${2:-*.$1}
    SUBJECT="/C=CA/ST=None/L=NB/O=None/CN=$COMMON_NAME"
    NUM_OF_DAYS=825
    openssl req -new -newkey rsa:2048 -sha256 -nodes $KEY_OPT device.key -subj "$SUBJECT" -out device.csr
    cat v3.ext | sed s/%%DOMAIN%%/"$COMMON_NAME"/g > /tmp/__v3.ext
    openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days $NUM_OF_DAYS -sha256 -extfile /tmp/__v3.ext 

    # move output files to final filenames
    mv device.csr "$DOMAIN.csr"
    cp device.crt "$DOMAIN.crt"

    # remove temp file
    rm -f device.crt;

    echo 
    echo "###########################################################################"
    echo Done! 
    echo "###########################################################################"
    echo "To use these files on your server, simply copy both $DOMAIN.csr and"
    echo "device.key to your webserver, and use like so (if Apache, for example)"
    echo 
    echo "    SSLCertificateFile    /path_to_your_files/$DOMAIN.crt"
    echo "    SSLCertificateKeyFile /path_to_your_files/device.key"

v3.ext

    authorityKeyIdentifier=keyid,issuer
    basicConstraints=CA:FALSE
    keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
    subjectAltName = @alt_names

    [alt_names]
    DNS.1 = %%DOMAIN%%

อีกหนึ่งขั้นตอน - วิธีทำให้ใบรับรองที่ลงชื่อด้วยตนเองเชื่อถือได้อย่างสมบูรณ์ใน Chrome / Safari

ในการอนุญาตให้ใบรับรองที่ลงชื่อด้วยตนเองเชื่อถือได้อย่างเต็มที่ใน Chrome และ Safari คุณต้องนำเข้าหน่วยงานออกใบรับรองใหม่ลงใน Mac ของคุณ โดยทำตามคำแนะนำเหล่านี้หรือคำแนะนำโดยละเอียดเพิ่มเติมเกี่ยวกับกระบวนการทั่วไปนี้ในเว็บไซต์ mitmproxy :

คุณสามารถทำหนึ่งในสองวิธีนี้ที่บรรทัดคำสั่งโดยใช้คำสั่งนี้ซึ่งจะแจ้งให้คุณใส่รหัสผ่าน:

$ sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain rootCA.pem

หรือโดยใช้Keychain Accessแอพ:

  1. เปิดการเข้าถึง Keychain
  2. เลือก "ระบบ" ในรายการ "พวงกุญแจ"
  3. เลือก "ใบรับรอง" ในรายการ "หมวดหมู่"
  4. เลือก "ไฟล์ | นำเข้ารายการ ... "
  5. เรียกดูไฟล์ที่สร้างขึ้นด้านบน "rootCA.pem" เลือกไฟล์แล้วคลิก "เปิด"
  6. เลือกใบรับรองที่นำเข้าใหม่ของคุณในรายการ "ใบรับรอง"
  7. คลิกปุ่ม "i" หรือคลิกขวาที่ใบรับรองของคุณและเลือก "รับข้อมูล"
  8. ขยายตัวเลือก "ความน่าเชื่อถือ"
  9. เปลี่ยน "เมื่อใช้ใบรับรองนี้" เป็น "Always Trust"
  10. ปิดกล่องโต้ตอบและคุณจะได้รับพร้อมท์ให้ใส่รหัสผ่าน
  11. ปิดและเปิดแท็บใด ๆ ที่ใช้โดเมนเป้าหมายของคุณอีกครั้งและมันจะถูกโหลดอย่างปลอดภัย!

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

import_certs_in_current_folder_into_java_keystore.sh

KEYSTORE="$(/usr/libexec/java_home)/jre/lib/security/cacerts";

function running_as_root()
{
  if [ "$EUID" -ne 0 ]
    then echo "NO"
    exit
  fi

  echo "YES"
}

function import_certs_to_java_keystore
{
  for crt in *.crt; do 
    echo prepping $crt 
    keytool -delete -storepass changeit -alias alias__${crt} -keystore $KEYSTORE;
    keytool -import -file $crt -storepass changeit -noprompt --alias alias__${crt} -keystore $KEYSTORE
    echo 
  done
}

if [ "$(running_as_root)" == "YES" ]
then
  import_certs_to_java_keystore
else
  echo "This script needs to be run as root!"
fi

มีข้อผิดพลาด "เปิดคีย์ส่วนตัว rootCA.key" $ ./create_root_cert_and_key.shเมื่อทำงาน macOS 10.12.4 และ OpenSSL 0.9.8zh 14 ม.ค. 2559
โดนัท

1
ทำงาน$ openssl genrsa -out rootCA.key 2048ก่อนที่จะ$ ./create_root_cert_and_key.shแก้ไขข้อผิดพลาด "ข้อผิดพลาดในการเปิดคีย์ส่วนตัว rootCA.key" ที่ฉันพบ
โดนัท

@donut - ขอบคุณสำหรับการชี้ให้เห็นนี้ - ฉันมีเส้นที่ซ้ำดังนั้นผมมั่นใจว่ามันจะทำให้เกิดปัญหาที่คุณเห็น ...
แบรดสนามเด็ก

openssl req -new -newkey rsa:2048 -sha256 -nodes -key device.key -subj "$SUBJECT" -out device.csrให้ฉันเป็นข้อผิดพลาด "ข้อผิดพลาดการเปิดกุญแจส่วนตัว device.key" ผมคิดว่าคำสั่งนี้ก็ควรที่จะสร้างdevice.keyแต่มันดูเหมือนว่าจะพยายามที่จะอ่านมันด้วยเหตุผลบางอย่าง
Lenny

2
คิดออกวิธีการแก้ปัญหา (ในกรณีที่คนอื่นฮิตนี้) คือการเปลี่ยน-keyไป-keyout...openssl req -new -newkey rsa:2048 -sha256 -nodes -keyout device.key -subj "$SUBJECT" -out device.csr
Lenny

90

อัปเดต 11/2017: คำตอบนี้อาจใช้ไม่ได้กับ Chrome เวอร์ชันใหม่กว่าส่วนใหญ่

UPDATE 02/2016: คำแนะนำที่ดีกว่าสำหรับผู้ใช้ Mac สามารถพบที่นี่

  1. บนเว็บไซต์ที่คุณต้องการเพิ่มให้คลิกขวาที่ไอคอนล็อคสีแดงในแถบที่อยู่:ป้อนคำอธิบายรูปภาพที่นี่

    1. คลิกแท็บชื่อการเชื่อมต่อจากนั้นคลิกข้อมูลใบรับรอง

    2. คลิกรายละเอียดแท็บคลิกที่ปุ่มคัดลอกไปยังไฟล์ ... สิ่งนี้จะเปิดตัวช่วยสร้างการส่งออกใบรับรองคลิกถัดไปเพื่อไปที่หน้าจอส่งออกรูปแบบไฟล์

    3. เลือกDER ที่เข้ารหัสไบนารี X.509 (.CER)คลิกถัดไป

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

    5. เปิดการตั้งค่า Chrome เลื่อนไปที่ด้านล่างและคลิกแสดงการตั้งค่าขั้นสูง ...

    6. ภายใต้HTTPS / SSLคลิกจัดการใบรับรอง ...

    7. คลิกที่เชื่อถือได้ที่ใบรับรองแท็บแล้วคลิกนำเข้า ... ปุ่ม สิ่งนี้จะเปิดตัวช่วยสร้างการนำเข้าใบรับรอง คลิกถัดไปเพื่อไปที่หน้าจอนำเข้าไฟล์

    8. คลิกเรียกดู ...และเลือกไฟล์ใบรับรองที่คุณบันทึกไว้ก่อนหน้านี้แล้วคลิกถัดไป

    9. เลือกวางใบรับรองทั้งหมดในร้านค้าดังต่อไปนี้ ร้านค้าที่เลือกควรเป็นผู้ออกใบรับรองหลักที่เชื่อถือได้ หากไม่ใช่ให้คลิกเรียกดู ...และเลือก คลิกถัดไปและเสร็จสิ้น

    10. คลิกใช่ในคำเตือนความปลอดภัย

    11. รีสตาร์ท Chrome


2
@AJeneral ใช่แล้ว Chrome เปลี่ยนไปอีกครั้ง คำแนะนำในบทความนี้ใช้ได้สำหรับฉันเมื่อเร็ว ๆ นี้
kmgdev

2
ตัวเลือกนี้ไม่มีใน Mac Chrome ล่าสุดจนถึงวันที่ความคิดเห็นนี้
y3sh

1
@kgrote, Chrome ไม่มีที่เก็บใบรับรองของตัวเอง สิ่งที่มันทำคือการเพิ่มและลบ Windows หนึ่ง ดังนั้นวิธีที่ดีกว่าคือใช้certmgr.mscเพื่อเพิ่มและลบ certs
Pacerier

1
ขอบคุณสำหรับฉัน ต้องรีสตาร์ท Chrome และที่สำคัญที่สุดใบรับรองของฉันต้องหมดอายุก่อนปี 2560 สิ่งที่ SHA-1
ioanb7

1
เปลี่ยนโครเมี่ยมอีกครั้ง! ตอนนี้ขั้นตอน "ในแถบที่อยู่ให้คลิกการล็อกเล็กน้อยด้วย X ซึ่งจะทำให้หน้าจอข้อมูลขนาดเล็กปรากฏขึ้น" ไม่ทำงาน
Bruno Bronosky

59

หากคุณใช้ macและไม่เห็นแท็บส่งออกหรือวิธีรับใบรับรองสิ่งนี้ใช้ได้สำหรับฉัน:

  1. คลิกที่ล็อคหน้า https: //
  2. ไปที่แท็บ "การเชื่อมต่อ"
  3. คลิก "ข้อมูลใบรับรอง"

    ตอนนี้คุณควรเห็นสิ่งนี้: ข้อมูลที่แตกต่างกันของหลักสูตรและคุณควรได้รับการระบุว่าเชื่อถือได้

  4. ลากไอคอนใบรับรองเล็กน้อยนั้นทำเดสก์ท็อปของคุณ (หรือที่ใดก็ได้)

  5. ดับเบิลคลิกที่ไฟล์. cer ที่ดาวน์โหลดมาซึ่งควรนำเข้ามาใน Keychain และเปิด Keychain Access เข้าสู่รายการใบรับรองของคุณ

    ในบางกรณีนี้เพียงพอและคุณสามารถรีเฟรชหน้าได้แล้ว

    มิฉะนั้น:

  6. คลิกสองครั้งที่ใบรับรองที่เพิ่มใหม่
  7. ภายใต้การเชื่อถือแบบหล่นลงเปลี่ยนตัวเลือก "เมื่อใช้ใบรับรองนี้" เป็น "เชื่อถือได้เสมอ"

ตอนนี้โหลดหน้าเว็บที่เป็นปัญหาอีกครั้งและควรแก้ไขปัญหาได้แล้ว! หวังว่านี่จะช่วยได้


แก้ไขจากWolph

เพื่อให้ง่ายขึ้นเล็กน้อยคุณสามารถใช้สคริปต์ต่อไปนี้ ( แหล่งที่มา ):

  1. บันทึกสคริปต์ต่อไปนี้เป็นwhitelist_ssl_certificate.ssh:

    #!/usr/bin/env bash -e
    
    SERVERNAME=$(echo "$1" | sed -E -e 's/https?:\/\///' -e 's/\/.*//')
    echo "$SERVERNAME"
    
    if [[ "$SERVERNAME" =~ .*\..* ]]; then
        echo "Adding certificate for $SERVERNAME"
        echo -n | openssl s_client -connect $SERVERNAME:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | tee /tmp/$SERVERNAME.cert
        sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" /tmp/$SERVERNAME.cert
    else
        echo "Usage: $0 www.site.name"
        echo "http:// and such will be stripped automatically"
    fi
  2. ทำให้สคริปต์เรียกใช้งาน (จากเชลล์):

    chmod +x whitelist_ssl_certificate.ssh
  3. เรียกใช้สคริปต์สำหรับโดเมนที่คุณต้องการ (เพียงคัดลอก / วางงาน URL แบบเต็ม):

    ./whitelist_ssl_certificate.ssh https://your_website/whatever

1
วิธีนี้ใช้ได้กับฉันใน OS X Mavericks ไม่มีตัวเลือกส่งออกตามที่อธิบายไว้ในคำตอบด้านบน
Kevin Leary

ใช้งานได้ดี การล็อคก่อนที่ https จะยังถูกขีดฆ่า แต่ก็โอเคเพราะไม่มีป๊อปอัปที่น่ารำคาญอีกต่อไป
nalply

สิ่งนี้ใช้ได้กับฉันใน Mac Catalina ขอบคุณ! :)
Saurabh

58

อัปเดต 23 เม.ย. 20

แนะนำโดยทีม Chromium

https://www.chromium.org/Home/chromium-security/deprecating-powerful-features-on-insecure-origins#TOC-Testing-Powerful-Features

Quick Super-Easy Solution

มีวลีบายพาสแบบลับๆที่สามารถพิมพ์ลงในหน้าข้อผิดพลาดเพื่อให้ Chrome ดำเนินการต่อได้แม้จะมีข้อผิดพลาดด้านความปลอดภัย: thisisunsafe (ใน Chrome รุ่นก่อนหน้านี้พิมพ์badideaและแม้แต่ก่อนหน้านี้อันตราย ) DO NOT USE นี้จนกว่าคุณจะเข้าใจว่าทำไมคุณต้องใช้!

ที่มา:

https://chromium.googlesource.com/chromium/src/+/d8fc089b62cd4f8d907acff6fb3f5ff58f168697%5E%21/

(หมายเหตุที่window.atob('dGhpc2lzdW5zYWZl')แก้ไขเป็นthisisunsafe)

เวอร์ชันล่าสุดของแหล่งที่มาคือ @ https://chromium.googlesource.com/chromium/src/+/refs/heads/master/components/security_interstitials/core/browser/resources/interstitial_large.jsและwindow.atobฟังก์ชันสามารถดำเนินการได้ใน คอนโซล JS

สำหรับพื้นหลังเกี่ยวกับสาเหตุที่ทีม Chrome เปลี่ยนวลีบายพาส (ครั้งแรก):

https://bugs.chromium.org/p/chromium/issues/detail?id=581189

ถ้าทุกอย่างล้มเหลว (Solution # 1)

สำหรับการปิดครั้งเดียวอย่างรวดเร็วหากไม่มีตัวเลือก "ดำเนินการต่อไป" และวลีบายพาสไม่ทำงานแฮ็คนี้ใช้งานได้ดี:

  1. อนุญาตข้อผิดพลาดของใบรับรองlocalhostโดยเปิดใช้งานการตั้งค่าสถานะนี้ (หมายเหตุ Chrome ต้องรีสตาร์ทหลังจากเปลี่ยนค่าสถานะ):

    chrome://flags/#allow-insecure-localhost

    (และคำตอบสำหรับการลงคะแนนhttps://stackoverflow.com/a/31900210/430128โดย @Chris)

  2. หากไซต์ที่คุณต้องการเชื่อมต่อนั้นแสดงlocalhostว่าคุณทำเสร็จแล้ว มิฉะนั้นให้ตั้งค่าอุโมงค์ TCP เพื่อฟังพอร์ต 8090 ภายในเครื่องและเชื่อมต่อbroken-remote-site.comกับพอร์ต 443 ตรวจสอบให้แน่ใจว่าคุณได้socatติดตั้งและเรียกใช้สิ่งนี้ในหน้าต่างเทอร์มินัล:

    socat tcp-listen:8090,reuseaddr,fork tcp:broken-remote-site.com:443

  3. ไปที่https: // localhost: 8090ในเบราว์เซอร์ของคุณ

หากสิ่งอื่นล้มเหลว (โซลูชัน # 2)

คล้ายกับ "ถ้าทุกคนอื่นล้มเหลว (โซลูชั่น # 1)" ที่นี่เรากำหนดค่าพร็อกซี่ของเราให้บริการในท้องถิ่นโดยใช้ngrok เนื่องจากคุณสามารถเข้าถึงอุโมงค์ http ngrok ผ่าน TLS (ซึ่งในกรณีนี้จะถูกยกเลิกโดย ngrok พร้อมใบรับรองที่ถูกต้อง) หรือผ่านปลายทางที่ไม่ใช่ TLS เบราว์เซอร์จะไม่บ่นเกี่ยวกับใบรับรองที่ไม่ถูกต้อง

ดาวน์โหลดและติดตั้ง ngrok แล้วเปิดเผยผ่านngrok.io:

ngrok http https://localhost

ngrok จะเริ่มต้นขึ้นและแจ้งชื่อโฮสต์ที่คุณสามารถเชื่อมต่อได้และคำขอทั้งหมดจะถูกส่งกลับไปยังเครื่องของคุณ


10
ตามที่ระบุไว้ในquora.com/… , ตัวเลือกอื่นคือคลิกที่ใดก็ได้บนหน้านี้และเขียน "badidea"
smihael

ใครก็ตามที่พยายามใช้ localhost กับ https สำหรับพนักงานบริการจุดแรกของIf-all-
Fail

สิ่งนี้จะยังถือว่าใบรับรองไม่ถูกต้องและทำให้รหัสผ่านจัดการปฏิเสธที่จะทำงาน
Ray Foss

34

สำหรับสภาพแวดล้อมการทดสอบ

คุณสามารถใช้--ignore-certificate-errorsเป็นพารามิเตอร์บรรทัดคำสั่งเมื่อเปิดใช้งาน chrome (ทำงานกับรุ่น 28.0.1500.52 บน Ubuntu)

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

ฉันกำหนดค่า Intellij เพื่อเปิดใช้งาน Chrome ด้วยวิธีนี้เมื่อทำการดีบักเนื่องจากเซิร์ฟเวอร์ทดสอบไม่มีใบรับรองที่ถูกต้อง

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


5
มันใช้งานได้สำหรับฉันใน Windows 8! ฉันคลิกขวาที่ปุ่มทางลัดของ Chrome> คุณสมบัติ> เปลี่ยนฟิลด์ 'เป้าหมาย' เช่นนี้ (โปรดทราบว่าควรเพิ่ม '--ignore-certificate-errors' หลังจากอ้างคำพูดและมีช่องว่าง): "C: \ Program Files (x86) \ Google \ Chrome \ Application \ chrome.exe "--ignore-certificate-errors
mikhail-t

1
นี่ไม่ได้ตอบคำถามและมันอันตราย คำถามคือทำอย่างไรให้ Chrome เชื่อถือใบรับรองเซิร์ฟเวอร์ที่ลงชื่อด้วยตนเอง ไม่ใช่วิธีเพิกเฉยต่อคำเตือนและข้อผิดพลาด
jww

1
นี่เป็นทางออกเดียวที่ทำงานกับฉันบน Chrome (63.0.3239.108) กับ Windows 7 (64 บิต) เกี่ยวกับความปลอดภัยฉันสร้างไอคอนพิเศษบนเดสก์ท็อปซึ่งฉันจะเปิดเมื่อพัฒนาบนเครื่องเสมือน การนำเข้าใบรับรองภายในเครื่องที่ลงนามเองการปรับแต่ง chrome: // flags & HSTS โดเมนไม่ได้ช่วยอะไร Chrome ควรเก็บปุ่มดีเก่าไว้อย่างแน่นอน "เพิ่มข้อยกเว้นด้านความปลอดภัย" - ช่วยให้ฉันลำบากกับการตั้งค่าไร้ประโยชน์ 2 ชั่วโมง
lubosdz

บทช่วยสอนนี้ใช้งานได้อย่างมีเสน่ห์! youtube.com/watch?v=qoS4bLmstlk
Jonathan Martins

20

ดังที่มีคนสังเกตเห็นคุณต้องรีสตาร์ท Chrome ทั้งหมดไม่ใช่แค่เพียงหน้าต่างเบราว์เซอร์ วิธีที่เร็วที่สุดในการทำเช่นนี้คือเปิดแท็บไปที่ ...

chrome://restart


เฮ้! แค่อยากจะชี้ให้เห็นว่านี่คือสิ่งที่แก้ไขได้สำหรับฉัน ฉันกำลังเพิ่ม CA ที่กำหนดเองไปยังที่เก็บความเชื่อถือมันได้ผลสำหรับฉันเสมอ ฉันลอง Firefox และทำงานได้อย่างไร้ที่ติ แต่ไม่ใช่โครเมี่ยม ในตอนท้ายมันเป็นเพราะดูเหมือนว่าคุณจะต้องรีสตาร์ท Chrome อย่างเต็มที่ตามที่คุณพูดถึง อาจเป็นไปได้ว่า Chrome ยังคงใช้ Trust store เดิมตราบใดที่กระบวนการพื้นหลังยังทำงานอยู่
Jose Cifuentes

19

WINDOWS JUN / 2017 Windows Server 2012

ฉันได้ติดตาม @Brad Parks คำตอบ บน Windows คุณควรนำเข้า rootCA.pem ในที่เก็บใบรับรองหลักที่เชื่อถือได้

ฉันทำตามขั้นตอนต่อไปนี้:

openssl genrsa -out rootCA.key 4096
openssl req -x509 -new -nodes -key rootCA.key -newkey rsa:4096 -sha256 -days 1024 -out rootCA.pem
openssl req -new -newkey rsa:4096 -sha256 -nodes -keyout device.key -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 2000 -sha256 -extfile v3.ext

โดยที่ v3.ext คือ:

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost
IP.1 = 192.168.0.2
IP.2 = 127.0.0.1

จากนั้นในกรณีของฉันฉันมีเว็บแอพด้วยตัวเองดังนั้นฉันต้องผูกใบรับรองด้วยที่อยู่ IP และพอร์ตใบรับรองควรอยู่ในร้านของฉันพร้อมข้อมูลส่วนตัวที่สำคัญดังนั้นฉันส่งออกไปยังรูปแบบ pfx

openssl pkcs12 -export -out device.pfx -inkey device.key -in device.crt

ด้วยคอนโซล mmc (ไฟล์ / เพิ่มหรือลบสแน็ปอิน / ใบรับรอง / เพิ่ม / บัญชีคอมพิวเตอร์ / LocalComputer / OK) ฉันนำเข้าไฟล์ pfx ในร้านค้าส่วนบุคคล

ต่อมาฉันใช้คำสั่งนี้เพื่อผูกใบรับรอง (คุณสามารถใช้เครื่องมือ HttpConfig):

netsh http add sslcert ipport=0.0.0.0:12345 certhash=b02de34cfe609bf14efd5c2b9be72a6cb6d6fe54 appid={BAD76723-BF4D-497F-A8FE-F0E28D3052F4}

certhash = เอกสารรับรอง

appid = GUID (ตัวเลือกของคุณ)

ก่อนอื่นฉันพยายามนำเข้าใบรับรอง "device.crt" บนผู้ให้สิทธิ์ใบรับรองรูทที่เชื่อถือได้ในวิธีต่างๆ แต่ฉันยังคงได้รับข้อผิดพลาดเดิม:

ป้อนคำอธิบายรูปภาพที่นี่

แต่ฉันรู้ว่าฉันควรนำเข้าใบรับรองของผู้มีสิทธิ์ออกใบรับรองไม่ใช่ใบรับรองสำหรับโดเมน ดังนั้นฉันจึงใช้คอนโซล mmc (ไฟล์ / เพิ่มหรือลบสแน็ปอิน / ใบรับรอง / เพิ่ม / บัญชีคอมพิวเตอร์ / LocalComputer / OK) ฉันนำเข้า rootCA.pem ในที่เก็บใบรับรองใบรับรองที่เชื่อถือได้

ป้อนคำอธิบายรูปภาพที่นี่

รีสตาร์ท Chrome แล้วเริ่มทำงาน

ด้วย localhost:

ป้อนคำอธิบายรูปภาพที่นี่

หรือด้วยที่อยู่ IP:

ป้อนคำอธิบายรูปภาพที่นี่

สิ่งเดียวที่ฉันไม่สามารถทำได้คือมันมีรหัสล้าสมัย (รูปสี่เหลี่ยมสีแดงในภาพ) ความช่วยเหลือได้รับการชื่นชมในจุดนี้

ด้วย makecert ทำให้ไม่สามารถเพิ่มข้อมูล SAN ได้ ด้วย New-SelfSignedCertificate (Powershell) คุณสามารถเพิ่มข้อมูล SAN ได้อีกด้วย


2
สำคัญ: รัน OpenSSL ในฐานะผู้ดูแลระบบ
Jose A

นี่เป็นคำตอบที่ดีที่สุดและยังใช้งานได้กับ Chrome [71.0.3578.98] ตั้งแต่วันที่ Jan-2019
ShadeBlack

ว้าวทำงานได้ดีขอบคุณมาก (ใน Chrome 75 - กรกฎาคม 2019) คุณไม่จำเป็นต้องทำตามnetsh httpขั้นตอนนี้จนกว่าคุณจะใช้เซิร์ฟเวอร์ Windows นอกจากนี้ฉันไม่คิดว่าจำเป็นต้องส่งออกไฟล์ใบรับรองไปยัง pfx

ยืนยันการทำงาน: Chrome 81 - พฤษภาคม 2020 - Windows 7
petrosmm

15
  1. เพิ่มใบรับรอง CA ในรูต CA ที่เชื่อถือได้

  2. ไปที่ chrome และเปิดใช้งานการตั้งค่าสถานะนี้!

chrome://flags/#allow-insecure-localhost

สุดท้ายให้ใช้โดเมน * .me หรือโดเมนที่ถูกต้องเช่น * .com และ * .net และบำรุงรักษาไว้ในไฟล์โฮสต์ สำหรับ devs ในเครื่องของฉันฉันใช้ * .me หรือ * .com กับไฟล์โฮสต์ที่ดูแลดังนี้

  1. เพิ่มไปยังโฮสต์ C: / Windows / system32 / ไดรเวอร์ / etc / hosts

    127.0.0.1 nextwebapp.me

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


นี่ดูเหมือนจะเป็นเช่นเดียวกับคำตอบที่ได้รับคะแนนสูงสุด
Michael - ที่ไหน Shirky Clay

ฉันเพิ่งเพิ่มชื่อโดเมนที่ได้รับอนุญาตในการพัฒนาท้องถิ่นเช่น * .me sites ไปยังไฟล์โฮสต์ใน Windows ผู้คนเพิ่มใบรับรอง แต่บางครั้งโฮสต์ก็ล้มเหลวในการตรวจสอบความถูกต้องของ SSL แม้ว่าจะติดตั้งใบรับรองอย่างถูกต้องก็ตาม ในกรณีนี้เราสร้างเซสชันใหม่ ฉันเพิ่งเพิ่มเคล็ดลับเหล่านั้น ฉันผ่านหลุมกระต่ายนี้ลึกเกินไปแล้วฉันต้องการให้แน่ใจว่ามีคนรู้ว่าต้องทำอย่างไรถ้าจำเป็น
Ariel

14

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

Chrome ไม่มีที่เก็บใบรับรองและใช้ Window เป็นของตัวเอง อย่างไรก็ตาม Chrome ไม่มีวิธีนำเข้า certs ในร้านค้าดังนั้นคุณควรเพิ่มผ่านทาง IE แทน

การติดตั้งใบรับรองใน Google Chrome

การติดตั้งใบรับรองใน Internet Explorer

ลองดูที่นี่เพื่อดูวิธีการต่าง ๆ ในการสร้าง certs แบบลงชื่อด้วยตนเอง (ฉันสมมติว่าคุณใช้ IIS ตามที่คุณไม่ได้กล่าวถึง)

วิธีการสร้างใบรับรองที่ลงชื่อด้วยตนเองใน IIS 7


ไซต์ที่เป็นปัญหาคือlocalhostและ CN ของใบรับรองคือ "localhost" ใช่ฉันติดตั้งใบรับรองในที่เก็บใบรับรองของ Windows ทั้ง IE และ Chrome บ่นเกี่ยวกับใบรับรอง
pjohansson

ไม่แน่ใจว่าคุณใช้ IIS หรือ Apache แต่ตรวจสอบลิงค์พิเศษที่ฉันเพิ่งเพิ่มในการสร้าง certs ที่ลงชื่อด้วยตนเองสำหรับ IIS
Ira Rainey

เนื่องจากความพิถีพิถันอย่างไม่น่าเชื่อเกี่ยวกับการตรวจสอบความถูกต้องของชื่อโดเมนในส่วนใบรับรอง : มีใครรู้เรื่องนี้บ้างไหม ฉันมีปัญหา (เป็น 2019) บน Android 9 ที่มีใบรับรองรูทซึ่ง Google Chrome ถูกกล่าวหาว่าไม่ปลอดภัย ไม่เป็นไรสำหรับ FF และบนเดสก์ท็อป
BairDev

7

ฉันลงกระบวนการที่ใช้สิ่งที่ bjnord แนะนำซึ่งก็คือ: Google Chrome, Mac OS X และใบรับรอง SSL ที่ลงชื่อด้วยตนเอง

สิ่งที่แสดงในบล็อกไม่ทำงาน

อย่างไรก็ตามหนึ่งในความคิดเห็นต่อบล็อกคือทองคำ:

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain site.crt

คุณจะต้องติดตามบล็อกเกี่ยวกับวิธีรับไฟล์ใบรับรองหลังจากนั้นคุณสามารถใช้คำสั่งด้านบนและควรดำเนินการต่อไป


7

GUI สำหรับการจัดการใบรับรอง SSL บน Chromium บน Linux ทำงานไม่ถูกต้องสำหรับฉัน อย่างไรก็ตามเอกสารของพวกเขาให้คำตอบที่ถูกต้อง เคล็ดลับคือการเรียกใช้คำสั่งด้านล่างที่นำเข้าใบรับรอง SSL ที่ลงชื่อด้วยตนเอง เพียงอัปเดตชื่อของ<certificate-nickname>และcertificate-filename.cerจากนั้นรีสตาร์ท Chromium / chrome

จากเอกสาร:

บน Linux Chromium ใช้ฐานข้อมูลที่แชร์ของ NSS หากตัวจัดการภายในไม่ทำงานสำหรับคุณคุณสามารถกำหนดค่าใบรับรองด้วยเครื่องมือบรรทัดคำสั่ง NSS

รับเครื่องมือ

  • Debian / Ubuntu: sudo apt-get install libnss3-tools

  • Fedora: su -c "yum install nss-tools"

  • Gentoo: su -c "echo 'dev-libs/nss utils' >> /etc/portage/package.use && emerge dev-libs/nss"(คุณต้องเปิดคำสั่งทั้งหมดด้านล่างด้วยnssคำนำหน้าเช่น, nsscertutil.) Opensuse:sudo zypper install mozilla-nss-tools

หากต้องการเชื่อถือใบรับรองเซิร์ฟเวอร์ที่ลงชื่อด้วยตนเองเราควรใช้

certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n <certificate-nickname> -i certificate-filename.cer

แสดงรายการใบรับรองทั้งหมด

certutil -d sql:$HOME/.pki/nssdb -L

TRUSTARGS เป็นสตริงสามตัวของศูนย์หรือมากกว่าตัวอักษรโดยคั่นด้วยเครื่องหมายจุลภาค พวกเขากำหนดวิธีที่ใบรับรองควรเชื่อถือได้สำหรับ SSL, อีเมลและการลงนามวัตถุและอธิบายไว้ในเอกสารรับรองหรือโพสต์บล็อกของ Meena เกี่ยวกับการตั้งค่าสถานะความน่าเชื่อถือ

เพิ่มใบรับรองส่วนบุคคลและคีย์ส่วนตัวสำหรับการตรวจสอบสิทธิ์ไคลเอนต์ SSL ใช้คำสั่ง:

pk12util -d sql:$HOME/.pki/nssdb -i PKCS12_file.p12

เพื่อนำเข้าใบรับรองส่วนบุคคลและคีย์ส่วนตัวที่เก็บไว้ในไฟล์ PKCS # 12 TRUSTARGS ของใบรับรองส่วนบุคคลจะถูกตั้งค่าเป็น“ u, u, u”

ลบใบรับรอง certutil -d sql:$HOME/.pki/nssdb -D -n <certificate nickname>

คัดลอกมาจาก: https://chromium.googlesource.com/chromium/src/+/HEAD/docs/linux_cert_management.md


7

Filippo Valsorda เขียนเครื่องมือข้ามแพลตฟอร์มmkcertเพื่อทำสิ่งนี้กับร้านค้าที่น่าเชื่อถือจำนวนมาก ฉันคิดว่าเขาเขียนด้วยเหตุผลเดียวกันกับที่มีคำตอบมากมายสำหรับคำถามนี้: มันเป็นความเจ็บปวดที่จะทำสิ่งที่ "ถูกต้อง" สำหรับใบรับรอง SubjectAltName ที่ลงชื่อโดย CA รูทที่เชื่อถือได้

mkcert รวมอยู่ในระบบการจัดการแพ็คเกจที่สำคัญสำหรับ Windows, macOS และ Linux หลายรสชาติ

mkcert

mkcertเป็นเครื่องมืออย่างง่ายสำหรับการทำใบรับรองการพัฒนาที่เชื่อถือได้ในพื้นที่ มันไม่จำเป็นต้องมีการกำหนดค่า

$ mkcert -install
Created a new local CA at "/Users/filippo/Library/Application Support/mkcert" 💥
The local CA is now installed in the system trust store! ⚡️
The local CA is now installed in the Firefox trust store (requires browser restart)! 🦊

$ mkcert example.com "*.example.com" example.test localhost 127.0.0.1 ::1
Using the local CA at "/Users/filippo/Library/Application Support/mkcert" ✨

Created a new certificate valid for the following names 📜
 - "example.com"
 - "*.example.com"
 - "example.test"
 - "localhost"
 - "127.0.0.1"
 - "::1"

The certificate is at "./example.com+5.pem" and the key at "./example.com+5-key.pem" ✅

6

เมื่อคลิกไอคอนล็อคเครื่องหมายขีดคั่นเล็ก ๆ ถัดจาก URL คุณจะเห็นกล่องดังนี้:

ป้อนคำอธิบายรูปภาพที่นี่

หลังจากคลิกลิงก์ข้อมูลใบรับรองคุณจะเห็นกล่องโต้ตอบต่อไปนี้:

ป้อนคำอธิบายรูปภาพที่นี่

มันบอกคุณว่าที่เก็บใบรับรองใดที่ถูกต้องเป็นที่เก็บใบรับรองผู้ออกใบรับรองที่เชื่อถือได้

คุณสามารถใช้วิธีใดวิธีหนึ่งที่ระบุไว้ในคำตอบอื่น ๆ เพื่อเพิ่มใบรับรองในร้านค้าหรือใช้:

certutil -addstore -user "ROOT" cert.pem
  • ROOT เป็นชื่อภายในของที่เก็บใบรับรองที่กล่าวถึงก่อนหน้านี้
  • cert.pem เป็นชื่อของใบรับรองที่ลงนามเอง

1
certutil -addstore -user "ROOT" cert.pemWindows คืออะไร
Pacerier

1
@Pacerier: ถูกต้องมันมีไว้สำหรับ Windows
Der Hochstapler

คุณมีTrusted Root Certification Authoritiesแต่ยังคงมีปัญหาอยู่: imgur.com/a/mjlglVz imgur.com/a/n8BFH5S Windows 10, chrome 78
พยายามอย่างหนัก

6

สิ่งนี้ใช้ได้สำหรับฉัน ดู: http://www.robpeck.com/2010/10/google-chrome-mac-os-x-and-self-signed-ssl-certificates/#.Vcy8_ZNVhBc

ในแถบที่อยู่ให้คลิกล็อคเล็กน้อยด้วย X ซึ่งจะแสดงหน้าจอข้อมูลขนาดเล็ก คลิกปุ่มที่ระบุว่า "ข้อมูลใบรับรอง"

คลิกและลากรูปภาพไปยังเดสก์ท็อปของคุณ ดูเหมือนใบรับรองเล็กน้อย

คลิกสองครั้ง สิ่งนี้จะนำยูทิลิตี้ Keychain Access ขึ้นมา ป้อนรหัสผ่านของคุณเพื่อปลดล็อค

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

หลังจากเพิ่มแล้วให้ดับเบิลคลิก คุณอาจต้องตรวจสอบอีกครั้ง

ขยายส่วน "ความน่าเชื่อถือ"

"เมื่อใช้ใบรับรองนี้" ตั้งค่าเป็น "เชื่อถือเสมอ"


6

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

(ขออภัยเป็นภาษาเยอรมัน แต่เพียงติดตามภาพ)

ป้อนคำอธิบายรูปภาพที่นี่


6
mkdir CA
openssl genrsa -aes256 -out CA/rootCA.key 4096
openssl req -x509 -new -nodes -key CA/rootCA.key -sha256 -days 1024 -out CA/rootCA.crt

openssl req -new -nodes -keyout example.com.key -out domain.csr -days 3650 -subj "/C=US/L=Some/O=Acme, Inc./CN=example.com"
openssl x509 -req -days 3650 -sha256 -in domain.csr -CA CA/rootCA.crt -CAkey CA/rootCA.key -CAcreateserial -out example.com.crt -extensions v3_ca -extfile <(
cat <<-EOF
[ v3_ca ]
subjectAltName = DNS:example.com
EOF
)

1
นี่เป็นสิ่งเดียวที่ทำงานกับฉันสำหรับโครเมี่ยม 77 ขอบคุณสำหรับการบันทึกวันของฉัน
Romain

เราจะใช้ไฟล์ที่สร้างขึ้นได้อย่างไร ฉันเข้าใจวิธีใช้ไฟล์. crt และ. key แต่ไฟล์. csr ใช้ทำอะไร และฉันจะใช้ไฟล์ rootCA. * ได้อย่างไร โปรดขยายคำตอบของคุณ ...
Chiwda

ขอบคุณมากคุณเพิ่งบันทึกวันของฉัน!
dodancs

6

โพสต์นี้เต็มไปด้วยคำตอบแล้ว แต่ฉันสร้างสคริปต์ทุบตีตามคำตอบอื่น ๆ เพื่อให้ง่ายต่อการสร้างใบรับรอง TLS ที่ลงชื่อด้วยตนเองที่ถูกต้องใน Chrome (ทดสอบแล้วChrome 65.x) หวังว่ามันจะเป็นประโยชน์กับคนอื่น ๆ

สคริปต์ทุบตีที่ลงชื่อด้วยตนเอง

หลังจากที่คุณติดตั้ง ( และเชื่อถือได้ ) ใบรับรองอย่าลืมรีสตาร์ท Chrome ( chrome://restart)


เครื่องมืออื่นที่ควรค่าแก่การตรวจสอบคือcfsslชุดเครื่องมือของ CloudFlare :

cfssl


6

หากต้องการสร้างใบรับรองที่ลงชื่อด้วยตนเองใน Windows ที่ Chrome v58 และใหม่กว่าจะเชื่อถือได้ให้เปิด Powershell ด้วยสิทธิ์ระดับสูงและประเภท:

New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -Subject "fruity.local" -DnsName "fruity.local", "*.fruity.local" -FriendlyName "FruityCert" -NotAfter (Get-Date).AddYears(10)
#notes: 
#    -subject "*.fruity.local" = Sets the string subject name to the wildcard *.fruity.local
#    -DnsName "fruity.local", "*.fruity.local"
#         ^ Sets the subject alternative name to fruity.local, *.fruity.local. (Required by Chrome v58 and later)
#    -NotAfter (Get-Date).AddYears(10) = make the certificate last 10 years. Note: only works from Windows Server 2016 / Windows 10 onwards!!

เมื่อคุณทำเช่นนี้ใบรับรองที่จะได้รับการบันทึกไว้ในใบรับรองภายในเครื่องคอมพิวเตอร์ภายใต้ส่วนบุคคล \ ใบรับรองร้านค้า

คุณต้องการคัดลอกใบรับรองนี้ไปยังร้านค้าผู้ออกใบรับรองหลักที่เชื่อถือได้

วิธีหนึ่งที่จะทำเช่นนี้: คลิกปุ่มเริ่มต้นของ Windows certlm.mscและชนิด จากนั้นลากและวางใบรับรองที่สร้างขึ้นใหม่ไปยังที่เก็บใบรับรองผู้เชื่อถือใบรับรองหลักที่เชื่อถือได้สำหรับภาพหน้าจอด้านล่าง ป้อนคำอธิบายรูปภาพที่นี่


โปรดทำเช่นนี้ใน mac ได้อย่างไร ขอบคุณ :)
Artanis Zeratul

@mpowrie เมื่อสร้างสิ่งนี้แล้วฉันจะเชื่อมโยงเว็บเซิร์ฟเวอร์ Apache ได้อย่างไร บนเซิร์ฟเวอร์ localhost
Ifedi Okonkwo

Ifedi Okonkwo: ฉันไม่แน่ใจกับ Apache webserver ขออภัยด้วย IIS คุณเพิ่มการเชื่อมโยงไซต์ประเภท https รวมชื่อโฮสต์แบบเต็มและเลือกใบรับรอง SSL
mpowrie

งานนี้มีเสน่ห์เหมือนกัน ฉันจะบอกว่าคุณจะต้องทำหนึ่งขั้นตอนเพิ่มเติมหากคุณต้องการมอบหมายใบรับรองนั้นให้เป็นข้อผูกมัด ... และใบรับรองนั้นต้องอยู่ในส่วนบุคคล> ใบรับรองด้วย การลากและวางด้วยเหตุผลบางประการจริงลบออกจาก certs ส่วนบุคคลและวางไว้ใน Certs ที่เชื่อถือได้ ดังนั้นให้แน่ใจว่าคุณคัดลอกและวาง
StephenPAdams

5

SSL / HTTPS localhost fix บน mac / osx:

  1. คลิกล็อกสีแดงพร้อมกากบาทในแถบที่อยู่ของคุณเมื่อพยายามเปิดสภาพแวดล้อม https localhost ของคุณ จะมีหน้าต่างเปิดขึ้นพร้อมข้อมูลเกี่ยวกับใบรับรอง

  2. คลิกที่หน้าต่างข้อมูล "รายละเอียด"

  3. เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ Chrome จะเปิดขึ้นในแท็บ 'ความปลอดภัย' คลิกที่ดูรับรอง อิมเมจใบรับรอง
  4. เพิ่มลงในพวงกุญแจ 'ระบบ' ของคุณ (ไม่ใช่พวงกุญแจ 'เข้าสู่ระบบ' ซึ่งถูกเลือกไว้ตามค่าเริ่มต้น)

  5. เปิดพวงกุญแจของคุณ (อีกครั้ง) และค้นหาใบรับรอง คลิกที่มันและให้แน่ใจว่าคุณ "เชื่อถือ" ทั้งหมด

  6. รีสตาร์ท Chrome และควรใช้งานได้


อินเตอร์เฟซแบบกราฟิกโง่อาจไม่ยอมรับใบรับรองใน MacoOS 10.14.5 security import filename.pem -k ~/Library/Keychains/login.keychainแต่คุณสามารถนำเข้าด้วย กราฟิกแสดงข้อผิดพลาด -25294
boatcoder

5

ฉันกำลังประสบปัญหาเดียวกัน: ผมได้ติดตั้งใบรับรองใช้ Windows' เก็บของ Trusted Root เจ้าหน้าที่และ Chrome ERR_CERT_COMMON_NAME_INVALIDยังคงปฏิเสธที่ใบรับรองที่มีข้อผิดพลาด ERR_CERT_AUTHORITY_INVALIDโปรดทราบว่าเมื่อใบรับรองไม่ได้ติดตั้งอย่างถูกต้องในการจัดเก็บข้อผิดพลาด

ตามที่ระบุในข้อผิดพลาดความคิดเห็นนี้และคำถามนี้ปัญหาอยู่ที่ชื่อโดเมนที่ประกาศในใบรับรอง เมื่อได้รับแจ้งสำหรับ "ชื่อสามัญ" ในขณะที่สร้างใบรับรองฉันต้องป้อนชื่อโดเมนที่ฉันใช้เพื่อเข้าถึงเว็บไซต์ ( localhostในกรณีของฉัน) ฉันรีสตาร์ท Chrome โดยใช้chrome://restartและในที่สุดก็มีความสุขกับใบรับรองใหม่นี้


ฉันใช้ localhost ด้วย แต่ chrome ไม่พอใจกับมันimgur.com/a/mjlglVz Windows 10, Chrome 78 ฉันทำตามคำแนะนำจากที่นี่: stackoverflow.com/a/44398368/4983983ฉันเข้าถึงหน้าเว็บผ่านlocalhost
พยายามอย่างหนัก

ใช้ชื่อสามัญ "localhost" เกือบจะทำงานแล้วในที่สุดมันก็ใช้งานได้เมื่อฉันเปิดตัว Chrome ด้วยตัวเลือก--allow-insecure-localhost
pestophagous

5

ตั้งแต่ Chrome 58+ ฉันเริ่มได้รับข้อผิดพลาดของใบรับรองในmacOSเนื่องจาก SAN หายไป นี่คือวิธีรับแถบสีเขียวบนแถบที่อยู่อีกครั้ง

  1. สร้างใบรับรองใหม่ด้วยคำสั่งต่อไปนี้:

    openssl req \
      -newkey rsa:2048 \
      -x509 \
      -nodes \
      -keyout server.key \
      -new \
      -out server.crt \
      -subj /CN=*.domain.dev \
      -reqexts SAN \
      -extensions SAN \
      -config <(cat /System/Library/OpenSSL/openssl.cnf \
          <(printf '[SAN]\nsubjectAltName=DNS:*.domain.dev')) \
      -sha256 \
      -days 720
  2. นำserver.crtเข้าคีย์เชนของคุณจากนั้นดับเบิลคลิกที่ใบรับรองขยายTrustและเลือกTrust ที่เชื่อถือได้

รีเฟรชหน้าhttps://domain.devใน Google Chrome ดังนั้นล็อกสีเขียวจึงกลับมา


สิ่งนี้ใช้ได้กับโดเมนย่อยapi.domain.devแต่ฉันยังมีหน้าคำเตือนในdomain.dev: มีThis server could not prove that it is domain.dev; its security certificate is from *.domain.dev. This may be caused by a misconfiguration or an attacker intercepting your connection.แนวคิดอะไรบ้าง
François Romain

5

สำหรับ Chrome บน MacOS หากคุณเตรียมใบรับรอง:

  • ออกจาก Chrome ( cmd+ Q)
  • เริ่มต้นแอป Keychain Access และเปิดหมวดหมู่ "ใบรับรอง"
  • ลากไฟล์ใบรับรองของคุณไปที่หน้าต่าง Keychain Access และพิมพ์รหัสผ่านสำหรับไฟล์ใบรับรอง
  • ดับเบิลคลิกที่ใบรับรองของคุณและเปิดรายการ "ความน่าเชื่อถือ"
    • ในแถว "เมื่อใช้ใบรับรองนี้" เลือก "เชื่อถือเสมอ"
    • ปิดสิ่งนี้และพิมพ์รหัสผ่านของคุณ
  • เริ่ม Chrome และล้างแคชทั้งหมด
  • ตรวจสอบว่าทุกอย่างโอเค

5

การอนุญาตให้ localhost ที่ไม่ปลอดภัยทำงานได้ดีผ่านวิธีนี้ chrome: // flags / # allow-insecure-localhost

เพียงแค่คุณต้องสร้างชื่อโฮสต์การพัฒนาของคุณเพื่อ xxx.localhost

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