phiên bản giao thức cảnh báo tlsv1 khi kết nối qua SSL với OS X Server


3

Làm cách nào tôi có thể kích hoạt lại TLS 1.1 và 1.0 trên máy chủ 5.3 với macOS 10.12.4 trong thời gian ngắn trong khi tôi đánh giá tất cả các máy khách chưa sẵn sàng cho TLS 1.2?

Nếu bạn nhảy xuống dưới, các nỗ lực thay đổi tệp comfiguration đã thất bại cho đến nay để khôi phục tính tương thích ngược

SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2

Sau khi cập nhật máy chủ của chúng tôi lên macOS 12.4 và ứng dụng Máy chủ lên phiên bản 5.3, sử dụng curlđể kết nối với trang web máy chủ macOS https từ máy Linux đã ngừng hoạt động, phát hành các thông báo sau ở phía máy khách:

$ curl -v --insecure -o "output.file" https://myserver.domain/path/page.php
* About to connect() to myserver.domain port 443 (#0)
*   Trying 192.168.xxx.xxx... connected
* Connected to myserver.domain (192.168.xxx.xxx) port 443 (#0)
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs/
* SSLv3, TLS handshake, Client hello (1):
} [data not shown]
* error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
* Closing connection #0

Kết nối hoạt động tốt trước khi cập nhật máy chủ macOS. Vì vậy, có vẻ như bản cập nhật đã tắt một tùy chọn kết nối curldựa trên. Tôi đã googled rất nhiều, nhưng tôi vẫn không chắc chắn chính xác nguyên nhân là gì.

Lệnh tương tự curlhoạt động khi được ban hành từ máy Mac khác. Máy linux có

$ curl --version
curl 7.19.0 (x86_64-suse-linux-gnu) libcurl/7.19.0 OpenSSL/0.9.8h zlib/1.2.3 libidn/1.10
Protocols: tftp ftp telnet dict ldap http file https ftps 
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz 

trong khi trên máy khách Mac

$ curl --version
curl 7.51.0 (x86_64-apple-darwin16.0) libcurl/7.51.0 SecureTransport zlib/1.2.8
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz UnixSockets 

Thật không may, nó không phải là một tùy chọn để thử cập nhật curltrên máy Linux.

Một số tài nguyên cho rằng các bộ mật mã không tương thích là nguyên nhân, nhưng sau một số thử nghiệm, tôi không thể tìm ra giải pháp bằng --cipherstùy chọn này và tôi cũng không chắc chắn làm thế nào để tìm một bộ mật mã tương thích.

Tôi đã cố gắng tìm hiểu những gì đã thay đổi với macOS Server 5.3, nhưng nhật ký thay đổi của Apple không cho tôi bất kỳ gợi ý nào về nó. Vì vậy, câu hỏi là:

Điều gì đã thay đổi trong macOS 12.4 và / hoặc macOS Server 5.3 và làm cách nào tôi có thể định cấu hình lại máy chủ macOS của mình để curlkết nối hoạt động trở lại?

Cập nhật 1:

Tôi đã tạm thời tiếp xúc với cổng 443 với công chúng, vì vậy tôi có thể thực hiện các bài kiểm tra SSL Labs . Kết quả cho thấy máy chủ macOS của tôi chỉ hỗ trợ TLS 1.2 và không có gì khác nữa. Đối với một số khách hàng mô phỏng, báo cáo thử nghiệm Server sent fatal alert: protocol_version- bao gồm, ví dụ, IE8-10 / Win7 và Java7u25.

Tôi đã cố gắng kích hoạt lại TLS 1 và 1.1 trong

  • /library/server/web/config/apache2/sites/0000_127.0.0.1_34543_myserver.domain.conf
  • /library/server/web/config/apache2/httpd.conf
  • /library/server/web/config/apache2/httpd_server_app.conf
  • /library/server/web/config/proxy/apache_serviceproxy.conf (nhiều trường hợp ở đây)

thay đổi

SSLProtocol -all +TLSv1.2

vào

SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2

hoặc thậm chí

SSLProtocol All

nhưng nó không tạo ra sự khác biệt khi tìm nạp URL với curl.

Cập nhật 2:

Nhật ký lỗi dịch vụ proxy hiển thị

[datetime] [ssl:info] [pid n] [client x.x.x.x:38805] AH02008: SSL library error 1 in handshake (server myserver.domain:443)
[datetime] [ssl:info] [pid n] SSL Library Error: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number
[datetime] [ssl:info] [pid n] [client x.x.x.x:38805] AH01998: Connection closed to child 11 with abortive shutdown (server myserver.domain:443)

Đối với tôi, có vẻ như các nỗ lực kích hoạt TLS v1 của tôi không hoạt động.

Vì vậy, câu hỏi là: Làm thế nào tôi có thể kích hoạt lại TLS v1 trong macOS Server Apache?

Câu trả lời:


3

cuộn tròn 7.19.0 ... OpenSSL / 0.9.8h

Đây là phiên bản OpenSSL rất cũ (và không được hỗ trợ) mà bạn đang sử dụng ở đây không hỗ trợ các giao thức hiện đại như TLS 1.2 và mật mã ECDHE hiện đại. Rất có thể sau khi nâng cấp, máy chủ của bạn bây giờ yêu cầu giao thức và / hoặc mật mã như vậy và do đó kết nối với phiên bản OpenSSL cũ của bạn sẽ thất bại.

* SSLv3, TLS handshake, Client hello (1):

Điều này cũng có thể cho thấy rằng khách hàng của bạn đang cố gắng sử dụng SSL 3.0, thường bị vô hiệu hóa ngày hôm nay vì đây là giao thức không an toàn. Bạn có thể cố gắng thực thi để sử dụng TLS 1.0 (được OpenSSL 0.9.8 hỗ trợ) bằng cách sử dụng curl -1hoặc curl --tls1với hy vọng rằng máy chủ vẫn hỗ trợ TLS 1.0 và có các mật mã được cấu hình để có thể sử dụng được bởi phiên bản OpenSSL cũ.


curl 7.19 có thể cũ, nhưng nó vẫn kết nối tốt với bất kỳ trang web https nào khác mà tôi đã thử (google.com, v.v.). Theo các tệp cấu hình httpd, máy chủ macOS hỗ trợ TLS 1, 1.1 và 1.2, nhưng sử dụng -1 với curl sẽ không giúp ích gì. đầu ra dấu vết curl dường như không phải là rất hữu ích. Bạn có ý tưởng nào khác để theo dõi nguyên nhân của các vấn đề kết nối không?
not2savvy

@ not2savvy: xem thông điệp tường trình trên máy chủ có thể giúp ích vì máy chủ là người gửi cảnh báo TLS vì nó không thích thứ gì đó mà khách hàng đã gửi. Nếu máy chủ của bạn ở chế độ công khai, bạn cũng có thể kiểm tra máy chủ đó với SSLLabs , cũng hiển thị hành vi với các máy khách hoặc thư viện cụ thể.
Steffen Ullrich

Không có tin nhắn trong nhật ký apache. Máy chủ không công khai. Tôi đã thử openssl s_client -connect myserver.domain:443từ máy Mac của mình, nhưng kết quả là CONNECTED(00000003) 16140:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.50.6/src/ssl/s23_lib.c:185:. Và nếu tôi thêm -tls1, sau đó tôi nhận được 31629:error:1409442E:SSL routines:SSL3_READ_BYTES:tlsv1 alert protocol version:s3_pkt.c:1053:SSL alert number 70thêm vào các tin nhắn ở trên.
not2savvy

Tôi đã quản lý để chạy thử nghiệm SSLLabs trên máy chủ của chúng tôi. Tôi đã cập nhật câu hỏi của tôi với kết quả.
not2savvy

@ not2savvy: vì vậy giả định của tôi với phiên bản TLS là chính xác. Bạn đã khởi động lại máy chủ sau khi bạn thực hiện thay đổi cấu hình để cho phép TLS 1.0? Và bạn đã kiểm tra lại với SSLLabs vì có thể bây giờ TLS 1.0 không còn là vấn đề nữa mà là mật mã.
Steffen Ullrich

1

Để kích hoạt lại TLSv1 (hoặc các giao thức khác), cần phải sửa đổi cấu hình proxy trong /Library/Server/Web/config/proxy/apache_serviceproxy.conf, thêm giao thức được yêu cầu vào <VirtualHost *:443>phần như sau:

<VirtualHost *:443>
  ProxyPreserveHost On
 SetEnv proxy-chain-auth on
 RequestHeader set X-Forwarded-Proto "https"
 RequestHeader set X-Forwarded-Port "443"
 RequestHeader unset Proxy early
 <IfModule mod_ssl.c>
   SSLEngine On
   SSLCertificateFile "/etc/certificates/${CERT_ID}.cert.pem"
   SSLCertificateKeyFile "/etc/certificates/${CERT_ID}.key.pem"
   SSLCertificateChainFile "/etc/certificates/${CERT_ID}.chain.pem"
   SSLCipherSuite "HIGH:MEDIUM:!MD5:!RC4:!3DES"
   SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2
   SSLProxyEngine On
   SSLProxyProtocol -all +TLSv1.2
   SSLProxyCheckPeerCN off
   SSLProxyCheckPeerName off
 </IfModule>
 [...]
</VirtualHost>

Theo thử nghiệm của tôi, SSLProxyProtocolkhông cần phải sửa đổi. Ngoài ra, những thay đổi trong các tệp khác được đề cập trong câu hỏi không có tác dụng, vì vậy chúng không cần phải được chạm vào.

Hãy cẩn thận : Nâng cấp ứng dụng Máy chủ của bạn có thể sẽ luôn ghi đè /Library/Server/Web/config/proxy/apache_serviceproxy.conf. Sau khi nâng cấp, bạn sẽ phải áp dụng lại sửa đổi.


Lưu ý: Tôi đã cố gắng chuyển các thay đổi sang một tệp cấu hình tùy chỉnh riêng biệt apache_serviceproxy_customsites_myserver.domain.conf, điều này sẽ ngăn các bản nâng cấp của Máy chủ hoàn nguyên các sửa đổi này. Ngoài ra, thay đổi giao thức có thể bị giới hạn trong một miền cụ thể. Nhưng điều đó dường như không hoạt động - vẫn đang điều tra lý do tại sao.


Để đảm bảo các sửa đổi của bạn được sử dụng, có vẻ như cần phải khởi động lại macOS ( sudo shutdown -r), không chỉ máy chủ web ( sudo serveradmin stop/start web) để khởi động lại dịch vụ proxy.

Một xác minh của máy chủ SSL Labs báo cáo rằng TLS 1.0, 1.1 và 1.2 hiện có sẵn, trong khi SSL 2 và 3 thì không.


-3

Tôi cũng cần kích hoạt TLS 1.1 trên Sienna Server 5.3 Có một vài email không được xử lý do nó.

/ l Library / server / web / config / apache2 / sites /0000_127.0.0.1_34543_myserver.domain.conf

/ l Library / server / web / config / apache2 / httpd.conf
TẬP TIN KHÔNG TRÊN MÁY CHỦ CỦA TÔI

/ l Library / server / web / config / apache2 / httpd_server_app.conf
chỉnh sửa (in đậm) và khởi động lại không làm gì cả

IfModule mod_ssl.c
SSLProtocol -all + TLSv1.1 + TLSv1.2 --DIDNT LÀM VIỆC
SSLProtocol All --DIDNT WORK

/ l Library / server / web / config / proxy / apache_serviceproxy.conf (nhiều trường hợp ở đây)

xin lỗi tôi không sử dụng quyền này, nhưng hy vọng khi tôi hoàn thành nó sẽ là một câu trả lời thực sự


Vâng, xem câu trả lời của tôi. Các tập tin tôi thay đổi được liệt kê trong câu hỏi. Nhưng bạn không nên tạo câu trả lời, nếu bạn thực sự đang hỏi thêm thông tin.
not2savvy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.