Apache run multiple SSL Virtual Host

基本上要 run single SSL site 在 Apache 上還蠻容易的
但再加上了一個 SSL site 問題就來了
不就在 SSL zone (httpd-ssl.conf)那邊加上另外一個 Virtual Host 就好了嗎?
SSL 的 Virtual Host 從 Name Based 換到 IP Based
再加上額外的 Private IP 也是不行

後來用瀏覽器連 Private IP 的 SSL 卻是正常的
才想到說應該把那 Private IP 也 mapping 到另外一個 Public IP
由於我們公司主機在防火牆下
所以除了更改 DNS 外,還有修改一下防火牆的規則

舉個實際例子說明:
Public IP 200.200.200.1 (80 & 443) 原本對應到 Private IP 10.1.1.1
後來加入了一個 10.1.1.2 的 Private IP
但連 https://b.test.com 他顯示的認證還是 b.test.com 的

如果只有一個 Public IP
那就只能指定其他的 port(如 https://200.200.200.1:4433) 了
80 跟 443 以外的 port 一般人都蠻難接受的(要公開的話很不方便,自用就還好)
所以還是多個 IP 好辦事阿~

提供 Apache 的相關設定供參考
這邊僅提供 SSL Virtual Host 的部份
我並沒有去設別設定 Port 80 (httpd-vhost.conf)那邊
Port 80 (httpd-vhost.conf)那邊還是維持 Name Based 的方式

Listen 10.1.1.1:443
Listen 10.1.1.2:443
NameVirtualHost 10.1.1.1:443
NameVirtualHost 10.1.1.2:443

  DocumentRoot "/home/www/a.test.com"
  ServerName a.test.com:443
  ServerAdmin service@test.com
  ErrorLog "/usr/local/apache2/logs/error_ssl_log"
  TransferLog "/usr/local/apache2/logs/access_ssl_log"
  SSLEngine on
  SSLCertificateFile /root/ssl/a.test.com.crt
  SSLCertificateKeyFile /root/ssl/a.test.com.key
  SSLCACertificateFile /root/ssl/a_gd_bundle.crt

  DocumentRoot "/home/www/b.test.com"
  ServerName b.test.com:443
  ServerAdmin service@test.com
  ErrorLog "/usr/local/apache2/logs/error_ssl_log"
  TransferLog "/usr/local/apache2/logs/access_ssl_log"
  SSLEngine on
  SSLCertificateFile /root/ssl/b.test.com.crt
  SSLCertificateKeyFile /root/ssl/b.test.com.key
  SSLCACertificateFile /root/ssl/b_gd_bundle.crt

環境:
  • CentOS 5.9 x86_64
  • Apache 2.2.24
  • OpenSSL 0.9.8e

參考資料:



Comments

Popular posts from this blog

CentOS7 如何新增/移除 Rich Rule for firewalld

mac 安裝 mtr

Howto use Postman test Cors