Làm cách nào để định cấu hình SSL trong apache?


10

Tôi đã cài đặt apache trong RHEL 6. Mọi thứ đều hoạt động tốt. Tất cả những thay đổi và cấu hình nên được thực hiện để sử dụng https: // localhost: 443 / .

Nếu tôi thay đổi "Nghe 80" thành 443 thì đó là lỗi kết nối SSL

"Lỗi 107 (net :: ERR_SSL_PROTOCOL_ERROR): Lỗi giao thức SSL."

Câu trả lời:


13

Nếu bạn đang sử dụng apache2, thì bạn phải làm như sau:

Bước 1: Sử dụng OpenSSL để tạo các khóa được sử dụng để bảo mật trang web của bạn. Các khóa này được sử dụng khi mã hóa và giải mã lưu lượng truy cập đến trang web an toàn của bạn.

$ openssl genrsa -out mydomain.key 1024

Lệnh này sẽ tạo khóa riêng 1024 bit và đặt nó vào tệp mydomain.key.

Bước 2: Tạo chứng chỉ của riêng bạn.

$ openssl req -new -key mydomain.key -x509 -out mydomain.crt

Bước 3: Giữ khóa riêng trong thư mục /etc/apache2/ssl.key/và chứng chỉ trong thư mục /etc/apache2/ssl.crt/.

Lưu ý: Thư mục ssl.keyphải chỉ có thể đọc được bằng root.

Bước 4: Bây giờ bạn cần chỉnh sửa httpd.conftập tin trong /etc/apache2.

Bây giờ tập tin này nên bao gồm nội dung như thế này:

NameVirtualHost *:80
NameVirtualHost *:443
Listen 443

<VirtualHost *:80>
ServerAdmin webmaster@mydomain.com
DocumentRoot /srv/www/htdocs/mydomain
ServerName www.mydomain.com
ServerAlias mydomain.com
</VirtualHost>


<VirtualHost *:443>
ServerAdmin webmaster@mydomain.com
DocumentRoot /srv/www/htdocs/mydomain-secure
ServerName mail.mydomain.com
SSLEngine on
SSLCertificateFile /etc/apache2/ssl.crt/mydomain.crt
SSLCertificateKeyFile /etc/apache2/ssl.key/mydomain.key
</VirtualHost>


<Directory /srv/www/htdocs/mydomain-secure>
SSLRequireSSL
</Directory>


<VirtualHost *:80>
ServerAdmin webmaster@mydomain.com
DocumentRoot /srv/www/htdocs/mydomain
ServerName mail.mydomain.com
RedirectMatch permanent (/.*) https://mail.mydomain.com$1
</VirtualHost>

Ba dòng đầu tiên là không cần thiết. 1. NameVirtualHostkhông được chấp nhận và sẽ bị xóa trong các phiên bản tương lai của Apache. Hiện tại nó đã không còn hoạt động. 2. Listen 443có thể gây ra sự cố nếu apache đã được cấu hình để nghe trên cổng 443 mà trên nhiều bản phân phối linux đã xảy ra. Chỉ thêm nếu bạn chắc chắn rằng dòng này không được cấu hình khác ở đâu.
lanoxx

3

Đừng thay đổi Listen 80để 443/etc/httpd/conf/httpd.conf. SSL được cấu hình trong /etc/httpd/conf.d/ssl.conf. Trên RHEL 6, SSL được bật và nghe theo mặc định với chứng chỉ tự ký.

Bạn có thể truy cập trang web mặc định bằng SSL chỉ bằng cách duyệt đến https://localhost(bạn không cần thêm cổng vào cuối URL).

Nếu bạn muốn chuyển tiếp tất cả các yêu cầu HTTP đến HTTPS (đó là điều tôi tin rằng bạn đang cố gắng đạt được), bạn có thể thêm chuyển hướng vĩnh viễn hoặc sử dụng mô-đun Apache mod_rewrite.

Cách dễ nhất và an toàn nhất là thiết lập chuyển hướng vĩnh viễn. Cho phép các máy chủ ảo được đặt tên và thêm một Redirectlệnh vào Virtualhost trong /etc/httpd/conf/httpd.conf.

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName localhost
   Redirect permanent / https://localhost
</VirtualHost>

Sử dụng mod_rewrite, bạn cũng tạo một máy chủ ảo có tên. Đây không phải là phương pháp được đề xuất, nhưng sẽ hoạt động.

NameVirtualHost *:80
<VirtualHost *:80>
   # Enable the Rewrite engine
   RewriteEngine On
   # Make sure the connection is not already HTTPS
   RewriteCond %{HTTPS} !=on
   # This rewrites the URL and forwards to https
   RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>

Nếu bạn muốn tắt SSL, hãy bình luận những dòng này /etc/httpd/conf.d/ssl.confvà khởi động lại Apache.

LoadModule ssl_module modules/mod_ssl.so
Listen 443

Trên thực tế, nếu bạn thêm gói mod_ssl cho RHEL6, nó sẽ tạo ra /etc/httpd/conf.d/ssl.conf, tải mô-đun và thiết lập <VirtualHost _default_:443>, với tất cả các tham số cần thiết, mỗi tham số có nhận xét. Các mod_sslgói phần mềm được không tự động cài đặt nếu bạn cài đặt các httpdgói.
jsbillings

1
Tôi muốn thêm chỉ một điều vào việc viết lại của bạn: sử dụng [R=301,L]thay vì chỉ [R,L], theo cách này, việc viết lại đang sử dụng tùy chọn vĩnh viễn của trạng thái HTTP 3xx .
dcestari
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.