æ—©å‰æˆ‘写了一篇给这个åšå®¢ä½¿ç”¨ Let’s Encrypt 实现 SSL 的方法。最近看到一篇介ç»å¦‚何给(国际版)Microsoft Azure ä¸è¿è¡Œçš„ç½‘ç«™æ·»åŠ Let’s Encrypt SSL çš„æ–‡ç« ï¼Œæ„Ÿè§‰æŒºå®žç”¨ï¼ŒæŠ½ç©ºç¿»è¯‘å‡ºæ¥å¸Œæœ›èƒ½å¯¹å¤§å®¶æœ‰æ‰€å¸®åŠ©ã€‚å¦å¤–如果对 SSL åŠ å¯†ç½‘ç«™å’Œè¯ä¹¦å…¨æ— 了解,也建议读读我早å‰å†™çš„这篇有关 12306 æ ¹è¯ä¹¦çš„æ–‡ç« 。
======
这个世界到底怎么了?我说的就是è¯ä¹¦é¢å‘机构 (CA)。看看 Windows 10 计算机上都有多少å—ä¿¡ä»»çš„æ ¹ CA å§ï¼š
è®¡ç®—æœºé‡Œæœ‰è¿™ä¹ˆå¤šæ ¹ CA,主è¦ç›®çš„在于帮助æµè§ˆå™¨ç¡®å®šå“ªäº›ç½‘站的 SSL è¯ä¹¦æ˜¯æœ‰æ•ˆçš„ã€‚è™½ç„¶æ ¹ CA 还有其他用途但并ä¸åœ¨æœ¬æ–‡çš„考虑ä¸ã€‚
ä¿®è®¢ï¼šæ ¹æ® Tom 在评论ä¸çš„说法,æ“ä½œç³»ç»Ÿè¿˜å¿…é¡»ä¿¡ä»»æ•°ç™¾ä¸ªå…¶ä»–æ ¹è¯ä¹¦ã€‚å¾®è½¯åœ¨å¾®è½¯ä¿¡ä»»çš„æ ¹è¯ä¹¦æ–¹æ¡ˆé¡µé¢ä¸Šä»‹ç»äº†è¿™ä¸ªé—®é¢˜ã€‚
æˆ‘æƒ³è¯´çš„å°±æ˜¯è¿™ä¸ªæ„æ€ï¼šå¦‚æžœ QuoVadis(一家 CA ——译注)è¦ä¸ºæƒ³ç”¨ HTTPS æä¾›æœåŠ¡çš„ç½‘ç«™é¢å‘è¯ä¹¦ï¼Œæµè§ˆå™¨ä¼šå¯¹è¿™ä¸ªè¯ä¹¦è¿›è¡ŒéªŒè¯å¹¶éžå¸¸é«˜å…´åœ°æŽ¥å—该è¯ä¹¦ã€‚我也ä¸çŸ¥é“è¿™å®¶å…¬å¸æ˜¯ä»€ä¹ˆäººçš„,维基百科让我大致了解了这家(总部ä½äºŽç™¾æ…•大群岛的)公å¸ï¼Œé‡ç‚¹åœ¨äºŽè¿™å®¶å…¬å¸å¯¹äºŽæˆ‘的计算机å¯ä»¥ä¿¡ä»»å“ªäº›ç½‘站有很大的控制æƒï¼Œè€Œç±»ä¼¼è¿™æ ·çš„ CA è¿˜æœ‰å¥½å‡ å个。
这个行业还有其他更知å的公å¸ï¼Œä¾‹å¦‚ Comodoã€‚è¯´è¿™å®¶å…¬å¸æ›´çŸ¥åï¼Œæ˜¯å› ä¸ºæ•´ä¸ªäº’è”网上超过 40% çš„è¯ä¹¦éƒ½æ˜¯ä»–们é¢å‘的,这一份é¢å‡ 乎是亚军(Symantec,23%)的一å€ï¼Œå£å†›ï¼ˆGoDaddy,10%)的四å€ï¼è¯ä¹¦å¯æ˜¯ä¸ªå¤§ä¸šåŠ¡ï¼ŒComodo 在这一领域éžå¸¸æˆåŠŸï¼š
è¿™æ ·çš„ä»·æ ¼å‡ ä¹Žä¹Ÿæ˜¯è¿™ä¸ªè¡Œä¸šçš„ã€Œè¡Œä¸šæƒ¯ä¾‹ã€ã€‚StartCom æ¯å¹´ 60 美元,GoDaddy æ¯å¹´ 70 美元,其他厂商ä¸åŒç±»åž‹çš„è¯ä¹¦ä»·æ ¼ä¹Ÿå„ä¸ç›¸åŒã€‚这个产业有ç€ä¸°åŽšçš„åˆ©æ¶¦ï¼ŒCA 们自然希望牢牢地抓在自己手里。他们太想维护自己的利益,以至于 Comodo 曾ç»è¯•图将 Let’s Encrypt çš„åå—æ³¨å†Œæˆè‡ªå·±çš„å•†æ ‡ï¼Œè¿™å¯¹è¿™å®¶æ–°æˆç«‹çš„公叿˜¯ä¸ªä¸å°çš„å¨èƒã€‚ä¹Ÿè®¸å…‰è¿™æ ·åšè¿˜ä¸å¤Ÿï¼ŒComodo çš„ CEO å¯¹è‡ªå®¶å…¬å¸æŠ¢æ³¨ Let’s Encrypt å•†æ ‡çš„è¡Œä¸ºåšè¾©è§£æ—¶ç”šè‡³è¯´ã€Œä½ æ€Žä¹ˆè¯æ˜Žè¿™æ˜¯ä»–们胡编的?ã€ã€‚最åŽä»–们æ„识到自己彻底误导了整个市场,他们的所有行为åªèƒ½ç§°ä¹‹ä¸ºã€Œæ··è›‹å𿳕ã€ï¼ŒäºŽæ˜¯æœ€ç»ˆä¹Ÿæ‰“消了这一念头。
æŽ¥ç€æ¥äº†è§£ä¸€ä¸‹ Let’s Encrypt å§ï¼Œè¿™å®¶å…¬å¸ä¸ºä»€ä¹ˆä¼šè®©è¡Œä¸šå¤§ä½¬ä»¬ä¸çˆ½ï¼Ÿå…¶å®žæ•´ä¸ª CA çš„è¿ä½œæ¨¡å¼è¿‡åŽ»åœ¨å¤„ç†æœ‰å…³è¯ä¹¦çš„业务时å˜åœ¨å¥½å‡ 个问题:
1. 定价æé«˜äº†é—¨æ§›ã€‚虽然æ¯å¹´åªè¦å‡ å美元,但很多人ä¾ç„¶ä¹°ä¸èµ·ã€‚
2. é…置过程ç¹ç。å¯ä»¥é˜…读我之å‰å†™çš„为 Azure ç½‘ç«™æ·»åŠ å…è´¹ SSL è¯ä¹¦æ“作指å—ä¸€æ–‡ï¼Œå¯¹äºŽæ•´ä¸ªè¿‡ç¨‹ä½ å¯èƒ½æ ¹æœ¬æ„Ÿå—ä¸åˆ°ä»»ä½•ä¹è¶£ï¼Œæˆ–è€…è§‰å¾—è¿™æœ¬èº«å°±ä¸æ˜¯ä¸ªå®¹æ˜“的事。
3. è¯ä¹¦éœ€è¦ç»è®¢ã€‚上述ç¹ççš„æ“ä½œéœ€è¦æŒç»è¿›è¡Œï¼Œè€Œä¸”éœ€è¦æŒç»ä»˜è´¹ã€‚人都是å¥å¿˜çš„,我们ç»å¸¸ä¼šå¬åˆ°æœ‰äººå› 为忘了ç»è®¢å¯¼è‡´è‡ªå·±çš„è¯ä¹¦è¿‡æœŸæ‰€äº§ç”Ÿçš„æ‚²å‰§ã€‚
Let’s Encrypt çš„æˆç«‹å°±æ˜¯ä¸ºäº†è§£å†³è¿™äº›é—®é¢˜ï¼Œä»–们网站上的横幅广告已ç»è¯´çš„很清楚了:
我打算直接引用他们「关于ã€é¡µé¢ä¸Šçš„ä»‹ç»æ¥è¯´æ˜Žä»–ä»¬çš„åšæ³•:
- å…费:任何有域å的人都å¯ä»¥é€šè¿‡ Let’s Encrypt ä¸èŠ±é’±èŽ·å–å¯ä¿¡ä»»çš„è¯ä¹¦ã€‚
- 自动:Web æœåŠ¡å™¨ä¸Šè¿è¡Œçš„软件å¯ä»¥è”ç³» Let’s Encrypt 自动获å–è¯ä¹¦ï¼Œå®‰å…¨åœ°è¿›è¡Œé…置,并自动完æˆç»è®¢æ“作。
- 安全:Let’s Encrypt 是一个先进的 TLS 安全最佳实践平å°ï¼Œå®ƒä¸ä»…是先进的 CA,还能帮助网站è¿è¥è€…为自己的æœåС噍æä¾›æ°å½“çš„ä¿æŠ¤ã€‚
- 逿˜Žï¼šè¯ä¹¦çš„æ‰€æœ‰é¢å‘å’ŒåŠé”€æ“作都会公开记录,并供任何人查阅。
- 开放:自动化的é¢å‘å’Œç»è®¢å议将æˆä¸ºä¸€é¡¹å¼€æ”¾æ ‡å‡†ï¼Œä»»ä½•人都å¯ä½¿ç”¨ã€‚
- åˆä½œï¼šä¸Žäº’è”网底层å议本身类似,Let’s Encrypt 也是通过åˆä½œè®©æ•´ä¸ªç¤¾åŒºèŽ·ç›Šçš„äº§ç‰©ï¼Œä¸å—任何一个组织的控制。
简而言之,这是一ç§è‡ªåŠ¨å®‰è£…å’Œç»è®¢è¯ä¹¦çš„æ–¹æ³•,而用户ä¸ç”¨ä¸ºæ¤èŠ±ä¸€åˆ†é’±ã€‚è¿™ç§è¯ä¹¦ä¸Ž Comodo(倒是别被他们的说法迷惑了)之类的è¯ä¹¦ä¸€æ ·å®‰å…¨ï¼Œè‡ªä»ŽåŽ»å¹´åº•å‘布åŽè‡³ä»Šå·²ç»é¢å‘了超过五百万个è¯ä¹¦ï¼Œè¿™è¶³ä»¥è¯æ˜Žè¯¥æœåŠ¡çš„ç¨³å®šå’Œå¯ä¿¡ã€‚他们é¢å‘çš„è¯ä¹¦æœ‰æ•ˆæœŸåªæœ‰ä¸‰ä¸ªæœˆï¼Œä½†é‰´äºŽå¯ä»¥è‡ªåЍç»è®¢è¿™ä¹Ÿç®—ä¸å¾—什么大问题,åªè¦åœ¨æ°å½“的时间æ¢ç”¨æ–°è¯ä¹¦å°±è¡Œäº†ã€‚
本文介ç»çš„æ–¹æ³•将使用 Azure Let’s Encrypt 网站扩展。该扩展æä¾›äº†ä¸€äº›å®žç”¨çš„æ–‡æ¡£ï¼Œæœ¬æ–‡å°†æŒ‰ç…§æ–‡æ¡£çš„介ç»è¿›è¡Œæ“作,感谢该扩展的开å‘者为大家æä¾›çš„帮助。æ¤å¤–本文还将介ç»ä¸€äº›æˆ‘è®¤ä¸ºä¸Žæ¤æœ‰å…³çš„æ³¨æ„事项,例如对 SSL çš„ç†è§£ä»¥åŠ Let’s Encrypt åœ¨å…¶ä¸æ‰®æ¼”的角色。å¦å¤–æˆªæ¢æˆ‘å†™è¿™ç¯‡æ–‡ç« æ—¶ï¼Œæˆ‘è¿˜ä»Žæœªå®žé™…éƒ¨ç½²è¿‡ Let’s Encrypt è¯ä¹¦ï¼Œå› æ¤åœ¨æ’°å†™æœ¬æ–‡çš„è¿‡ç¨‹ä¸æˆ‘也å¦åˆ°äº†å¾ˆå¤šæ–°çŸ¥è¯†ï¼Œå¸Œæœ›èƒ½å¯¹ä»–人有所帮助ï¼
相关背景介ç»å®ŒåŽï¼Œä¸€èµ·çœ‹çœ‹è¯¥æ€Žæ ·æ“作å§ã€‚
å‰æè¦æ±‚
下列æ“作将针对 Azure ç½‘ç«™æ‰§è¡Œï¼Œå› æ¤é¦–先需è¦å…·å¤‡ä¸€ä¸ªè¿™æ ·çš„网站。这是一ç§å¾ˆå¥½ç”¨çš„ PaaS 网站æœåŠ¡ï¼Œæˆ‘è‡ªå·±çš„ Have I been pwned 网站就è¿è¡Œåœ¨è¯¥æœåŠ¡ä¸Šã€‚ç„¶è€Œåœ¨ä¸‹æ–‡çš„æ“ä½œä¸æˆ‘将为å¦ä¸€ä¸ªç½‘ç«™ Hack Yourself First æ·»åŠ è¯ä¹¦ï¼Œè¿™æ˜¯ä¸€ä¸ªåŒ…å«å¾ˆå¤šæ¼æ´žçš„实验用网站,我的很多 Pluralsight è¯¾ç¨‹å’Œç ”è®¨ä¼šä¸Šéƒ½ä¼šä»¥è¿™ä¸ªç½‘ç«™ä¸ºä¾‹ã€‚è¯¥ç½‘ç«™åŽŸæœ¬ä½¿ç”¨çš„ StartCom è¯ä¹¦éœ€è¦ç»è®¢äº†ï¼Œå› æ¤æˆ‘å†³å®šå¹²è„†æ¢æˆ Let’s Encrypt。
æ¤å¤–还需è¦ä¸€ä¸ª Azure å˜å‚¨å¸æˆ·ã€‚在下列æ“作的最åŽå‡ æ¥è¿è¡Œ WebJob 时需è¦ä½¿ç”¨å˜å‚¨å¸æˆ·ä¿å˜æ—¥å¿—。创建 Azure 网站åŽï¼Œä½ å¯èƒ½å·²ç»æœ‰äº†æ‰€éœ€çš„å˜å‚¨å¸æˆ·ï¼Œä½†å¦‚果还没有å¯ä»¥é¦–先设置一个。下列æ“作需è¦çš„å˜å‚¨å®¹é‡å¾ˆä½Žï¼Œç›¸åº”çš„å˜å‚¨è´¹ç”¨å‡ 乎å¯ä»¥å¿½ç•¥ä¸è®¡ï¼ˆæ¯æœˆåªéœ€è¦å‡ åˆ†é’±ï¼‰ï¼Œå› æ¤ä¸ç”¨éžè´¹ç”¨å‘æ„。
准备好这些就够了,接下æ¥ä¸€èµ·ç»™ Azure 网站é…ç½® Let’s Encrypt è¯ä¹¦å§ã€‚
创建一个 Azure æœåС䏻体
还记得 Let’s Encrypt 是如何实现「自动化ã€çš„å—?è¦å®žçŽ°è¿™ä¸€åˆ‡ï¼Œæˆ‘ä»¬éœ€è¦ä½¿ç”¨æŸä¸ªèº«ä»½åœ¨ Azure ä¸è¿è¡Œä¸€ä¸ªè¿›ç¨‹ï¼Œä¸ºæ¤éœ€è¦å…·å¤‡ Active Directory æœåŠ¡ä¸»ä½“ã€‚ç®€å•æ¥è¯´è¿™ä¸ªä¸»ä½“类似于现有 AD 环境ä¸çš„一个用户(任何具备 Azure 叿ˆ·çš„äººå·²ç»æœ‰è¿™æ ·çš„ç”¨æˆ·äº†ï¼‰ï¼Œè¯¥ç”¨æˆ·å¯æä¾›è®¾ç½® Let’s Encrypt è¯ä¹¦æ‰€éœ€çš„æƒåŠ›ã€‚
在撰写本文时这些æ“作ä¾ç„¶éœ€è¦é€šè¿‡è€ç‰ˆé—¨æˆ·ï¼ˆæˆ–者按照微软的称呼「ç»å…¸é—¨æˆ·ã€ï¼‰æ‰§è¡Œæ“作。如果愿æ„ä½ ä¹Ÿå¯ä»¥ç”¨ PowerShell,下文将使用图形界é¢ã€‚首先从左侧的导航æ 开始:
ç›®å‰æˆ‘çš„ AD ä¸å¯ä»¥çœ‹åˆ°è¿™äº›å†…容:
æ‰“å¼€ä¸Šè¿°å¸æˆ·é¡¹ï¼Œå¹¶æ‰“开现有应用程åºé€‰é¡¹ï¼š
éšåŽéœ€è¦é€šè¿‡é¡µé¢åº•éƒ¨çš„ã€Œæ·»åŠ ã€æŒ‰é’®ä¸º Let’s Encrypt æ·»åŠ ä¸€ä¸ªæ–°çš„åº”ç”¨ç¨‹åºï¼š
将这个应用的类型设置为「我的组织æ£åœ¨å¼€å‘çš„ã€ï¼š
éšåŽè®¾ç½®ä¸€ä¸ªæ˜“于ç†è§£çš„å称:
接ç€éœ€è¦å®šä¹‰ä¸€ç³»åˆ— URL,这些 URL 通常å¯ç”¨äºŽå†³å®šå¦‚何登录到所创建的 AD åº”ç”¨ã€‚ä½†å…¶å®žæˆ‘ä»¬æ ¹æœ¬ä¸éœ€è¦ä½¿ç”¨è¿™äº›åœ°å€ï¼Œå› æ¤å¯ä»¥éšæ„在这里输入任何有效的 URL,例如:
éšåŽè¿˜éœ€è¦å…许执行 Let’s Encrypt 的网站扩展使用这个æœåŠ¡ä¸»ä½“ç™»å½•ï¼Œä¸ºæ¤éœ€è¦å‡†å¤‡ä¸¤ä¸ªä¸œè¥¿ã€‚首先是刚æ‰åˆ›å»ºçš„应用的客户端 IDï¼Œè¿™ä¸ªä¿¡æ¯æ˜¾ç¤ºåœ¨å¯¼èˆªèœå•的「é…ç½®ã€é€‰é¡¹ä¸‹æ–¹ï¼š
其次还需è¦ç”¨äºŽå¯¹å®¢æˆ·ç«¯ä¸»ä½“进行身份验è¯çš„密钥,将上述页é¢å‘ä¸‹æ‹–åŠ¨ï¼Œæ·»åŠ ä¸‹åˆ—å†…å®¹ï¼š
按照上图ä¸çš„介ç»ï¼Œç‚¹å‡»ä¿å˜æŒ‰é’®å³å¯èŽ·å¾—èƒ½å¤Ÿå¤åˆ¶çš„å€¼ï¼Œè¯·è®°å½•è¿™äº›å€¼ã€‚è‡³æ¤æœåŠ¡ä¸»ä½“çš„é…置已完æˆã€‚
å…许该æœåŠ¡ä¸»ä½“è®¿é—®èµ„æºç»„
简å•地介ç»ä¸€ä¸‹ã€ŒAzure 的层次结构ã€ï¼š
- ä½ æœ‰ä¸€ä¸ª Azure 叿ˆ·ã€‚
- è¯¥å¸æˆ·å¯èƒ½å…³è”了多个订阅。
- 一个订阅å¯ä»¥æœ‰å¤šä¸ªèµ„æºç»„。
- 一个资æºç»„ä¸å¯ä»¥åŒ…å«å¾ˆå¤šèµ„æºã€‚
è®°ä½è¿™äº›å°±å¤Ÿäº†ã€‚ä¸è¿‡è¿™äº›æ¦‚念混åˆåœ¨ä¸€èµ·è¿˜æ˜¯æŒºä¹±çš„。实际上对于这个问题åªè¦ç¡®ä¿èµ„æºç»„的命å符åˆä¸€å®šçš„逻辑就行,å¦åˆ™èµ„æºç»„å¾ˆå®¹æ˜“å¤±æŽ§ï¼ˆä½ çŒœæˆ‘æ˜¯æ€Žä¹ˆçŸ¥é“çš„â€¦ï¼‰å¹¶æ˜¾å¾—æ›´åŠ æ··ä¹±ã€‚éœ€è¦æ³¨æ„的是,一个资æºç»„ä¸åŒ…å«çš„æ˜¯é€»è¾‘上相互有关è”的资æºï¼ˆä¾‹å¦‚属于åŒä¸€ä¸ªé¡¹ç›®çš„ç½‘ç«™ã€æ•°æ®åº“ã€å˜å‚¨ç‰ï¼‰ï¼ŒéšåŽè¿˜å¯ä»¥ç»™è¿™æ ·çš„组分é…基于角色的访问控制。
ç»§ç»ã€‚æˆ‘ä»¬è¦æ“作的是承载了这个应用æœåŠ¡çš„èµ„æºç»„,其实也就是用于è¿è¡Œè¿™ä¸ªç½‘站的逻辑计算机,å¦å¤–ä½ ä¼šçœ‹åˆ°è¿™ä¸ªç½‘ç«™æœ¬èº«ä¹Ÿå·²ç»åœ¨è¿™é‡Œäº†ã€‚å› ä¸ºæˆ‘è‡ªå·±ä¹Ÿç»å¸¸ä¸æ„¿æ„éµå®ˆè‡ªå·±å‘Šè¯‰åˆ«äººçš„建议,我的资æºç»„ä¾ç„¶ä½¿ç”¨äº†ã€ŒDefault-Web-WestUSã€è¿™æ ·çš„默认å称。点击两个å°äººå¤´åƒçš„æŒ‰é’®æ‰“开该资æºç»„的访问控制选项:
éšåŽéœ€è¦æ·»åŠ ä¸€ä¸ªç”¨æˆ·ï¼Œå€Ÿæ¤è®¾ç½®æœåŠ¡ä¸»ä½“ï¼š
ç»§ç»æ‰“开这个角色并选择「å‚与者ã€ï¼Œç„¶åŽæ·»åŠ ä¸€ä¸ªç”¨æˆ·å¹¶è¾“å…¥è¯¥æœåŠ¡ä¸»ä½“çš„å称。这一æ¥å¾ˆé‡è¦ï¼Œå› 为这里并ä¸ä¼šè‡ªåŠ¨åˆ—å‡ºæœåŠ¡ä¸»ä½“ã€‚è¯·æŒ‰ç…§ä¸‹å›¾æ˜¾ç¤ºçš„æ–¹æ³•è®¾ç½®ï¼š
选ä¸å¹¶ç‰å¾…片刻,很快å¯ä»¥çœ‹åˆ°ä¸€æ¡æ“作æˆåŠŸçš„é€šçŸ¥ä¿¡æ¯ï¼š
现在这个æœåŠ¡ä¸»ä½“å¯¹äºŽè¦é…ç½®è¯ä¹¦çš„网站所在的资æºç»„有了足够的æƒåŠ›ã€‚ä¸è¿‡åœ¨è®¾ç½® Let’s Encrypt 之å‰è¿˜æœ‰æœ€åŽä¸€ä¸ªå·¥ä½œéœ€è¦å®Œæˆã€‚
é…ç½®å˜å‚¨å¸æˆ·
ä¸Šæ–‡å‰æè¦æ±‚ä¸æè¿‡è¿˜è¦å‡†å¤‡ä¸€ä¸ªå˜å‚¨å¸æˆ·ã€‚除æ¤ä¹‹å¤–还需è¦å¯¹ç½‘站进行é…置,以便让网站上è¿è¡Œçš„ WebJobs å¯ä¸Žå˜å‚¨å¸æˆ·é€šä¿¡ã€‚å¦‚æžœä½ æ›¾ç”¨è¿‡ WebJob,相关æ“作其实很简å•,但还是完整介ç»ä¸€ä¸‹å§ã€‚
打开å˜å‚¨å¸æˆ·ï¼Œå¤åˆ¶ä¸»è¦è¿žæŽ¥å—符串:
éšåŽæ‰“å¼€è¦å®‰è£…è¯ä¹¦çš„网站的é…置界é¢ï¼Œå¹¶åˆ›å»ºä¸¤ä¸ªè¿žæŽ¥å—符串,å称分别是「AzureWebJobsDashboardã€å’Œã€ŒAzureWebJobsStorageã€ï¼Œå°†ä¹‹å‰ä»Žå˜å‚¨å¸æˆ·å¤åˆ¶çš„值作为这两个å—符串的值,并将其é…置为「自定义ã€è¿žæŽ¥å—符串:
Azure 本身的设置已ç»å®Œæˆï¼ŒéšåŽå¼€å§‹é…ç½® Let’s Encrypt。
é…置网站扩展
从这里开始真æ£é…ç½® Let’s Encrypt,之å‰çš„æ“ä½œéƒ½ç®—æ˜¯å‡†å¤‡å·¥ä½œã€‚é¦–å…ˆè¦è®¿é—® Kudu:
å¦‚æžœä½ å·²ç»åœ¨ä½¿ç”¨ Azure 网站æœåŠ¡ä½†æ²¡ç”¨è¿‡ Kuduï¼Œå…¶å®žä½ å·²ç»é”™è¿‡äº†è¿™é‡Œæä¾›çš„很多好东西。本文ä¸å‡†å¤‡è¯¦ç»†ä»‹ç» Kudu,但åªè¦ä½ 访问 https://{ä½ çš„ç½‘ç«™åç§°}.scm.azurewebsites.net,éšåŽå°†èƒ½çœ‹åˆ°å¾ˆå¤šå¾ˆé…·çš„东西。其ä¸ä¹‹ä¸€å°±æ˜¯ç½‘ç«™æ‰©å±•ï¼Œåœ¨è¿™é‡Œä½ å¯ä»¥æ‰¾åˆ°ä»Šå¤©æˆ‘们è¦ä½¿ç”¨çš„「Azure Let’s Encrypt (x86)ã€æ‰©å±•:
点击「+ã€æŒ‰é’®ï¼ˆé™¤éžä½ 没有使用网站æœåŠ¡çš„é»˜è®¤è®¾ç½®å¹¶é€‰æ‹©ä½¿ç”¨ 64 使œåŠ¡ï¼Œå¦åˆ™è¯·åŠ¡å¿…é€‰æ‹© x86 版本)并安装。éšåŽå¯ä»¥é€šè¿‡çŠ¶æ€æ¡æŸ¥çœ‹å®‰è£…进度:
安装完毕åŽå°†æ˜¾ç¤ºã€ŒPlayã€æŒ‰é’®ï¼š
è¿™é‡Œéœ€è¦æ³¨æ„:点击「Playã€æŒ‰é’®åŽå¯èƒ½ä¼šçœ‹åˆ°ä¸€ä¸ªå¾ˆä¸å‹å¥½çš„错误信æ¯è¯´ã€ŒNo route registered for ‘/letsencrypt/’ã€ï¼Œé‡æ–°å›žåˆ° Azure 管ç†é—¨æˆ·ï¼Œæ‰¾åˆ°è¿™ä¸ªç½‘ç«™å¹¶å°†å…¶åœæ¢ï¼š
éšåŽé‡å¯åŠ¨è¯¥ç½‘ç«™ã€‚ä½†æ˜¯ä¸è¦ç›´æŽ¥ã€Œé‡å¯åЍã€è¯¥ç½‘站,为了让扩展生效,网站需è¦ç»åŽ†å®Œæ•´çš„å†·å…³é—/å¯åŠ¨å‘¨æœŸï¼Œå½“ç„¶è¿™ä¸€è¿‡ç¨‹ä¸ç½‘ç«™å°†è„±æœºå‡ ç§’é’Ÿã€‚å¯åŠ¨å®Œæ¯•åŽé‡æ–°æ‰“å¼€ç½‘ç«™æ‰©å±•ï¼Œå¹¶å†æ¬¡ç‚¹å‡»ã€ŒPlayã€æŒ‰é’®ï¼ŒéšåŽæ–°å¢žçš„æ‰©å±•应该就å¯ä»¥æ£å¸¸è¿è¡Œäº†ï¼š
这个页é¢ä¸Šåˆ—出了很多信æ¯ï¼Œå› æ¤æˆ‘ç›´æŽ¥å¼ºè°ƒå…¶ä¸æœ€é‡è¦çš„ï¼šéœ€è¦æŒ‰ç…§å±å¹•底部显示的键值对é…置该网站的应用设置。继ç»å‘下拉动页é¢å¯ä»¥çœ‹åˆ°ä¸€äº›ç©ºçš„å—æ®µï¼š
ç¨åŽå°†ä»‹ç»è¿™äº›é€‰é¡¹ï¼Œç›®å‰å…ˆæ”¾ç€ä¸åŠ¨ã€‚éšåŽçš„过程有些ç¹ç,我们需è¦ä»Žä¸åŒæ¥æºèŽ·å–多ç§ä¿¡æ¯ï¼Œå¹¶åœ¨ç½‘ç«™ä¸é…ç½®åº”ç”¨è®¾ç½®ï¼Œé€æ¸å°†ä¸Šå›¾åˆ—å‡ºçš„ç©ºç™½å—æ®µå¡«æ»¡ã€‚
首先是租户åç§°ï¼Œè¿™ä¸ªä¿¡æ¯æ˜¾ç¤ºåœ¨ Azure 管ç†é—¨æˆ·ï¼ˆè€Œéž Kudu 网站)å³ä¸Šè§’的用户身份èœå•ä¸ï¼š
租户å称类似于「{我的姓å}.onmicrosoft.comã€ï¼Œä½¿ç”¨è¿™äº›ä¿¡æ¯åˆ›å»ºçš„åº”ç”¨è®¾ç½®åº”è¯¥ç±»ä¼¼è¿™æ ·ï¼š
éšåŽæ˜¯è®¢é˜… ID,这个信æ¯ä¼šæ˜¾ç¤ºåœ¨å¾ˆå¤šä½ç½®ï¼Œæœ€ç›´æŽ¥çš„æ–¹æ³•是打开网站的「概è¦ã€çª—æ ¼æŸ¥çœ‹ï¼š
å¤åˆ¶è¿™ä¸ª ID å¹¶æ·»åŠ åˆ°åº”ç”¨è®¾ç½®ä¸ã€‚
接下æ¥çš„客户端 ID 和客户端密文这两项比较简å•,这两项æ¥è‡ªä¹‹å‰åˆ›å»ºçš„æœåŠ¡ä¸»ä½“ã€‚å°†è¿™ä¸¤é¡¹å†…å®¹å¡«å…¥åº”ç”¨è®¾ç½®çš„ç›¸åº”å—æ®µä¸ã€‚
éšåŽéœ€è¦è®¾ç½®èµ„æºç»„å称,这个å称也出现在很多地方,包括上文显示有订阅 ID 的截图ä¸ã€‚必须的信æ¯å°±æ˜¯è¿™äº›ï¼ŒæœåŠ¡è®¡åˆ’èµ„æºç»„å称这一项å¯ä»¥è·³è¿‡ã€‚设置完æˆåŽçœ‹èµ·æ¥åº”è¯¥æ˜¯è¿™æ ·ï¼š
ä¿å˜è¿™äº›è®¾ç½®ï¼Œè¿”回 Kudu 上的 Let’s Encrypt 网站扩展并刷新页é¢ã€‚åŽŸæœ¬ç©ºç©ºçš„å—æ®µå·²ç»å¡«å¥½äº†å†…容:
ç»§ç»æ‰§è¡Œæ“作点击「下一æ¥ã€ï¼ŒéšåŽå°†æ˜¾ç¤ºè¯¥ç½‘站的现有主机åå’Œ SSL ç»‘å®šç‰æ‘˜è¦ä¿¡æ¯ï¼š
ç»§ç»ç‚¹å‡»ã€Œä¸‹ä¸€æ¥ã€ï¼ŒéšåŽç»ˆäºŽå¯ä»¥å¼€å§‹ç”³è¯·è¯ä¹¦äº†ã€‚选择实际使用的主机å,输入邮件地å€ï¼Œç„¶åŽç”³è¯·å¹¶å®‰è£…è¯ä¹¦ï¼š
接ç€åªè¦ç‰å¾…就行… 仿佛ç‰å¾…äº†å‡ ä¸ªä¸–çºªï¼Œç›´åˆ°ï¼š
ç‰ç‰ï¼ŒçœŸè¿™ä¹ˆç®€å•å—?ï¼è™½ç„¶å‡†å¤‡å·¥ä½œä¸å°‘,但è¯ä¹¦æœ¬èº«çš„安装真的åªè¦ä¸€é”®ç‚¹å‡»å°±è¡Œï¼Ÿæ‰“开门户看看:
这里共有两个è¯ä¹¦ï¼Œæ²¡æœ‰é«˜äº®é€‰ä¸çš„那个将于 7 月 14 日过期,这个è¯ä¹¦æ˜¯ä¹‹å‰æåˆ°çš„ç”± StartCom é¢å‘的那个。选ä¸çš„这个是从 Let’s Encrypt 申请的新è¯ä¹¦ï¼Œå°†äºŽä¹‹åŽçš„å‡ ä¸ªæœˆè¿‡æœŸï¼ˆè¿™ç§è¯ä¹¦çš„å¯¿å‘½åªæœ‰ 90 天)。éšåŽå¯ä»¥çœ‹åˆ° SSL 绑定信æ¯ä¸æ˜¾ç¤ºçš„è¯ä¹¦æŒ‡çº¹ï¼Œå¹¶èƒ½è®¿é—®ç½‘站查看è¯ä¹¦çжæ€ï¼š
æˆåŠŸäº†ï¼è™½ç„¶èŠ±äº†äº›åŠŸå¤«ï¼Œä½†ä¸€åˆ‡éƒ½æŒ‰ç…§é¢„æœŸæ£å¸¸å·¥ä½œäº†ã€‚åšå®Œè¿™ä¸€åˆ‡åŽåˆ«å¿˜äº†è¯»è¯» Let’s Encrypt 的「工作原ç†ã€é¡µé¢ã€‚è¿™ç¯‡æ–‡ç« å¾ˆçŸï¼Œå¯ä»¥å¸®åŠ©ä½ ç†è§£ç½‘站如何与他们的æœåŠ¡é€šä¿¡ä»¥è¾¨è¯†è‡ªå·±çš„èº«ä»½å¹¶èŽ·å¾—è¯ä¹¦ã€‚
这个è¯ä¹¦ä¼šåœ¨å‡ 个月åŽè¿‡æœŸï¼ŒLet’s Encrypt 希望大家能自动对其更新,那么到底该怎么åšï¼Ÿä¸€èµ·çœ‹çœ‹ã€‚
使用 WebJob 实现自动ç»è®¢
我一直以æ¥éƒ½å¾ˆæ”¯æŒ Azure WebJob 的强大能力,该功能éžå¸¸æ˜“于实施,具备高弹性,å¯ç›´æŽ¥è¿è¡Œåœ¨çŽ°æœ‰ç½‘ç«™æœåŠ¡ä¸Šï¼ˆæ¤å¤–还有很多其他特性)。Let’s Encrypt 网站扩展的è¯ä¹¦ç»è®¢ä¹Ÿç”¨åˆ°äº† WebJob 机制。
ä½ å¯ä»¥é€šè¿‡ Kudu 查看 Azure 网站æ£åœ¨è¿è¡Œçš„ WebJob,实际上在上文é…ç½®ç½‘ç«™æ‰©å±•çš„æˆªå›¾ä¸æ ‡é¢˜æ 上显示了一个链接,点击å³å¯æŸ¥çœ‹ WebJob,å¯ä»¥çœ‹åˆ° Let’s Encrypt 新建的 WebJob:
打开该作业å¯ä»¥çœ‹åˆ°è¿è¡Œä¸çš„一系列函数:
通过这些函数的åç§°å·²ç»å¯ä»¥å¾ˆå¥½åœ°äº†è§£å…¶ç”¨é€”ï¼Œå‡ ä¸ªæœˆåŽè¿˜å°†çœ‹åˆ°è¿™äº›ä½œä¸šå‘Šè¯‰æˆ‘æ–°è¯ä¹¦å·²æˆåŠŸåˆ›å»ºå¹¶å®‰è£…ã€‚å¸Œæœ›å¦‚æ¤å§ã€‚如果一切能够照计划进行,那么接下æ¥è¿˜æœ‰ä¸ªé—®é¢˜éœ€è¦æ³¨æ„…
谨慎行事…
我é‡åˆ°çš„第一个问题是:时间ï¼ç ”ç©¶ Let’s Encrypt 与 Azure çš„é…åˆä½¿ç”¨è¦èŠ±æ—¶é—´ï¼Œå„ç§é…ç½®è¦èŠ±æ—¶é—´ï¼Œç¡®ä¿ã€Œå°†å„ç§ç»„件顺利组åˆåœ¨ä¸€èµ·ã€å¹¶é…åˆå·¥ä½œéœ€è¦èŠ±æ—¶é—´ã€‚å¾ˆå¤šäººç»å¸¸è·Ÿæˆ‘说 Let’s Encrypt 让 SSL「å…è´¹ã€äº†ï¼Œä½†å®žé™…情况并éžå¦‚æ¤ï¼Œè¿™ç§è¯´æ³•彻底忽略了让这一切顺利è¿è¡Œçš„æ•´ä½“æ‹¥æœ‰æˆæœ¬ã€‚最开始我看到我的åŒäº‹ Nik Molnar 今年年åˆå‘å¸ƒçš„æ–‡ç« åŽæ„Ÿè§‰ï¼Œã€Œæˆ‘天哪,竟然è¦åšè¿™ä¹ˆå¤šå·¥ä½œã€ã€‚相对æ¥è¯´å½“时确实如æ¤ã€‚纯粹从投资回报的角度æ¥è¯´ï¼Œé€šè¿‡ Azure 门户花 70 美元è´ä¹°è¯ä¹¦æ— 疑是更åˆç†çš„åšæ³•,至少在需è¦é€šè¿‡æ‰‹å·¥æµç¨‹ç»è®¢ä¼ 统è¯ä¹¦å‰ï¼Œå¤´ä¸€å¹´é‡Œçš„使用体验还是挺好的。
我é‡åˆ°çš„第二个问题是,为了让这一切能够æŒç»ç”Ÿæ•ˆéœ€è¦æ‰§è¡Œå¤§é‡å·¥ä½œã€‚å¿…é¡»å˜åœ¨æœåŠ¡ä¸»ä½“ï¼Œå¹¶ä¸”è¦å¯¹ç½‘站进行é…置,使其有æƒè®¿é—®å˜å‚¨å¸æˆ·ï¼Œè€Œç”¨äºŽå†™å…¥å˜å‚¨å¸æˆ·çš„ WebJob 必须具备æ£ç¡®çš„连接å—ç¬¦ä¸²ï¼ŒåŒæ—¶è¿˜è¦åœ¨ç½‘ç«™ä¸é…置应用设置。在é…置完æˆåŽæˆ‘有能力自行æžå®šè¿™ä¸€åˆ‡ï¼Œä½†æˆ‘觉得肯定有人会产生困扰(「这个网站为啥è¦é…置一个å˜å‚¨å¸æˆ·ï¼Ÿæˆ‘确信网站ä¸éœ€è¦è¿™ä¸ªå¸æˆ·ï¼Œå¹²è„†åˆ 掉å§â€¦ã€ï¼‰ã€‚å¾®è½¯è‡ªå·±æœ€è¿‘å°±å‡ºçŽ°äº†ä¸€ä¸ªå°æ•…障,将我在 HIBP ä¸çš„æ‰€æœ‰åº”ç”¨è®¾ç½®éƒ½åˆ é™¤äº†ï¼ˆè¿™ä¸€é—®é¢˜å·²è¢«å…¬å¼€æ‰¿è®¤ï¼Œå°‘æ•°å®¢æˆ·ä¼šå—到影å“ï¼‰ï¼Œä½ æ˜Žç™½æˆ‘çš„æ‹…å¿§äº†å§ã€‚如果任何一个环节出错,è¯ä¹¦å¯èƒ½æ— 法ç»è®¢å¹¶å¯¼è‡´äººä»¬æ— æ³•è®¿é—®ç½‘ç«™ï¼Œè¿™æ— å¼‚äºŽç¾éš¾ã€‚å过æ¥è¯´ï¼Œä¼ 统è¯ä¹¦çš„ç»è®¢ä¹Ÿéœ€è¦éº»çƒ¦çš„æ‰‹å·¥æ“作,ä¸è¿‡è¿™æ ·çš„æ“ä½œå¯èƒ½åªéœ€è¦æ¯å¹´è¿›è¡Œä¸€æ¬¡ï¼Œè€Œä¸åƒæœ¬æ–‡ä»‹ç»çš„æ–¹æ³•é‚£æ ·æ¯å¹´éœ€è¦ç»è®¢å››æ¬¡ã€‚
对于 Let’s Encryptï¼Œå…¬å¹³ç‚¹è¯´ï¼Œå½“ä½ åœ¨ Linux 计算机上有 Root æƒé™æ—¶æ•´ä¸ªè¿‡ç¨‹å…¶å®žæ˜¯ç›¸å½“简å•的。我希望 Azure ä¹Ÿèƒ½è¿™æ ·ç®€å•,但毕竟å‰è€…是我们å¯ä»¥å…¨é¢æŽ§åˆ¶çš„å¯ç®¡ç†çŽ¯å¢ƒï¼ŒåŽè€…åªæ˜¯ä¸ª PaaS å¹³å°ã€‚PaaS çš„ä¹è¶£æ£æ˜¯åœ¨äºŽå¯ä»¥é¿å…所有ç¹ç的工作,以æœåŠ¡çš„æ–¹å¼æä¾›æ‰€éœ€äº§å“ï¼Œå› æ¤è¿™ä¸€ç‚¹æ— ç–‘å¯ä»¥çº³å…¥ Azure 的未æ¥å‘展计划ä¸ã€‚
ä½ çŸ¥é“æˆ‘真æ£å–œæ¬¢çš„æ˜¯å•¥å—?是这个:
我很ä¹äºŽçœ‹åˆ°å¾®è½¯èƒ½å¤ŸæŽ¥çº³ Let’s Encrypt 并使其æˆä¸º Azure 门户ä¸çš„「一ç‰å…¬æ°‘ã€ï¼ˆå¯¹äºŽè¿™ä¸€ä¸¾æŽªæˆ‘肯定是支æŒçš„)。希望能在门户ä¸é’ˆå¯¹æ‰€æœ‰æ“作实现自动化并将è¯ä¹¦çš„ç»è®¢æ‰“é€ æˆå¯ä¾›ç”¨æˆ·é…置的选项,作为最终用户,我åªéœ€è¦è¯´ã€Œç»™æˆ‘个è¯ä¹¦ã€ï¼Œä¸€é”®ç‚¹å‡»å°±èƒ½æžå®šä¸€åˆ‡ã€‚
ç›®å‰æˆ‘ä¾ç„¶ä¼šè€ƒè™‘使用去年写过的 CloudFlare çš„æ–¹æ³•ã€‚é‚£ç§æ–¹æ³•çš„é…置工作更简å•,所用模å¼å·²ç»å分æˆç†Ÿï¼Œè¿™ç§æ–¹æ³•ä¾ç„¶æ˜¯å…费的并能自动ç»è®¢ã€‚æ¤å¤–他们还æä¾›äº†å¤§é‡å®‰å…¨å’Œæ€§èƒ½å·¥å…·ï¼Œç„¶è€Œä»¤äººé—æ†¾çš„æ˜¯è¿™ç§æ–¹æ³•并䏿€»æ˜¯èƒ½å¯¹æºå¤´çš„æ‰€æœ‰å†…å®¹è¿›è¡ŒåŠ å¯†ï¼ˆè¿™ä¸ªé—®é¢˜æˆ‘å°†å¦å¤–撰文介ç»ï¼‰ï¼Œä¸è¿‡æ¯•ç«Ÿè¿™ç§æ–¹æ³•æ›´åŠ ç®€å•,也更ä¸å®¹æ˜“出错。
在上文æåˆ°çš„ Let’s Encrypt é…置过程完全被微软自动实现之å‰ï¼Œæˆ‘会慎é‡åœ°ä¸ºé‡è¦ç½‘站使用 Let’s Encrypt。è¯è™½å¦‚æ¤æˆ‘ä¾ç„¶é¼“åŠ±æœ‰æŠ€æœ¯èƒ½åŠ›çš„äººæ”¯æŒ Let’s Encrypt,为他们æä¾›ç»§ç»å‘展的动力。毕竟别忘了这还是一个新æœåŠ¡ï¼ˆå‘å¸ƒè‡³ä»Šæ‰ 8 个月),如æ¤çŸæ—¶é—´é‡Œä»–们已ç»å–得了这么辉煌的æˆç»©ï¼Œç”šè‡³å°†åœ¨æœªæ¥çš„ SSL é¢†åŸŸå æ®é‡è¦çš„一å¸ä¹‹åœ°ã€‚æœ€ç»ˆï¼Œæ— è®º Let’s Encrypt 或 Comodo 亦或 CloudFlareï¼Œåœ¨ä¼ è¾“å±‚é¢†åŸŸåšå‡ºçš„贡献都对整个网络产生了积æžçš„æ„ä¹‰ã€‚
原文通过 Creative Commons Attribution 4.0 International License (CC BY 4.0) æ–¹å¼è®¸å¯ã€‚
作者:Troy Hunt,阅读英文原文:Everything you need to know about loading a free Let’s Encrypt certificate into an Azure website
å®žåœ¨å¤ªå¤æ‚了。。。
åšä¸»ï¼Œä¸ºä»€ä¹ˆæˆ‘按这个弄好了,azureåŽå°ä¹Ÿèƒ½çœ‹è§è¯ä¹¦äº†ï¼Œç™»å½•还没生效?是åƒä½ å¦å¤–一篇说的è¦ç‰æ¯”较长时间å—?已ç»åä¸ªå°æ—¶äº†
估计还是 Let’s Encrypt 那边é¢å‘è¯ä¹¦å’Œè¯ä¹¦ç”Ÿæ•ˆçš„速度比较慢,建议å†ç‰ç‰å§ã€‚
好的,谢谢啦。
官方那些晦涩的æµç¨‹å¤ªé𾿇‚了,看了åšä¸»çš„æ•™ç¨‹ç¨å¾®è½»æ¾äº†ä¸€äº›ã€‚弄了一晚上,终于进度差ä¸å¤šï¼Œå¯æ˜¯åˆ°äº†æœ€åŽä¸€æ¥å‘现,å¦ç”Ÿè´¦æˆ·dereamspark䏿”¯æŒç»‘定域å。。。
伤心