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