免費SSL證書
從AWS申請免費的SSL證書并對DKIM排錯
今天來給大家介紹一下使用AWS的免費工具申請SSL證書,以下各部分將討論如何使用 AWS Certificate Manager (ACM)控制臺來請求公有 ACM 證書。
請求公有證書
登錄 AWS 管理控制臺,并通過以下網(wǎng)址打開 ACM 控制臺:https://console.aws.amazon.com/acm/home。
在下圖可以看出分為預(yù)置證書和私有證書兩種,個人用戶選用預(yù)制證書就可以,私有頒發(fā)機構(gòu)為運營類型,所以個人用戶基本不用這類。
在下面在 申請證書 頁面上,鍵入您的域名。您可以使用完全限定域名 (FQDN)(例如 Example Domain),或者頂級域名(例如 Example Domain)。您還可以在最左側(cè)位置使用星號 (*) 作為通配符來保護同一域中的多個站點名稱。
必須先確認您擁有或可以控制請求中指定的所有域名,然后 Amazon 證書頒發(fā)機構(gòu) (CA) 才能為網(wǎng)站頒發(fā)證書。請求證書時,您可以選擇電子郵件驗證或 DNS 驗證。
從DNS驗證
下面我們主要討論使用 DNS 驗證。
選擇 DNS驗證。選擇 審核在 驗證 頁面上,展開域名信息或選擇 下載的驗證文件。如果展開域信息,ACM 會顯示您必須添加到 DNS 數(shù)據(jù)庫中的 CNAME 記錄的名稱和值以驗證您是否控制該域。
記錄包含兩部分:名稱和標簽。ACM 生成的 CNAME 的名稱部分是由一個下劃線字符 (_),后跟一個令牌(這是綁定到您的 AWS 賬戶和域名的唯一字符串)構(gòu)建的。ACM 在您的域名前加上下劃線和令牌來構(gòu)建名稱部分。ACM 通過一個下劃線字符,其后跟一個不同的令牌來構(gòu)建標簽,此令牌也與您的 AWS 賬戶和域名綁定。ACM 在下劃線和令牌后加上 AWS 用于驗證的 DNS 域名:AWS Certificate Manager - Amazon Web Services (AWS)。以下示例顯示了 Example Domain、subdomain.example.com 和 *.example.com 的 CNAME 格式。
添加包含域名 的 CNAME 記錄可能會導(dǎo)致域名重復(fù)。要避免重復(fù),您可以僅手動復(fù)制所需的 CNAME 部分。其格式為 _3639ac514e785e898d2646601fa951d5(下面我們會詳細解釋)。更新 DNS 配置后,選擇繼續(xù)。ACM 會顯示一個表格視圖,其中包含您的所有證書。它顯示了您請求的證書及其狀態(tài)。在 DNS 提供商傳播您的記錄更新后,ACM 最多需要幾個小時來驗證域名并頒發(fā)證書。在此期間,ACM 顯示驗證狀態(tài)為等待驗證。驗證域名后,ACM 將驗證狀態(tài)更改為成功。AWS 頒發(fā)證書后,ACM 將證書狀態(tài)更改為已頒發(fā)。
最后就可以成功地申請到自己的免費證書了
由于驗證時間一般需要1-24小時不等,所以下面就不進行展示了
如何正確設(shè)置DKIM
什么是DKIM,DKIM代表DomainKeys Identified Email。它提供了一種方法來驗證發(fā)送電子郵件的組織是否有權(quán)這樣做。DKIM需要在DNS區(qū)域中添加公鑰。關(guān)鍵是通常由發(fā)送您的電子郵件,例如組織提供給您SendGrid,郵戳。密鑰將作為TXT記錄直接插入您的區(qū)域,或者它將是指向提供商DNS中密鑰的CNAME。我在做這篇Blog時發(fā)現(xiàn)一個問題,就是關(guān)于在DNS中加入CNAME時,有些DNS提供商不能夠使用下劃線開頭,提示主機名類型不符。
SES創(chuàng)建的記錄是CNAME而不是TXT記錄,因此SES可以托管簽名密鑰。通過托管簽名密鑰,SES可以自動輪換簽名憑據(jù)并降低任何密鑰泄漏的風(fēng)險。
某些DNS提供商不支持添加包含下劃線的CNAME記錄,盡管RFC特別允許這樣做。但是,DKIM規(guī)范要求記錄名稱中的下劃線,因此刪除下劃線不是一種選擇。下劃線是記錄名稱中唯一不受SES或其客戶控制的部分。
雖然在Internet標準中不允許在dnsNames中使用下劃線字符,但在TLS / SSL證書的SAN字段中使用時,也一直被視為灰色區(qū)域。如果在咱們的DNS商中發(fā)生此類事件的話,可以使用以下的方法進行解決:
第一種 解決方案可以更改DNS提供商。Amazon Web Services提供名為Amazon Route 53的可擴展域名服務(wù),該服務(wù)遵循RFC強加的標準并允許SES生成的CNAME記錄。使用SES與Route 53集成。如果您在Route 53上使用與SES相同的AWS賬戶設(shè)置域名,則可以通過一鍵式過程設(shè)置域驗證和DKIM。
第二種 方法是使用子域(例如我們的例子中的sales.ses-example.com)進行電子郵件發(fā)送,并將其委托給DNS提供商,例如Amazon Route 53,它正確地允許CNAME記錄中的下劃線。然后,您可以使用與在主域上執(zhí)行的相同步驟在子域上執(zhí)行域驗證和DKIM驗證過程。電子郵件將被DKIM簽名,但"發(fā)件人"地址將包含子域(在我們的例子中,"發(fā)件人"地址將是
第三種 選擇使用自己進行簽名。這將使您完全控制密鑰和簽名過程,但實現(xiàn)和維護需要更多的工作。
最后,您可以找DNS提供商,讓他們在RFC允許的CNAME記錄中正確支持添加對下劃線。
對于我們的域名,我們假設(shè)我們的DNS提供商已經(jīng)啟用了對CNAME記錄中下劃線的支持,現(xiàn)在我們可以安全地添加DKIM文檔中指定的所需DNS條目。通過此步驟,我們現(xiàn)在等待SES向我們發(fā)送確認電子郵件,并在SES控制臺中將域的DKIM驗證狀態(tài)從Pending更改為已驗證,這將確認CNAME記錄是否存在。