ฉันจะทำให้ Pidgin ยอมรับใบรับรองที่หมดอายุได้อย่างไร


8

งานของฉันใช้เซิร์ฟเวอร์ XMPP ในพื้นที่ (Wildfire เรียกว่าOpenfire ) เมื่อใช้ไคลเอ็นต์ Pidgin จะถามฉันเสมอว่าควรยอมรับใบรับรองที่ไม่ถูกต้อง (หมดอายุ) หรือไม่

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

ฉันต้องการให้พิดจิ้นยอมรับเสมอโดยไม่ต้องถามฉัน ฉันจะทำสิ่งนี้โดยไม่ติดตั้งใบรับรองใหม่บนเซิร์ฟเวอร์ XMPP ได้อย่างไร

ฉันพยายามนำเข้าใบรับรองไปยังที่เก็บส่วนตัวของฉันและที่เก็บที่เชื่อถือได้ แต่ฉันยังคงได้รับพรอมต์เดียวกัน ใบรับรองยังถูกเก็บไว้ใน%APPDATA%\.purple\certificates\x509\tls_peersแต่ฉันยังคงได้รับพรอมต์

นี่คือบันทึกการดีบักเมื่อเชื่อมต่อ:

Pidgin Debug Log : 10/4/2016 12:05:16 PM
(12:05:05) account: Connecting to account example@192.168.1.21/.
(12:05:05) connection: Connecting. gc = 04528D78
(12:05:05) dnssrv: querying SRV record for 192.168.1.21: _xmpp-client._tcp.192.168.1.21
(12:05:05) dnssrv: Couldn't look up SRV record. The filename, directory name, or volume label syntax is incorrect. (123).
(12:05:05) dnsquery: Performing DNS lookup for 192.168.1.21
(12:05:05) dnsquery: IP resolved for 192.168.1.21
(12:05:05) proxy: Attempting connection to 192.168.1.21
(12:05:05) proxy: Connecting to 192.168.1.21:5222 with no proxy
(12:05:05) proxy: Connection in progress
(12:05:05) proxy: Connecting to 192.168.1.21:5222.
(12:05:05) proxy: Connected to 192.168.1.21:5222.
(12:05:05) jabber: Sending (example@192.168.1.21): <?xml version='1.0' ?>
(12:05:05) jabber: Sending (example@192.168.1.21): <stream:stream to='192.168.1.21' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0'>
(12:05:05) jabber: Recv (579): <?xml version='1.0' encoding='UTF-8'?><stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" from="192.168.1.21" id="da08260e" xml:lang="en" version="1.0"><stream:features><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"></starttls><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism><mechanism>CRAM-MD5</mechanism><mechanism>DIGEST-MD5</mechanism><mechanism>ANONYMOUS</mechanism></mechanisms><auth xmlns="http://jabber.org/features/iq-auth"/><register xmlns="http://jabber.org/features/iq-register"/></stream:features>
(12:05:05) jabber: Sending (example@192.168.1.21): <starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>
(12:05:05) jabber: Recv (50): <proceed xmlns="urn:ietf:params:xml:ns:xmpp-tls"/>
(12:05:05) nss: SSL version 3.1 using 128-bit AES with 160-bit SHA1 MAC
Server Auth: 2048-bit RSA, Key Exchange: 1024-bit DHE, Compression: NULL
Cipher Suite Name: TLS_DHE_RSA_WITH_AES_128_CBC_SHA
(12:05:05) nss: subject=CN=Unknown,OU=Unknown,O=REDACTED,L=REDACTED,ST=REDACTED,C=US issuer=CN=Unknown,OU=Unknown,O=REDACTED,L=REDACTED,ST=REDACTED,C=US
(12:05:05) certificate/x509/tls_cached: Starting verify for 192.168.1.21
(12:05:05) certificate/x509/tls_cached: Certificate 192.168.1.21 expired at Mon Aug 29 09:54:35 2016

(12:05:05) certificate/x509/tls_cached: Checking for cached cert...
(12:05:05) certificate/x509/tls_cached: ...Found cached cert
(12:05:05) nss/x509: Loading certificate from C:\Users\example\AppData\Roaming\.purple\certificates\x509\tls_peers\192.168.1.21
(12:05:05) certificate/x509/tls_cached: Peer cert matched cached
(12:05:07) util: Writing file accounts.xml to directory C:\Users\example\AppData\Roaming\.purple
(12:05:07) util: Writing file C:\Users\example\AppData\Roaming\.purple\accounts.xml
(12:05:07) util: Writing file blist.xml to directory C:\Users\example\AppData\Roaming\.purple
(12:05:07) util: Writing file C:\Users\example\AppData\Roaming\.purple\blist.xml
(12:05:07) certificate/x509/tls_cached: User ACCEPTED cert
Caching first in chain for future use as 192.168.1.21...
(12:05:07) nss/x509: Exporting certificate to C:\Users\example\AppData\Roaming\.purple\certificates\x509\tls_peers\192.168.1.21
(12:05:07) util: Writing file C:\Users\example\AppData\Roaming\.purple\certificates\x509\tls_peers\192.168.1.21
(12:05:07) nss: Trusting CN=Unknown,OU=Unknown,O=REDACTED,L=REDACTED,ST=REDACTED,C=US
(12:05:07) certificate: Successfully verified certificate for 192.168.1.21

