在coudfront中使用自己的SSL證書

在coudfront中使用自己的SSL證書

使用cloudfront的時候你可以選擇使用cloudfront服務提供給你的ssl證書來實現https訪問你的資源,但這樣也僅限用https://xxxx.cloudfront.net/xx.jpg這樣的形式。
如果你將你的子域名CNAME到這個cloudfront域名上之後,你再通過https://your-domain-name/xx.jpg,瀏覽器會提示網頁資源不安全,這時候就得使用你自己域名的SSL證書。

    第一步,上傳你的cf證書

如果用web console的話,如果你是IAM用戶,你可能找不到上傳cf證書的位置,切換成root賬戶,點開右上角的下拉菜單中的Security Credential,你就會看到上傳cf證書的位置,此處還有x.509證書的位置
上傳的時候,直接選擇你的public key,但是我試了幾遍都報錯說無法上傳,證書無效。放棄。用命令行上傳。
我用的命令如下:

aws iam upload-server-certificate \
    --server-certificate-name wall-et.net \
    --certificate-body file://wall-et.net.pem \
    --private-key file://wall-et.net.key \
    --certificate-chain file://wall-et.net.chains.pem \
    --path /cloudfront/

報錯了

A client error (MalformedCertificate) occurred when calling the 
UploadServerCertificate operation: Unable to validate certificate 
chain. The certificate chain must start with the immediate signing 
certificate, followed by any intermediaries in order. 
The index within the chain of the invalid certificate is: 2

考慮到這三個key文件在上傳ELB的SSL證書的時候是可用的,又考慮到ELB出的certificate chain是可選項,推斷這裏也是可選項,於是就去掉

aws iam upload-server-certificate \
    --server-certificate-name wall-et.net \
    --certificate-body file://wall-et.net.pem \
    --private-key file://wall-et.net.key \
    --path /cloudfront/
    第二步,在CF distribution中修改設置

在SSL Certificate那裏選擇 Custom SSL Certificate(stored in AWS IAM),然後從後面的下拉菜單中選擇就好,選擇使用自定義證書之後,會讓從兩種Custom SSL Client Support中選擇
All Clients,這個選項支持所有客戶端,包括不支持Server Name Indication(SNI)的舊客戶端,這個是收費的,不過也不太貴,幾百刀每月的數量級,並且需要在線填寫申請表。他會爲cf邊緣節點分配專用IP。

“專用 IP 自定義 SSL 分配專用 IP 地址來服務於每個 CloudFront 節點處的 SSL 內容。因爲 IP 地址與 SSL 證書之間是一對一映射,所以專用 IP 自定義 SSL 使用的是不支持 SNI 的瀏覽器和其他客戶端。由於當前的 IP 地址成本,專用 IP 自定義 SSL 的費用是每月 600 USD,按比例分配到每個小時。”

Only Clients that support SNI,這個就不支持比較老的客戶端了,具體的見文章後面的FAQ。爲了省點預算,我選的這種。
完成配置之後,大概等了那麼3分鐘左右就生效了。

FAQs: 問:什麼是服務器名稱指示SNI? 服務器名稱指示 (SNI) 是傳輸層安全性 (TLS) 協議的延伸。該機制識別相關 SSL 請求相關的域(服務器名稱)以便在 SSL 握手時使用適當的證書。這允許單個 IP 地址用於多個服務器。SNI 要求瀏覽器支持添加服務器名稱,儘管大部分現代瀏覽器支持,但是還有一些老式瀏覽器不能支持。 問:哪些瀏覽器支持SNI? SNI 自定義 SSL 可使用大部分現代瀏覽器,包括 Chrome V 6 和更高版本(運行於 Windows XP 和更高版本或 OS X 10.5.7 和更高版本上之上)、Safari V 3 和更高版本(運行於 Windows Vista 和更高版本或 Mac OS X 10.5.6. 和更高版本之上)、Firefox 2.0 和更高版本,以及 Internet Explorer 7 和更高版本(運行於 Windows Vista 和更高版本之上)。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章