Làm cách nào tôi có thể nhận được hỗ trợ TLSv1.2 trong Apache trên RHEL6 / CentOS / SL6?


7

Tôi muốn có hỗ trợ TLSv1.2 trong Apache trên máy chủ Khoa học Linux 6 (xây dựng lại RHEL6) của tôi.

Có một số con đường bán hỗ trợ để làm việc này? Tốt nhất là với xây dựng lại tùy chỉnh tối thiểu. Ngay bây giờ tôi đang sử dụng mod_ssl với open_ssl, như được cung cấp trong kho SL6.

Chỉnh sửa: Khi đã có hỗ trợ TLSv1.2, cấu hình Apache được ghi lại đầy đủ và không quá khó. Vấn đề là các tàu RHEL6 có OpenSSL 1.0.0, chỉ hỗ trợ TLS đến 1.0 hoặc 1.1.


mod_gnutlsnên cung cấp TLS 1.2. Bạn có thể phải xây dựng một phiên bản gần đây của gnuTLS tho.
goldilocks

1
Điều đáng chú ý, đối với những người đến từ Google, SL 6 thực hiện (kể từ tháng 6 năm 2014) bao gồm hỗ trợ TLS v1.2. Đảm bảo rằng các gói httpd, mod_ssl và openssl đều được cập nhật và bạn sẽ ổn.
miken32

Câu trả lời:


10

Tôi đã viết một hướng dẫn nhanh về việc nhập lại OpenSSL 1.0.1 RPM từ Fedora Core để hỗ trợ RHEL6 và các biến thể bằng cách thay thế phiên bản 1.0.0 đi kèm để thêm hỗ trợ TLSv1.2 và ECC. Được xây dựng và thử nghiệm với CentOS 6.4 vào tháng 9 năm 2013:

Hướng dẫn về OpenSSL 1.0.1 RPM cho CentOS 6

Xin lưu ý: Đó là nơi tôi giữ bản sao OpenSSL và OpenSSH của riêng mình. Các cải tiến trong CentOS 6.5 đã giảm thiểu phần lớn nhu cầu về TLS1.2 và các lỗ hổng như Heartbleed được giải quyết ở đó, trong khi câu trả lời này sẽ mãi mãi bị mắc kẹt trong năm 2013. Đừng làm theo các bước dưới đây nguyên văn, bắt buộc bạn phải chạy 1.0.1g hoặc mới hơn .

Bây giờ với github: github / ptudor / centos6-openssl

Tôi đã tạo một bản vá có sẵn mà tôi sẽ tham khảo trong hướng dẫn này: openssl-spec-patricktudor-muộn.diff

Đầu tiên, chuẩn bị môi trường xây dựng của bạn. (Nếu bạn đã cài đặt EPEL, hãy sử dụng giả. Giữ cho nó đơn giản tại đây ...)

yum -y groupinstall "Development tools" 
yum -y install rpm-build zlib-devel krb5-devel
mkdir -p $HOME/redhat/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
echo "%_topdir $HOME/redhat/" > ~/.rpmmacros

Tiếp theo, lấy Fedora Core 20 SRPM cho OpenSSL và nguồn OpenSSL đầy đủ.

rpm -Uvh http://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/source/SRPMS/o/openssl-1.0.1e-42.fc21.src.rpm
cd ~/redhat/SOURCES/
wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz
wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz.sha1
openssl dgst -sha1 openssl-1.0.1g.tar.gz ; cat openssl-1.0.1g.tar.gz.sha1

Bây giờ áp dụng cú pháp safe_getenv cũ và áp dụng bản vá:

cd ~/redhat/SOURCES/
sed -i -e "s/secure_getenv/__secure_getenv/g" openssl-1.0.1e-env-zlib.patch
cd ~/redhat/SPECS/
wget http://www.ptudor.net/linux/openssl/resources/openssl-spec-patricktudor-fc20-19.diff
patch -p1 < openssl-spec-patricktudor-latest.diff

Chạy bản dựng:

time rpmbuild -ba openssl.spec

Hy vọng mọi thứ đều suôn sẻ, vì vậy hãy cài đặt RPM mới:

cd ~/redhat/RPMS/x86_64/
sudo rpm -Fvh openssl-1.0.1g-*.rpm openssl-libs-1.0.1g-*.rpm openssl-devel-1.0.1g-*.rpm

Hãy chắc chắn rằng nó thực sự hoạt động:

openssl ciphers -v 'TLSv1.2' | head -4

Liên kết ở trên trang web của tôi có nhiều chi tiết hơn nhưng đây sẽ là một điểm khởi đầu tốt.

Cảm ơn, thưởng thức.

20130819: Sửa đổi da thô bị va đập từ 14 đến 15.

20130831: sửa đổi fc20 bị lỗi từ 15 đến 18.

20130906: sửa đổi fc20 bị lỗi từ 18 đến 19.

