Điểm:2

Tại sao RSA DANE TLSA của tôi hoạt động, nhưng ECDSA DANE TLSA của tôi không hoạt động?

lá cờ id

Tôi đã mua hai chứng chỉ SSL ký tự đại diện, tên miền duy nhất từ ​​Namecheap/Sectigo/Comodo. Tôi đã tạo CSR của mình theo cách thông thường bằng cách sử dụng openssl.

$ openssl req -newkey rsa:4096 -keyout example.com.rsa.key -out example.com.rsa.csr
$ openssl genpkey -genparam -algorithm ec -pkeyopt ec_paramgen_curve:P-256 -out example.com.ecdsa.pem
$ openssl req -newkey ec:example.com.ecdsa.pem -keyout example.com.ecdsa.key -out example.com.ecdsa.csr

Tôi đã gửi CSR và được cấp từng gói chứng chỉ bao gồm .crt và .ca-bundle, tất cả đều như mong đợi.

Tôi đã có thể cài đặt cả hai chứng chỉ để Postfix sử dụng. Mỗi yêu cầu một phiên bản khóa riêng không được mã hóa, các quyền an toàn đã được duy trì.

$ openssl rsa -in example.com.rsa.key -out example.com.rsa.key.unencrypted
$ openssl ec -in example.com.ecdsa.key -out example.com.ecdsa.key.unencrypted

Tôi đã thiết lập chính xác SPF, DKIM, DMARC và DNSSEC, từng công cụ của bên thứ ba đã xác nhận và đã gửi và nhận thư có điểm vượt qua trong tiêu đề.

Tôi lại sử dụng openssl để tạo hàm băm của chứng chỉ cho bản ghi DANE TLSA của mình. Tôi đã tạo hai bộ, một bộ cho mỗi thuật toán và cho cả cổng 25 và 587. Các bộ này được thêm vào tệp vùng của tôi, được kiểm tra bằng vùng kiểm tra có tên, được ký bằng dnssec-signzone và xuất bản trong DNS.

Tôi bắt đầu bằng cách sử dụng hai công cụ bên ngoài để kiểm tra cấu hình, công cụ đầu tiên tại danecheck và thứ hai tại dane.sys4.de. Cả hai đều báo cáo thành công chung khi sử dụng chứng chỉ RSA nhưng lỗi cụ thể của chứng chỉ ECDSA.

Cái trước đã thành công, báo cáo một phần:

DANE TLSA 3 1 1 [9679fc29..]: Chứng chỉ EE phù hợp OK
DANE TLSA 3 1 1 [ecd29ffd..]: FAIL không khớp với chứng chỉ EE

Cái sau đã thành công, báo cáo một phần:

3, 1, 1 9679fc296960a23c[...]149b990a680cad8b *màu xanh lục*
3, 1, 1 ecd29ffd76d61326[...]dadbcfa42eae9158 - không thể lấy chứng chỉ nhà phát hành địa phương: (20) *màu đỏ*

Tôi đã cố gắng khắc phục điều này bằng cách thay đổi các trường sử dụng, bộ chọn và đối sánh khác nhau, 3 0 1, 3 1 1, v.v. Tôi đã thử tạo các giá trị băm cục bộ bằng openssl và bằng cách sử dụng các công cụ trực tuyến như gen_tlsa. Cả hai công cụ đều tạo ra kết quả băm giống hệt nhau cho cả hai chứng chỉ. Một lần nữa, RSA TLSA đã thành công trong khi bản ghi ECDSA không thành công. Cuối cùng, tôi đã tìm thấy tập lệnh chaingen, tập lệnh này tạo ra tất cả các giá trị băm 3 0 1, 3 1 1, 3 0 2 và 3 1 2 mà tôi đã đưa vào cho mỗi cổng mà không cải thiện bản ghi ECDSA.

Tôi đã dành vài giờ để thử các hoán vị khác nhau của từng chứng chỉ, bản ghi TLSA, cổng, v.v. Tôi đã thử thêm bản ghi TLSA (2 0 1) cho các khóa chính của bản ghi ECDSA vào DNS. Tôi đã thử thay đổi chứng chỉ có sẵn thành Postfix để bao gồm gói ca cùng với chứng chỉ trong tệp .pem.