คุณลองดูใบรับรองและติดตั้งลงในที่เก็บใบรับรอง Windows หรือไม่
Evan Darwin

ใช่ แต่พิดจินแสดงข้อความผิดพลาดเดียวกัน

2
เปิดDebug Window(วิธีใช้ -> หน้าต่างดีบัก) เชื่อมต่อกับเซิร์ฟเวอร์และเลือกAcceptในกล่องโต้ตอบใบรับรอง อาจมีข้อความที่เกี่ยวข้องกับใบรับรองในหน้าต่างแก้ไขข้อบกพร่อง คุณสามารถแนบบันทึกคำถามเดิมของคุณ %APPDATA%\.purple\certificates\x509\tls_peersใบรับรองได้รับการยอมรับควรเก็บไว้ใน ลองดูที่นั่นหากมีไฟล์ที่มีชื่อเหมือนกับเซิร์ฟเวอร์ของคุณ
ge0rdi

1
ฉันมีข่าวร้าย ฉันกำลังดูแหล่งที่มาของพิดจิ้น(บันทึกของคุณช่วยมากในการปรับทิศทางการไหลของโค้ด) แต่ดูเหมือนว่าใบรับรองที่หมดอายุ (หรือยังไม่ถูกต้อง) จะมีการแจ้งเตือนเสมอ ข้อผิดพลาดใบรับรองอื่น ๆ ทั้งหมดจะไม่ถูกรายงานหากใบรับรองได้รับการยอมรับแล้ว ผมขอแนะนำให้ไปรายงานปัญหานี้ให้กับนักพัฒนา Pidgin ที่นี่
ge0rdi

1
ในความเป็นจริงมีปัญหาเกี่ยวกับใบรับรองหมดอายุรายงานในระบบตั๋วพิดจิ้น โดยปกติคำตอบก็คือใบรับรองของเซิร์ฟเวอร์จะต้องได้รับการแก้ไข
ge0rdi

คำตอบ:


7

น่าเสียดายที่ไม่สามารถยอมรับใบรับรองที่หมดอายุอย่างถาวร (อย่างน้อยไม่ได้อยู่ใน Pidgin 2.11.0 ซึ่งเป็นรุ่นล่าสุดในขณะนี้)

มีรายงานจำนวนมากเกี่ยวกับปัญหานี้อย่างเป็นทางการในมีPigdin ระบบติดตามปัญหา คำตอบปกติคือจะต้องแก้ไขใบรับรองของเซิร์ฟเวอร์

หนึ่งยังสามารถยืนยันใน Pidgin แหล่งที่มา : การตรวจสอบรับรองจะเริ่มขึ้นใน
x509_tls_cached_start_verifyสำหรับใบรับรองหมดอายุมีการPURPLE_CERTIFICATE_EXPIREDตั้งค่าสถานะ
หากพบใบรับรองในแคชx509_tls_cached_cert_in_cacheจะถูกเรียก x509_tls_cached_completeมันจะตรวจสอบว่าลายนิ้วมือใบรับรองที่เกิดขึ้นจริงตรงกับหนึ่งในแคชและบริการโทร
ฟังก์ชันนี้ทำอย่างใดอย่างหนึ่งต่อไปนี้:

  • แจ้งผู้ใช้ว่าใบรับรองไม่ถูกต้อง (หากมีปัญหาใบรับรองร้ายแรงบางอย่าง)
  • อนุญาตให้ผู้ใช้ตัดสินใจว่าจะยอมรับ / ปฏิเสธใบรับรอง (หากมีปัญหาที่ไม่ร้ายแรงหรือไม่นี่เป็นกรณีที่ใบรับรองหมดอายุ)
  • ดำเนินการต่อโดยไม่มีพรอมต์ใด ๆ หากไม่มีปัญหาเกี่ยวกับใบรับรอง

ไม่มีวิธีที่จะข้ามคำเตือนเกี่ยวกับใบรับรองที่หมดอายุ (นอกเหนือจากการแก้ไขใบรับรองเอง)


0

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

ใช้คำสั่งต่อไปนี้:

~/.purple/certificates/x509/tls_peers$ openssl s_client -connect YOUR_SERVER:PORTNUMBER 

หากไม่ได้ผนวกคำสั่งด้วย -starttls xmpp ดังต่อไปนี้:

~/.purple/certificates/x509/tls_peers$ openssl s_client -connect YOUR_SERVER:PORTNUMBER -starttls xmpp

วางไฟล์ในโฟลเดอร์ต่อไปนี้:

~/.purple/certificates/x509/tls_peers

บันทึก! ตรวจสอบว่าชื่อไฟล์เป็นชื่อ DNS ของเซิร์ฟเวอร์

แก้ไข:

เดาว่าใครเพิ่งสังเกตเห็นว่าคุณใช้เครื่อง Windows ... ~ / เป็นพาร์ติชั่นโฮมของผู้ใช้ Linux ตามหน้านี้ Windows equivelant คือ% APPDATA%


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