20140408: chỉ cần truy cập trang web của tôi cho bất cứ điều gì sau 1.0.1g.


Cảm ơn. Tôi đã hy vọng một nửa rằng sẽ có một kho lưu trữ (bán chính thức) với một cổng sau mà ai đó sẽ chỉ cho tôi, nhưng dường như không có thứ đó tồn tại. Trong trường hợp này phương pháp này có vẻ như là một lựa chọn thứ hai khá khả thi.
Michael Ekstrand

Nhắc nhở người khác, bạn phải xây dựng lại hầu hết các chương trình được xây dựng chống lại openssl sau khi bạn thay thế / nâng cấp openssl như thế này. Ví dụ, nginx được liên kết tĩnh với một số thư viện và sẽ không hoạt động như mong đợi cho đến khi bạn xây dựng lại nó.
ck_

0

Tôi tìm thấy liên kết này trên ServerFault bao gồm việc thiết lập TLSv1.2. Câu hỏi và trả lời có tiêu đề: SSL / TLS 1.2 trên Apache với openssl 1.0.1 .

Các liên kết này bao gồm thông tin TLSv1.2:

Bao gồm những điều sau đây trong bạn httpd.confsẽ cho phép TLSv1.2 giả sử bạn có httpd v2.2 trở lên và openssl 1.0.1c hoặc cao hơn.

SSLProtocol all -SSLv2

Bạn vẫn cần phải thiết lập CodesSuites. Đây là nơi nó có thể gây nhầm lẫn. Theo các tài liệu ở trên, bộ mật mã bắt buộc duy nhất cho TLS 1.2 là TLS_RSA_WITH_AES_128_CBC_SHA:

Appendix C. Cipher Suite Definitions
Cipher Suite                            Key        Cipher         Mac
                                        Exchange
TLS_RSA_WITH_AES_128_CBC_SHA            RSA          AES_128_CBC  SHA

Điều này nói rằng máy chủ phải cung cấp chứng chỉ RSA để trao đổi khóa và mật mã phải là AES_128_CBC và Mac SHA.

Từ các tài liệu mod_ssl httpd, điều này dịch thành:

SSLCipherSuite aRSA:kRSA:AES128-CBC:SHA  

Bạn có thể đọc về SSLCodesSuites trong httpd, tại đây .

Trước đây, tôi đã sử dụng bài đăng trên blog của mình có tiêu đề: Khóa SSLv2 trong Apache để làm điều này cho TLSv1.1. Mọi thứ trên trang đó vẫn phải phù hợp, tất cả những gì bạn cần làm là thay đổi CextSuites + các phiên bản openssl.


Với OpenSSL 1.0.1 trở lên, thật dễ dàng. Vấn đề là RHEL6 / CentOS / SL6 không xuất xưởng với OpenSSL gần đây.
Michael Ekstrand

@MichaelEkstrand - tại sao downvote?
slm

@sim Vì câu trả lời của bạn, trong khi tốt, trả lời một câu hỏi khác. Vấn đề không phải là cấu hình Apache; nó đang hoạt động trên RHEL6, phiên bản OpenSSL 1.0.0.
Michael Ekstrand

0

Gần đây tôi đã điều tra vấn đề tương tự này cho một người bạn, trong bối cảnh POODLE.

Nếu bạn sử dụng bản dựng httpd24 (AORN) mới nhất từ ​​tháng 10 năm 2013 trên epel, bạn sẽ nhận được TLSv1.0 và TLSv1.1 theo mặc định. Tuy nhiên, ngay sau khi bạn đặt SSLProtocol trong apache thành bất kỳ điều gì hợp lý khác, bạn sẽ mất các giao thức này vì các tiêu đề openssl httpd24 rõ ràng đã được xây dựng để chống lại.

Trong thực tế, điều này có nghĩa là nếu bạn cố gắng vô hiệu hóa SSlv2 hoặc SSlv3 một cách rõ ràng, bạn hoàn toàn vô hiệu hóa TLSv11 một TLSv12.

Đây là một điều không may của mod_ssl khi bạn thả xuống đúng 1 giao thức mà nó biết.

Httpd24 trong "bộ sưu tập phần mềm" RedHat được xây dựng gần đây và không gặp phải vấn đề này, nó có lẽ được xây dựng để chống lại một openssl sau này (hoặc có một bản vá tùy chỉnh tầm thường)


Bây giờ lưu ý rằng tôi đã thổi bay epel httpd24 của mình, tôi không thể xác nhận bit này được ngụ ý bởi mã nguồn: Trong bản dựng 2.4.6 trong cả bộ sưu tập phần mềm và epel, bạn sẽ có thể "SSLProtatioDisable -SSLv3" và bỏ qua -SSLv2 vì SSLv2 sẽ bị xóa một cách riêng biệt, trả lại cho bạn tlsv11 và tlsv12. Thủ thuật này mod_ssl nghĩ rằng bạn đang hỗ trợ nhiều giao thức.
giao ước
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.