Nghiên cứu tôi thấy bài đăng này tại người dùng exim có tiêu đề "Làm thế nào để có được chứng chỉ ec được sử dụng với chứng chỉ DANE và ec+rsa" của Viktor Dukhovni, người không cần giới thiệu trong vòng kết nối Postfix/DANE.Anh ấy gợi ý rằng có lẽ các công cụ trực tuyến mang tính cơ hội và ngay sau khi chúng thành công với chứng chỉ RSA, họ đã không thèm thử nghiệm với chứng chỉ ECDSA. Anh ấy đã cung cấp các cuộc gọi rất có giá trị tới openssl để cho thấy rằng thực sự các khóa là chính xác trong tình huống của người đăng. Tôi đã nhân đôi nỗ lực đó bằng hai tập lệnh shell ngắn sử dụng mã của Viktor để thay thế thông tin của tôi, một có tên là checkrsa và một có tên là checkecdsa.

Hai tập lệnh thực thi hai lệnh, mỗi lệnh có thiết lập sau cho checkrsa (dành cho IPv4):

$ mèo checkrsa

tiếng vang "bỏ" | openssl s_client -starttls smtp -connect mail.example.com:25 -4 -verify 9 \
    -dane_tlsa_domain mail.example.com \
    -dane_tlsa_rrdata "3 0 1 c487cdb079b49d12ee357d9547c6f67448a2ec2e789c86c65d213a57aaec4ac9" \
    -dane_tlsa_rrdata "3 1 1 9679fc296960a23c89fed73d8e6a6d0ab33f0abc99d48c44149b990a680cad8b" \
    -sigalgs rsa_pkcs1_sha256:rsa_pkcs1_sha384:rsa_pkcs1_sha512:rsa_pss_rsae_sha256:rsa_pss_rsae_sha384:rsa_pss_rsae_sha512:rsa_pss_pss_sha256:rsa_pss_pss_sha384:rsa_pss_pss_sha256:rsa_pss_pss_sha384:rsa_pss_pss_sha

Và checkecdsa (đối với IPv6):

kiểm tra $ mèo
tiếng vang "bỏ" | openssl s_client -starttls smtp -connect mail.example.com:25 -6 -verify 9 \
    -dane_tlsa_domain mail.example.com \
    -dane_tlsa_rrdata "3 0 1 87a8c75581c9d022062416a37387de1ec30d311e4d7afbeb892be287fb13bfc5" \
    -dane_tlsa_rrdata "3 1 1 ecd29ffd76d6132629ddbf7ccd31460e23ac3b4a50d47bccdadbcfa42eae9158" \
    -sigalgs ecdsa_secp256r1_sha256:ecdsa_secp384r1_sha384:ecdsa_secp521r1_sha512

Kết quả:

root@server:~/bin# ./checkrsa 
xác minh độ sâu là 9
ĐÃ KẾT NỐI(00000003)
độ sâu=0 CN = *.example.com
xác minh trả lại: 1
---
Chuỗi chứng chỉ
 0 s:CN = *.example.com
   i:C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Máy chủ bảo mật xác thực tên miền Sectigo RSA CA
---
Chứng chỉ máy chủ
-----BẮT ĐẦU GIẤY CHỨNG NHẬN----
MIIHNDCCBhygAwIBAgIQAzfJZrX65NjG2FvLmk0I0jANBgkqhkiG9w0BAQsFADCB
...
Xw8UgZDYihDaIxT8SUQUgV9weQg5Lkru
-----GIẤY CHỨNG NHẬN KẾT THÚC-----
chủ đề=CN = *.example.com

nhà phát hành=C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Máy chủ bảo mật xác thực tên miền Sectigo RSA CA

