hiết lập nhiều chứng chỉ SSL trên một CentOS VPS với Apache sử dụng một địa chỉ IP




Trong hướng dẫn này chúng tôi sẽ giới thiệu cho các bạn cách thiết lập nhiều Chứng chỉ SSL trên một CentOS VPS với Apache chỉ sử dụng một địa chỉ IP.

Điều này được cho phép bởi một phần mở rộng cho giao thức SSL được gọi là Tên Máy chủ Chỉ thị (SNI). Hầu hết các trình duyệt web dành cho máy tính để bàn và di động hiện tại đều hỗ trợ SNI. Lợi ích chính của việc sử dụng SNI là khả năng bảo mật nhiều trang web mà không cần mua thêm địa chỉ IP.


Đảm bảo mô đun bảo mật mod_ssl được cài đặt và kích hoạt để máy phục vụ Web Apache có thể sử dụng thư viện OpenSSL và bộ công cụ:

yum install mod_ssl openssl

Thực hiện các lệnh sau:

Mkdir -p / etc / httpd / ssl /
mv /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.bak
cd / etc / httpd / ssl /

Tạo các tệp yêu cầu ký kết chứng chỉ SSL (CSR) cho tên miền của bạn:

Openssl genrsa -out domain1.key 2048
openssl req -new -key domain1.key -out domain1.csr
openssl genrsa -out domain2.key 2048
openssl req -new -key domain2.key -out domain2.csr

Và nhập các chi tiết sau cho các chứng chỉ của bạn:


  • Tên quốc gia
  • Tên tiểu bang hoặc tỉnh
  • Tên địa phương
  • tên tổ chức
  • Tên đơn vị tổ chức
  • Địa chỉ email
  • Khi được nhắc tên Common Name (ví dụ tên miền), hãy nhập FQDN (tên miền đủ điều kiện) cho trang web bạn đang đảm bảo.


Chúng tôi đề nghị cài đặt chứng chỉ SSL thương mại khi được sử dụng trong môi trường sản xuất. Hoặc, tạo và sử dụng chứng chỉ SSL tự ký khi bạn chỉ phát triển hoặc thử nghiệm một trang web hoặc ứng dụng bằng cách sử dụng các lệnh sau:

Openssl x509 -req -days 365 -in domain1.csr -signkey domain1.key -out domain1.crt
openssl x509 -req -days 365 -in domain2.csr -signkey domain2.key -out domain2.crt
Chỉnh sửa tập tin cấu hình Apache 'ssl.conf':
Vi /etc/httpd/conf.d/ssl.conf
Và thêm các dòng sau:
LoadModule ssl_module modules/mod_ssl.so
Listen 443
NameVirtualHost *:443
SSLPassPhraseDialog  builtin
SSLSessionCacheTimeout  300
SSLMutex default
SSLRandomSeed startup file:/dev/urandom  256
SSLRandomSeed connect builtin
SSLCryptoDevice builtin
SSLStrictSNIVHostCheck off
<VirtualHost *:443>
DocumentRoot /var/www/html/domain1
ServerName domain1.com
ServerAlias www.domain1.com
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/httpd/ssl/domain1.crt
SSLCertificateKeyFile /etc/httpd/ssl/domain1.key
#SSLCertificateChainFile /etc/httpd/ssl/ca.crt
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
</Files>
SetEnvIf User-Agent ".*MSIE.*" \
         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>
<VirtualHost *:443>
DocumentRoot /var/www/html/domain2
ServerName domain2.com
ServerAlias www.domain2.com
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/httpd/ssl/domain2.crt
SSLCertificateKeyFile /etc/httpd/ssl/domain2.key
#SSLCertificateChainFile /etc/httpd/ssl/ca.crt
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
</Files>
SetEnvIf User-Agent ".*MSIE.*" \
         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>

Khi sử dụng chứng chỉ SSL thương mại, rất có thể cơ quan ký kết sẽ bao gồm chứng chỉ CA trung gian. Trong trường hợp đó, tạo một tập tin mới '/etc/httpd/ssl/ca.crt' và dán nội dung của CA trung gian vào nó, sau đó chỉnh sửa tập tin cấu hình 'ssl.conf' và bỏ ghi chú dòng sau:

SSLCertificateChainFile /etc/httpd/ssl/ca.crt

Do đó, máy chủ web Apache có thể tìm thấy chứng chỉ CA của bạn.

Kiểm tra cấu hình Apache:

/etc/init.d/httpd configtest

Syntax OK

Khởi động lại dịch vụ Apache để những thay đổi có hiệu lực:

service httpd restart

Mở https://domain1.com và https://domain2.com trong trình duyệt web yêu thích của bạn và xác minh rằng các chứng chỉ SSL được cài đặt chính xác.

OK vậy là đã xong. Nếu bạn thấy khó làm có thể sử dụng trực tiếp vps tại iNET để được hỗ trợ 1 cách tốt nhất tại đây: https://inet.vn/vps


Nhận xét

Bài đăng phổ biến từ blog này

Một số lợi ích đáng kể khi sử dụng máy chủ ảo

Seo có bị ảnh hưởng khi mua tên miền nước ngoài hay tên miền trong nước không?

Bạn có thể "ăn cắp" tên miền được không?