The Art of Readable Code && High Performance Comments

基本的 Apache + SSL 設定可以參考這篇,總之要生出一把 key,做出 csr,然後用自己的 key 簽署 csr 成為 crt。

當要在一台主機 (更精確的說,一個 IP) 上跑很多 vhost 的時候,網路上一面倒的說 “SSL 的限制是一個 server IP 綁定一組 crt,所以 blah blah”;我是沒去查這些資訊的發佈時間啦 @@ 不過剛弄了一下,發現偶家在 aws 上面的 apache 跟本不是這回事。大致設定流程如下:

  1. 要讓 apache 去聽 port 80/443, 確保有 Listen *:80, Listen *:443 兩筆 entry (*: 可以省略)
  2. 要讓 apache 知道 port 80/443 要分配給 Virtual Host, 所以要有 NameVirtualHost *:80, NameVirtualHost *:443 兩筆記錄 (如果有很多 ip, 而且要拆開指定的話,把 ip 代入*)
  3. 除了預設 (不在 <VirtualHost> 標籤對裡) 以外,每組網頁伺服器都要分別用 Virtual Host 指定。例:
    我有一個 ip 並且把 clifflu.net, www.clifflu.net, blog.clifflu.net 都指上去;我希望 clifflu.net 會自動指到 www.clifflu.net, 而 blog.clifflu.net 是一個獨立的網站;上面的每個 DN 都要可以吃 http & https -> 需要建六組 Virtual Host 標籤
  4. Apache (或者是 aws 上的 apache XD) 相當聰明,可以認出 VirtualHost *:443 應該要用 SSL;只要在每個 <VirtualHost> 標籤裡加上 SSL 相關 Entry (SSLEngine, SSLCertificateFile, SSLCertificateKeyFile),就能使用指定的 crt 回應網址哩;別忘了  <VirtualHost> 最基本的 ServerName 和 DocumentRoot (or Redirect) 就是了
  5. 只用 self-signed crt 的話,會需要三組;在 https://clifflu.net 的部份,雖然只是轉址給 https://www.clifflu.net,但還是需要自己的一組 crt,真煩。
  6. 有另一招叫 wildcard SSL Certificate, 可以用一個 crt 搞定 (blog|www).clifflu.net, 不過我不知道怎麼簽,而且 clifflu.net 不接受簽給 *.clifflu.net 的 crt (夠爛的) ,所以還是要簽兩組~

發表迴響

分類

%d 位部落客按了讚: