Skip to content

設定SSL Https & HSTS

lululala edited this page Feb 3, 2017 · 1 revision

有兩種方法 一種在 application server 上設定,另一種在 load-balance (ELB) 上設定

ihower大大這個是在nginx設定 https://ihower.hackpad.com/Deploy-Rails-on-Ubuntu-j8zYjjMpHth

而以下方法是在ELB上設定

1. 用server 的private key 私鑰匙產生csr檔給SSL供應商

openssl req -new -sha256 -key your-key.key -out your-key.csr

中間會要求輸入 Common Name 、Organization Name、Organizational Unit ....等等一堆基本資料 全部都要填!!!!!

填完之後供應廠商會回覆一個 Public Certificate 給妳

2. 用廠商回覆的public Certificate在下面這個網站產生Certificate chain

https://whatsmychaincert.com/ Test Your Server 的欄位填入 你的網域名稱 Generate the Correct Chain 的欄位填入廠商給你的public key 然後勾選 Include Root Certificate 再按產生 下載的這把key就是 Certificate chain

3. 產生完在ELB的security設定中填上

選擇new SSL Certificate 名字隨便取 private key 填入 當初用來產生CSR的private key public key 填入 廠商寄回來的Certificate certificate chain 填入 經由第二步驟產生的 key

4. 之後都下一步下一步

HSTS 也有兩種做法但都是在nginx設定 但是不要使用 rewrite ^(.*)$ https://$host$1 permanent; 這個設定 因為這是request到了server才知道要轉跳這樣就多吃request

最好的方法用這個 https://developer.mozilla.org/en-US/docs/Web/Security/HTTP_strict_transport_security 這是在瀏覽器的時候就自動轉跳 就不會再跑到server多一個request

##5.server掛載在ELB下面之後 ELB都設定好之後 用nslookup查AWS給的DNS 會查到有兩組IP 再去DNS後台把 A 、 CNAME 紀錄分別設成這兩組IP 不能設同一個不然會壞掉