HTTPS: HTTP qua SSL
Quy trình thiết lập phiên SSL đơn giản
(1) Máy khách gửi phương thức mã hóa khả dụng và yêu cầu chứng chỉ từ máy chủ(2) Máy chủ phản hồi với chứng chỉ và phương thức mã hóa đã chọn(3) Máy khách xác thực chứng chỉ qua các bước: - Kiểm tra tính hợp lệ của CA cấp chứng chỉ (a) Xác minh tính hợp pháp nguồn gốc: Dùng khóa công khai CA giải mã chữ ký số (b) Kiểm tra tính toàn vẹn nội dung chứng chỉ (c) Đối chiếu thời hạn hiệu lực (d) Tra cứu trạng thái thu hồi chứng chỉ (e) So khớp tên chủ sở hữu trong chứng chỉ với tên miền truy cập(4) Máy khách tạo khóa phiên tạm thời (khóa đối xứng), mã hóa bằng khóa công khai máy chủ và gửi đi để hoàn tất trao đổi khóa(5) Máy chủ dùng khóa này mã hóa tài nguyên yêu cầu và phản hồi về máy kháchLưu ý: SSL dựa trên địa chỉ IP. Máy chủ đơn IP chỉ hỗ trợ 1 máy chủ ảo HTTPS### Triển khai HTTPS
(1) Xin chứng chỉ số cho máy chủ Môi trường thử nghiệm: Tự xây dựng CA nội bộ (a) Tạo CA riêng (b) Tạo yêu cầu ký chứng chỉ (CSR) trên máy chủ (c) CA ký xác nhận Môi trường sản phẩm: Chỉ cần tạo CSR, gửi cho CA uy tín và nhập chứng chỉ nhận được vào đường dẫn cấu hình(2) Cấu hình httpd hỗ trợ SSL và chỉ định đường dẫn chứng chỉyum -y install mod_sslTệp cấu hình chính: /etc/httpd/conf.d/ssl.conf.Cấu hình mẫu dưới đây định nghĩa máy chủ ảo với SSL để triển khai HTTPS. Các thông số khác kế thừa từ common.conf (ví dụ: documentroot). Sau khi cấu hình, khởi động lại dịch vụ để truy cập Apache qua HTTPS.```
sed -i.bak -e '/^$/d' -e '/^[#].*/d' /etc/httpd/conf.d/ssl.conf
more /etc/httpd/conf.d/ssl.conf
Listen 443 https
SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog
SSLSessionCache shmcb:/run/httpd/sslcache(512000)
SSLSessionCacheTimeout 300
SSLRandomSeed startup file:/dev/urandom 256
SSLRandomSeed connect builtin
SSLCryptoDevice builtin
<VirtualHost default:443>
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:3DES:!aNULL:!MD5:!SEED:!IDEA
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
<Files ~ ".(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-5]"
nokeepalive ssl-unclean-shutdown
downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"
</VirtualHost>
Truy cập thử nghiệm
### Chuyển hướng HTTP sang HTTPS
Dùng chuyển hướng để định tuyến yêu cầu HTTP sang URL HTTPSCách thực hiệnRedirect [trạng_thái] đường_dẫn_URL đích_URL Các trạng thái: Permanent: Mã 301 (chuyển hướng vĩnh viễn) Temp: Mã 302 (mặc định - chuyển hướng tạm thời)Ví dụ:Redirect temp / https://www.magedu.com/### Thí nghiệm: Chuyển hướng /var/www/html sang https://ssltest.com
Cấu hình độc lập không liên quan phần trên
/etc/httpd/conf/httpd.conf DocumentRoot "/var/www/html" redirect temp / https://www.ssltest.com
Lỗi vòng lặp chuyển hướng khi dùng cấu hình trực tiếp trong httpd.conf
Giải pháp thay thế:
/etc/httpd/conf/httpd.conf DocumentRoot "/var/www/html"#redirect temp / https://www.ssltest.com##Bỏ dòng nàyRewriteEngine onRewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=302]
Các tùy chọn curl -k: Cho phép kết nối HTTPS không chứng chỉ -L: Tự động theo dõi địa chỉ chuyển hướng -I: Chỉ lấy thông tin header