---
Không có tên CA chứng chỉ ứng dụng khách nào được gửi
Thông báo ký ngang hàng: SHA256
Loại chữ ký ngang hàng: RSA-PSS
Khóa tạm thời máy chủ: X25519, 253 bit
---
Bắt tay SSL đã đọc 2904 byte và ghi 386 byte
Xác minh: OK
Tên ngang hàng đã được xác minh: *.example.com
DANE TLSA 3 1 1 ...99d48c44149b990a680cad8b phù hợp với chứng chỉ EE ở độ sâu 0
---
Mới, TLSv1.3, Mật mã là TLS_AES_256_GCM_SHA384
Khóa công khai của máy chủ là 4096 bit
Đàm phán lại an toàn KHÔNG được hỗ trợ
Nén: KHÔNG CÓ
Mở rộng: KHÔNG CÓ
Không có ALPN nào được thương lượng
Dữ liệu ban đầu không được gửi
Xác minh mã trả lại: 0 (ok)
---
250 CHUYỆN
XONG
root@server:~/bin# ./checkecdsa 
xác minh độ sâu là 9
ĐÃ KẾT NỐI(00000003)
độ sâu=0 CN = *.example.com
xác minh trả lại: 1
---
Chuỗi chứng chỉ
 0 s:CN = *.example.com
   i:C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo 
Máy chủ bảo mật xác thực tên miền ECC CA
---
Chứng chỉ máy chủ
-----BẮT ĐẦU GIẤY CHỨNG NHẬN----
MIIEqDCCBE6gAwIBAgIRAIIKQBNWh2R9wwvn2/j30PgwCgYIKoZIzj0EAwIwgY8x
...
YemreHq/Cd5HPgIgE6InSF5ko6mWo9GMpR7w1ijpbsnShlS6EiYrpZozD0s=
-----GIẤY CHỨNG NHẬN KẾT THÚC-----
chủ đề=CN = *.example.com

nhà phát hành=C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Máy chủ bảo mật xác thực tên miền Sectigo ECC CA

---
Không có tên CA chứng chỉ ứng dụng khách nào được gửi
Thông báo ký ngang hàng: SHA256
Loại chữ ký ngang hàng: ECDSA
Khóa tạm thời máy chủ: X25519, 253 bit
---
Bắt tay SSL đã đọc 1811 byte và ghi 348 byte
Xác minh: OK
Tên ngang hàng đã được xác minh: *.example.com
DANE TLSA 3 1 1 ...50d47bccdadbcfa42eae9158 phù hợp với chứng chỉ EE ở độ sâu 0
---
Mới, TLSv1.3, Mật mã là TLS_AES_256_GCM_SHA384
Khóa công khai của máy chủ là 256 bit
Đàm phán lại an toàn KHÔNG được hỗ trợ
Nén: KHÔNG CÓ
Mở rộng: KHÔNG CÓ
Không có ALPN nào được thương lượng
Dữ liệu ban đầu không được gửi
Xác minh mã trả lại: 0 (ok)
---
250 CHUYỆN
XONG

Vì vậy, cả hai chứng chỉ đều kiểm tra cục bộ, nhưng tiếp tục bị lỗi bên ngoài.

Thấy rằng thông báo của Viktor chỉ ra rằng có lẽ các công cụ đã thành công với RSA được bảo lãnh trên các hàm băm ECDSA, tôi cũng đã thử xuất bản các bản ghi ECDSA TLSA. Kết quả cho thấy sự thất bại hoàn toàn chỉ với các hàm băm ECDSA của riêng chúng.

Vì vậy, tôi để với tình huống này: Tôi có hai bộ chứng chỉ SSL, một RSA, một ECDSA. Cả hai chứng chỉ đều thành công trong Postfix. Cả hai certs kiểm tra với openssl. Xuất bản cả hai chứng chỉ vượt qua tổng thể, dựa trên chứng chỉ RSA, lưu ý rằng chứng chỉ ECDSA không thành công. Chứng chỉ ECDSA thành công tại địa phương, nhưng thất bại ở bên ngoài.

Tôi không biết phải bắt đầu từ đâu và đang tìm trợ giúp để thiết lập chứng chỉ ECDSA song song với bản ghi RSA của tôi cho DANE.

