Các mã sau đây về nguyên tắc phải trả về nội dung của https://badssl.com
(with-current-buffer
(url-retrieve-synchronously "https://badssl.com")
(buffer-string))
Nhưng với GNU Emacs 25.0.50.1 (x86_64-apple-darwin13.4.0, NS appkit-1265.21 Version 10.9.5 (Build 13F1112)) of 2015-08-24
OS X 10.10.5 của tôi, chạy cùng -Q
, nó thay vào đó hiển thị cho tôi thông báo này:
Certificate information
Issued by: COMODO RSA Domain Validation Secure Server CA
Issued to: Domain Control Validated
Hostname: *.badssl.com
Public key: RSA, signature: RSA-SHA256
Protocol: TLS1.2, key: ECDHE-RSA, cipher: AES-128-GCM, mac: AEAD
Security level: Medium
Valid: From 2015-04-09 to 2016-07-07
The TLS connection to badssl.com:443 is insecure for the following
reasons:
the certificate was signed by an unknown and therefore untrusted authority
certificate could not be verified
và hỏi liệu có chấp nhận chứng chỉ - Không / Phiên / Luôn luôn. Sau đó nó hoạt động nếu tôi chấp nhận chứng chỉ.
Tôi không gặp vấn đề tương tự, ví dụ, wget. Quên tải xuống chính xác (không đặt câu hỏi) https://badssl.com và từ chối https://elf-sign.badssl.com .
Hơn nữa, dường như có hai nhóm tùy chỉnh riêng biệt - gnutls và tls. Trước đây tôi đã biên dịch emacs với sự hỗ trợ cho gnutls ( gnutls-available-p
trả về t
). Gnutls đã được cài đặt với homebrew.
Nếu tôi đặt gnutls-verify-error
thành t
, thay vào đó tôi nhận được lỗi
gnutls-negotiate: Certificate validation failed badssl.com, verification code 42
vì vậy, có lẽ gnutls đã không được sử dụng trong ví dụ đầu tiên. Trên OS X không có tệp nào được đề cập trong gnutls-trustfiles
(trong /usr/ssl
và /etc/ssl
) tồn tại.
Vậy làm cách nào tôi có thể định cấu hình emacs để sử dụng chứng chỉ gốc đáng tin cậy mặc định trên OS X?
Chỉnh sửa: Nếu tôi cài đặt libressl
từ homebrew và thêm /opt/brew/etc/libressl/cert.pem
vào gnutls-trustfiles
, sự cố sẽ biến mất khi sử dụng gnutls-verify-error
set to t.
Chỉnh sửa 2: Trong thử nghiệm của tôi, dường như giá trị của tls-certtool-program
nó không thực sự được sử dụng, nhưng dù sao thì nó cũng có thể không đúng với OS X: certtool mặc định trên OS X không phải là certtool được yêu cầu bởi tls.el và với các gnutls của homebrew Tôi nghĩ rằng nó nên là gnutls-certtool thay thế.
../emacs/configure --with-ns CPPFLAGS=-I/opt/brew/include LDFLAGS=-L/opt/brew/lib
( ../emacs
là một bản sao của git://git.savannah.gnu.org/emacs.git
) sau đó make
và make install
. Đầu ra cấu hình cho biết nó sử dụng -lgnutls
.