时至今日,给网站进行 SSL åŠ å¯†å·²ç»æˆä¸ºä¸€é¡¹ã€Œåˆšéœ€ã€ã€‚倒䏿˜¯è¯´ç½‘站上一定有啥è§ä¸å¾—人的内容,例如我这个åšå®¢ï¼Œä¸éœ€è¦ç”¨æˆ·æ³¨å†Œå’Œç™»å½•ï¼Œæ›´ä¸æ¶‰åŠåœ¨çº¿äº¤æ˜“æˆ–è€…æ”¯ä»˜ä¹‹ç±»çš„è¡Œä¸ºï¼Œä»…ä»…æ˜¯æ˜¯é—²æš‡æ—¶æ— ç—…å‘»åŸå†™å†™è‡ªå·±çš„æƒ³æ³•ï¼Œä¸æ€•被窥探,也没啥值得窥探的。但是对于一个 HTTP æ–¹å¼è®¿é—®çš„ä¸åŠ å¯†ç½‘ç«™ï¼Œåœ¨æŸäº›å¥‡è‘©æœºæž„的肆æ„妄为下,å¯èƒ½ä¼šé¢ä¸´å¾ˆå¤šé¾Œé¾Šçš„éé‡ã€‚
例如很多网站,从百度之类的互è”网「巨头ã€åˆ°ä¸ªäººç«™ç‚¹ï¼Œéƒ½éé‡è¿‡è¿è¥å•†çš„ HTTP 劫æŒè¡Œä¸ºã€‚è¿è¥å•†ä¼šå¯¹ HTTP 通信进行劫æŒï¼Œå¼ºè¡Œæ’å…¥è‡ªå·±çš„å¹¿å‘Šï¼›æˆ–è€…ä¼šæœ‰ä¸€äº›ä¸æ³•机构劫æŒä½ 访问电商网站的æµé‡ï¼Œé€šè¿‡ã€Œè¿”利劫æŒã€ç›ˆåˆ©ã€‚
相关新闻报é“å’Œå‚考资料:
用「è¿è¥å•† HTTP 劫æŒã€ä¹‹ç±»çš„关键嗿œç´¢ï¼Œæ‰¾åˆ°çš„结果够看很久了……
é¢å¯¹åŠ«æŒï¼Œå°¤å…¶æ˜¯è¿è¥å•†çš„劫æŒï¼Œç½‘站端能åšçš„实在是ä¸å¤šï¼Œä¸è¿‡ä¸€ç§æ¯”较有效的方法是对整个网站å¯ç”¨ SSL åŠ å¯†ã€‚
è¿™ç§æŠ€æœ¯ä»¥å‰å¯ä¸æ˜¯éšä¾¿ä¸€ä¸ªäººå°±èƒ½è½»æ¾ä½¿ç”¨çš„ã€‚é¦–å…ˆï¼Œä½ çš„ç½‘ç«™å¿…é¡»ä½¿ç”¨ç‹¬äº«çš„ IP 地å€ï¼›å…¶æ¬¡ï¼Œè¿˜è¦ä»Žå—信任的è¯ä¹¦é¢å‘机构那里è´ä¹° SSL è¯ä¹¦ã€‚这对很多人,尤其是å°åž‹ç½‘ç«™æ¥è¯´å·²ç»å¾ˆä¸å®¹æ˜“å®žçŽ°äº†ã€‚ä¾‹å¦‚ä½ æ£åœ¨é˜…读的这个åšå®¢ï¼Œæ‰˜ç®¡åœ¨ DreamHost,我自己都ä¸çŸ¥é“è¿™ä¸ªç½‘ç«™åœ¨å’Œå‡ ç™¾ä¸Šåƒä¸ªå…¶ä»–网站共用åŒä¸€å°æœåŠ¡å™¨å’ŒåŒä¸€ä¸ª IP 地å€ã€‚以å‰è‹¥æƒ³è¦ä½¿ç”¨ç‹¬äº« IP 地å€ï¼ŒDreamHost 的报价是æ¯ä¸ªæœˆ 5.95 美元,æ¯å¹´ä¼˜æƒ ä»· 59.95 美元ï¼
åŽæ¥æŠ€æœ¯å‘展,新的 Web æœåŠ¡å™¨æŠ€æœ¯å·²ç»ä¸è¦æ±‚åªèƒ½åœ¨æœ‰ç‹¬äº« IP 地å€çš„æƒ…况下æ‰èƒ½é…ç½® SSL,例如 Windows Server ä¸çš„ IIS 以åŠå…¶ä»–很多 Web Server å¹³å°éƒ½å¯ä»¥é€šè¿‡ SNI (Server Name Indication) 让åŒä¸€å°æœåŠ¡å™¨å’ŒåŒä¸€ä¸ª IP 地å€ä¸Šè·‘çš„å¤šä¸ªç½‘ç«™æ— éœ€ç‹¬äº« IP 便能å¯ç”¨ SSL。对å°åž‹ä¸ªäººç½‘ç«™æ¥è¯´ï¼Œè¿™å—èƒ½èŠ‚çº¦å¾ˆå¤§ä¸€ç¬”é’±ã€‚å¯æ˜¯è¯ä¹¦ä¾ç„¶éœ€è¦èŠ±é’±ä¹°ï¼Œè¿˜æ˜¯ä»¥è¿™ä¸ªåšå®¢çš„å¹³å°ä¸ºä¾‹ï¼ŒDreamHost æä¾›çš„ SSL è¯ä¹¦ä»·æ ¼ä¸ºæ¯å¹´ 15 美元。当然对于大型商业网站,这ç§è¯ä¹¦çš„ä»·æ ¼æ›´è´µã€‚
有很多网站会使用自ç¾åè¯ä¹¦ï¼Œä¸ä»…个人网站会用,就连 12306 è¿™ç§æµé‡ä½å±…å…¨çƒæ¦œé¦–的大型网站也在用。这ç§è¯ä¹¦è™½ç„¶æ–¹ä¾¿ï¼Œä½†å› 为是自己给自己é¢å‘çš„ï¼Œæ— æ³•è¢«è®¿å®¢çš„æµè§ˆå™¨æ‰€ä¿¡ä»»ï¼Œè¿›è€Œ 12306 ä¹‹ç±»ç½‘ç«™ä¼šè¦æ±‚è®¿å®¢é¦–å…ˆå®‰è£…ä¸€ä¸ªæ ¹è¯ä¹¦ã€‚这么åšçš„å¼Šç«¯å’Œéšæ‚£ï¼Œæˆ‘å‰å‡ 年曾ç»å†™è¿‡ä¸€ç¯‡æ–‡ç« æ¥ä»‹ç»ï¼Œå¦‚æžœä½ ä¸äº†è§£ SSL,强烈推è阅读。
ä¸è¿‡äºŒå一世纪都过了åå‡ å¹´ï¼ŒWeb 的世界更是天天都在å˜åŒ–,越æ¥è¶Šå¤šçš„人对 SSL æœ‰éœ€æ±‚ï¼ŒäºŽæ˜¯ä¸€äº›æœºæž„ä¸ºäº†è®©æ›´å¤šç½‘ç«™èƒ½å¤Ÿä½Žæˆæœ¬ï¼Œç”šè‡³é›¶æˆæœ¬ä½¿ç”¨ SSL,推行了一个å为 Let’s Encrypt 的项目。这个项目å¯ä»¥ä¸ºä»»ä½•个人和机构æä¾›å…费的,å—信任的,å¯ä»¥è‡ªç”±ä½¿ç”¨çš„ SSL è¯ä¹¦ã€‚主è¦èµžåŠ©å•†æ›´æ˜¯åŒ…æ‹¬äº† Mozillaã€æ€ç§‘ã€Akamaiã€Facebookã€HP Enterprise ç‰ IT 巨头。目å‰å„å¤§ä¸»æµæ“作系统和æµè§ˆå™¨å‡å·²å¯ä»¥ä¿¡ä»»ä»–们的è¯ä¹¦ã€‚
这一举措直接让 SSL çš„æˆæœ¬é™ä½Žä¸ºé›¶ï¼DreamHost 也对 Let’s Encrypt æä¾›äº†ç›´æŽ¥çš„æ”¯æŒï¼Œæ‰€ä»¥æˆ‘也把自己的åšå®¢ç½‘ç«™æ¦è£…èµ·æ¥äº†ã€‚
å¯ç”¨è¿™ä¸ªåŠŸèƒ½ï¼ŒçœŸçš„å¾ˆç®€å•
Let’s Encrypt æä¾›äº†éžå¸¸ç®€å•çš„æ–¹æ³•ï¼Œå‡ æ¥æ“作就能获得一个å—信任的å…è´¹ SSL è¯ä¹¦ã€‚éšåŽä½ å¯ä»¥å°†è¿™ä¸ªè¯ä¹¦ç”¨åˆ°è‡ªå·±çš„任何系统或站点ä¸ã€‚具体方法å¯ä»¥å‚考官方说明。
æˆ‘è‡ªå·±å› ä¸ºç½‘ç«™æ‰˜ç®¡åœ¨ DreamHost,å¯ç”¨çš„过程就更为简å•。大致说一下,供有需è¦çš„人å‚考。
在 DreamHost åŽå°ä¾æ¬¡è¿›å…¥ã€ŒDomainsã€â€”「manage Domainsã€ï¼Œæ‰¾åˆ°è¦å¯ç”¨çš„域å,点击「Secure Hostingã€ä¸‹é¢çš„「Addã€ã€‚
选ä¸ç¬¬ä¸€ä¸ªã€ŒSigned Certificateã€é€‰é¡¹ï¼Œç‚¹å‡»åº•部的「Add now!ã€å°±è¡Œäº†ã€‚就这么简å•。ä¸è¿‡éœ€è¦æ³¨æ„,DreamHost 还为所有用户æä¾›äº†å…费版的 CloudFlare CDN åŠ é€ŸæœåŠ¡ã€‚è¿™ä¸ªæœåŠ¡çš„å…è´¹ç‰ˆä¸æ”¯æŒ SSLï¼Œå¦‚æžœå¸Œæœ›åŒæ—¶ä½¿ç”¨ SSL å’Œ CDN,就必须å‡çº§ä¸ºæ¯æœˆ 9.95 美元的 CloudFlare Plus 方案。如何å–èˆå°±çœ‹ä½ è‡ªå·±äº†ï¼Œæˆ‘å®æ„¿è¦ SSL,所以ç¦ç”¨äº†å…费的 CDN æœåŠ¡ã€‚
最é‡è¦çš„工作到这里就æžå®šäº†ï¼Œä¸è¿‡å–决于网站è¿è¡Œçš„程åºï¼Œå¯èƒ½è¿˜éœ€è¦ä¸€äº›é¢å¤–的设置。
WordPress çš„åŽç»è®¾ç½®
本站点在 DreamHost 上è¿è¡Œ WordPress 构建,å¯ç”¨ SSL åŽè¿˜éœ€è¦å¯¹ WordPress 进行一些é…置。首先需è¦åœ¨ WordPress åŽå°çš„常规设置ä¸ä¿®æ”¹ç½‘站的 URL:
éšåŽéœ€è¦åœ¨ wp-config.php 䏿·»åŠ ä¸‹åˆ—ä¸¤è¡Œï¼š
define('FORCE_SSL', true); define('FORCE_SSL_ADMIN',true);
接下æ¥ï¼Œå¯¹äºŽçŽ°æœ‰ç«™ç‚¹ï¼Œè¿˜éœ€è¦å°†æ‰€æœ‰å†…部 URL 替æ¢ä¸ºæ–°çš„ HTTPS å议的 URLã€‚æ¤æ—¶å¯ä»¥ä½¿ç”¨ Search & Replace æ’ä»¶è¿›è¡Œæ‰¹é‡æ›¿æ¢ã€‚
注æ„,使用上述æ’件对域åä¹‹å¤–çš„å†…å®¹è¿›è¡ŒæŸ¥æ‰¾å’Œæ›¿æ¢æ—¶ï¼Œå¯èƒ½ä¼šé‡åˆ°é¢„演模å¼ä¸€åˆ‡æ£å¸¸ï¼Œä½†å®žé™…写入ä¸èƒ½ç”Ÿæ•ˆçš„问题,这是个已知的 Bug,目å‰è¿˜æ²¡è§£å†³ã€‚é‡åˆ°è¿™ä¸ªé—®é¢˜çš„童鞋å¯ä»¥ä½¿ç”¨å¦ä¸€ä¸ªæ’ä»¶ Better Search Replace 代替。
最åŽï¼Œä¸ºäº†ç…§é¡¾åˆ°ä¾ç„¶åœ¨ä½¿ç”¨ Windows XP 的用户,需è¦åœ¨ç½‘站的 .htaccess æ–‡ä»¶ä¸æ·»åŠ ä¸‹åˆ—å‡ è¡Œå†…å®¹ã€‚Windows XP 䏿”¯æŒ Let’s Encrypt çš„æ¤ç±»è¯ä¹¦ã€‚è¿™å‡ è¡Œå¯ä»¥ç¡®ä¿å…¨ç«™å¼ºåˆ¶ä½¿ç”¨ SSL 的情况下,Windows XP+IE 6 用户ä¾ç„¶å¯ä»¥ä½¿ç”¨ HTTP,而ä¸è¢«é‡å®šå‘到 HTTPS:
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTPS} !=on RewriteCond "%{HTTP_USER_AGENT}" "!(Windows\ NT\ 5\.1|Windows\ NT\ 5\.2)" [NC] RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] </IfModule>
ç»è¿‡ä¸Šè¿°è®¾ç½®ï¼Œä½ 的网站已ç»å¯ä»¥å®‰å…¨åœ°é€šè¿‡ HTTPS å议呈现在访客é¢å‰äº†ã€‚
问题还没完
首先,在å¯ç”¨ SSL åŽï¼ŒLet’s Encrypt çš„è¯ä¹¦ç”³è¯·ã€åˆ›å»ºï¼Œä»¥åŠç”Ÿæ•ˆè¿˜éœ€è¦ä¸€æ®µæ—¶é—´ï¼Œæ®è¯´å¯èƒ½éœ€è¦å¥½å‡ ä¸ªå°æ—¶ã€‚在这过程ä¸ï¼Œè®¿å®¢è®¿é—®æ—¶ä¼šé‡åˆ°è¯ä¹¦é”™è¯¯ï¼Œä¾‹å¦‚è¿™æ ·ï¼š
è¿™æ˜¯å› ä¸º Let’s Encrypt çš„è¯ä¹¦å°šæœªç”Ÿæ•ˆï¼ŒDreamHost 自动æä¾›äº†ä¸€ä¸ªä¸´æ—¶çš„自ç¾åè¯ä¹¦ã€‚ç›®å‰ç‰å¾…最终è¯ä¹¦çš„生æˆé€Ÿåº¦æŒºæ…¢çš„,我申请åŽå°†è¿‘ 30 å°æ—¶ï¼Œè¿˜æ˜¯åœ¨å†™ä¿¡è¯¢é—®å®¢æœä¹‹åŽæ‰æ‹¿åˆ°ï¼Œä¸çŸ¥é“是有什么特殊情况,还是大家都这么慢。
其次,混åˆå†…å®¹çš„é—®é¢˜ã€‚ä½ çš„ç½‘ç«™å·²ç»å…¨ç«™å¯ç”¨ SSL åŠ å¯†äº†ï¼Œå¯ä½ 网站上引用的外部内容呢?例如我这个åšå®¢ï¼Œä½¿ç”¨æ’件和其他外部脚本调用 Web Fontsï¼ŒåŒæ—¶è¿˜è°ƒç”¨äº†å…¶ä»–一些内容,例如 Gravatar 头åƒã€‚当然,虽然我没有使用,但其实很多网站还包å«å…¶ä»–外部内容,例如访问é‡ç»Ÿè®¡è„šæœ¬ã€å¹¿å‘Šå†…容ç‰ã€‚
在网站已ç»å¯ç”¨å…¨ç«™ SSL 的情况下,如果这些调用的外部内容ä¾ç„¶æ˜¯é€šè¿‡ HTTP æ–¹å¼æä¾›çš„ï¼Œè¿™å°±å«åšã€Œæ··åˆå†…容ã€ï¼Œè€ŒçŽ°åœ¨çš„æ–°ä¸€ä»£æµè§ˆå™¨åœ¨å±•示混åˆå†…容时,已ç»é»˜è®¤ä¸åŠ è½½ HTTP å†…å®¹äº†ã€‚ä»¥å‰ IE è¿˜ä¼šç”¨ä¸€ä¸ªå¤§å¤§çš„å¯¹è¯æ¡†è¯¢é—®è®¿å®¢æ˜¯å¦åŠ è½½æ··åˆå†…å®¹ï¼Œè€ŒçŽ°åœ¨æ— è®º Edge 或者 Chrome,都åªä¼šåœ¨ä¸€ä¸ªä¸èµ·çœ¼çš„åœ°æ–¹æ˜¾ç¤ºä¸€ä¸ªå›¾æ ‡ï¼Œå¾ˆéš¾å¯Ÿè§‰ã€‚ä¼°è®¡è¿™ç§ä¸¾æŽªï¼Œä¹Ÿæ˜¯æµè§ˆå™¨åނ商们å助推广全网 SSL åŠ å¯†çš„ä¸€ç§åŠªåŠ›æŽªæ–½å§ã€‚
这就需è¦è”系外部内容的供应方æ¥è§£å†³äº†ï¼Œä¾‹å¦‚ Web Fonts,å¯ä»¥é€‰æ‹©ä¸€ä¸ªæ”¯æŒ HTTPS çš„æ¥æºï¼Œå¹¿å‘Šï¼Ÿé—®é—®å“ªäº›å¹¿å‘Šå•†å¯ä»¥æ”¯æŒ HTTPSï¼Œç„¶åŽæ›´æ¢å§ã€‚
WordPress 默认使用了 Google çš„ Web Fonts,然而由于ã€~~å“”~~ã€‘çš„åŽŸå› ï¼ŒGoogle çš„æœåŠ¡è®¿é—®å¾ˆæˆé—®é¢˜ï¼Œç›´æŽ¥å¯¼è‡´è‡ªå·±çš„ç½‘ç«™åŠ è½½é€Ÿåº¦ç¼“æ…¢ã€‚æ‰€ä»¥æˆ‘å®‰è£…äº†ä¸€ä¸ª WordPress æ’ä»¶ Useso take over Google,将默认的 Google Web Fonts 替æ¢ä¸ºå›½å†…的类似æœåŠ¡ã€‚è¿™ä¸ªæ’ä»¶æ— éœ€ç‰¹æ®Šè®¾ç½®å°±èƒ½æ”¯æŒ HTTPSï¼Œæ¤æ—¶çš„å—ä½“æ¥æºæ˜¯ä¸å›½ç§‘å¦æŠ€æœ¯å¤§å¦ã€‚
全站 SSL 顺利实现。终于看到了那个绿色的é”å¤´å›¾æ ‡ï¼Œçˆ½å¾ˆï¼ç›®å‰å”¯ä¸€çš„问题就是,我之å‰ä½¿ç”¨çš„ CDN å…è´¹ç‰ˆä¸æ”¯æŒ SSL,支æŒçš„版本太贵。安全和速度,还是选择安全å§ï¼Œæ‰€ä»¥æœ¬ç«™æš‚æ—¶å°±ä¸ç”¨ CDN 了。ä¸çŸ¥é“有没有å…è´¹ï¼Œæ•ˆæžœå¥½ï¼Œå¹¶ä¸”æ”¯æŒ SSL çš„ CDN æœåŠ¡ï¼Œå¦‚æžœæœ‰çš„è¯ï¼Œè¿˜è¯·å¤§å®¶æŽ¨è。
全网 SSL,希望也能早日实现ï¼
åšä¸»ä½ å¥½ï¼Œå¦‚æžœæ²¡è®°é”™çš„è¯ CloudFlare çš„ Free Plan 也是支æŒSSL的……(他们的 Universal SSL 也是æä¾›å…è´¹è¯ä¹¦çš„(ä¸è¿‡æ˜¯ CDN-用户间的))
(å‚考:https://www.cloudflare.com/ssl/)
åˆšåˆšçœ‹äº†ä¸€ä¸‹ï¼Œå¥½åƒæœ‰è¯´”we’re enabling SSL by default for all our customers that are signed up directly for CloudFlare — even those on our Free plan.”
è°¢è°¢ï¼Œå¦‚æžœè¿™æ ·çš„è¯é‚£å°±å¤ªå¥½äº†ã€‚我仔细了解一下。
åˆšæ‰æ— æ„å‘现阿里云的CDNåŒæ—¶ä¹Ÿæä¾›HTTPS功能