anx avatar
lá cờ fr
anx
Bạn có thể thấy [Hardenize](https://www.hardenize.com/) và [crt.sh](https://crt.sh/) hữu ích hơn cho đầu ra mỗi chứng chỉ (-chuỗi) của họ.Bạn có chắc chắn rằng máy chủ của bạn đang gửi theo phương thức trung gian - Điều đó nên xảy ra, bởi vì nếu không thì nó được ký bởi *Sectigo* để làm gì?
synacksoldier avatar
lá cờ id
Tôi không chắc lắm. Tôi cho rằng chuỗi tin cậy sao cho các chứng chỉ của tôi dưới dạng lá sẽ đủ gần với một bản ghi đã biết/đã xuất bản để trở nên hữu ích "ngoài luồng". Tôi đã cố gắng đưa vào thông tin lỗ hổng của các khóa gốc để khắc phục sự cố mà không biết thuật ngữ "trung gian" hoặc thuật ngữ này liên quan như thế nào đến tình huống của tôi. Tôi sẽ cố gắng nghiên cứu thêm về cách cung cấp thông tin đó.
anx avatar
lá cờ fr
anx
CA đã cung cấp cho bạn hai thứ: Bản thân chứng chỉ ("lá", .crt) và những thứ khác để gửi cùng với nó ("trung gian", .ca-bundle), những thứ mà họ tin rằng sẽ kết nối chuỗi với các gốc đã biết và đáng tin cậy. Nếu CA cung cấp riêng từng thuật toán, thì đối với mỗi thuật toán, bạn phải tạo một tệp chứa cả hai (1: chứng chỉ ecc của bạn + chứng chỉ trung gian ecc 2: chứng chỉ rsa của bạn + chứng chỉ trung gian rsa). Tôi *nghi ngờ* bạn chỉ cấp chứng chỉ cho Postfix. Sau đó, thiết lập DANE của bạn sẽ tiếp tục hoạt động, nhưng *ngoài ra* chứng chỉ của bạn sẽ dễ dàng được xác minh ngay cả đối với khách hàng chỉ đang cố xem liệu nó có liên kết với một CA gốc đáng tin cậy hay không.
Điểm:1
lá cờ fr
anx

Yup, các công cụ bạn đề cập đã cho bạn kết quả sai lệch.

Một bài kiểm tra tốt cần kiểm tra sản phẩm chéo của các thuật toán nhân với địa chỉ IP và sau đó đối với từng thuật toán đó: kiểm tra xem chuỗi chứng chỉ được trình bày có liên quan đến CA đáng tin cậy hay không liệu nó có liên kết với hoặc khớp với chứng chỉ được xuất bản qua TLSA hay không.Đó là 8 bước xác minh từ 4 lần thương lượng duy nhất, trước cả khi xem xét các phiên bản giao thức cũ hơn và SNI.

Một số thử nghiệm chỉ thử IP đầu tiên, một số thử nghiệm chỉ thử bộ mật mã được thương lượng đầu tiên. Hầu hết các bài kiểm tra không báo cáo bằng ngôn ngữ rõ ràng cho dù kết quả khớp DANE hoặc PKI không thành công.

Các s_client lệnh bạn đã thử là tốt .. nhưng bạn muốn chạy bốn không hai lệnh (gấp đôi số đó, nếu bạn sử dụng IPv4 và IPv6). Bởi vì tôi nghi ngờ trong khi bản ghi TLSA của bạn vẫn ổn, bạn vẫn chưa gửi cùng (đúng) các phần trung gian.

synacksoldier avatar
lá cờ id
Bản sao tốt về nhu cầu thực hiện hai lệnh gọi tới openssl s_client cho mỗi phiên bản ip (v4, v6). Tôi đã cập nhật văn bản để bao gồm một ví dụ cho mỗi phiên bản.Nhưng, những gì tôi cần phải bao gồm trước đó? Tôi còn thiếu gì trước khi mở rộng cho các phiên bản ip?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.