摘要:用于安全的數(shù)據(jù)傳輸。表明它使用了,但存在不同于的默認(rèn)端口及一個(gè)加密身份驗(yàn)證層在與之間。申請(qǐng)證書(shū)網(wǎng)上已經(jīng)有不少機(jī)構(gòu)提供個(gè)人免費(fèi)證書(shū),有效期幾個(gè)月到幾年不等,博主使用的是申請(qǐng)成功后有效期年,到期后可免費(fèi)續(xù)租。
前言
隨著國(guó)內(nèi)各大網(wǎng)站紛紛開(kāi)啟全站 HTTPS 時(shí)代,HTTPS 已不再是支付等敏感操作過(guò)程的專屬,開(kāi)啟 HTTPS 對(duì)于個(gè)人網(wǎng)站或者小型網(wǎng)站也不再遙不可及。 今天博主就以自己的網(wǎng)站 www.rapospectre.com 為例敘述一下為自己網(wǎng)站點(diǎn)亮 HTTPS 小綠鎖的過(guò)程。
HTTP 和 HTTPSHTTPS( Hypertext Transfer Protocol over Secure Socket Layer ),是以安全為目標(biāo)的 HTTP 通道,簡(jiǎn)單講是 HTTP 的安全版。即 HTTP 下加入 SSL 層,HTTPS 的安全基礎(chǔ)是 SSL ,因此加密的詳細(xì)內(nèi)容就需要 SSL 。 它是一個(gè) URI scheme( 抽象標(biāo)識(shí)符體系 ),句法類同 http :體系。用于安全的 HTTP 數(shù)據(jù)傳輸。 https:URL 表明它使用了 HTTP,但 HTTPS 存在不同于 HTTP 的默認(rèn)端口及一個(gè)加密/身份驗(yàn)證層(在 HTTP 與 TCP 之間)。這個(gè)系統(tǒng)的最初研發(fā)由網(wǎng)景公司進(jìn)行,提供了身份驗(yàn)證與加密通訊方法,現(xiàn)在它被廣泛用于萬(wàn)維網(wǎng)上安全敏感的通訊,例如交易支付方面。
HTTP 超文本傳輸協(xié)議 ( HTTP-Hypertext transfer protocol ) 是一種詳細(xì)規(guī)定了瀏覽器和萬(wàn)維網(wǎng)服務(wù)器之間互相通信的規(guī)則,通過(guò)因特網(wǎng)傳送萬(wàn)維網(wǎng)文檔的數(shù)據(jù)傳送協(xié)議。
從概念里可以看到,要開(kāi)啟 HTTPS 至關(guān)重要的一點(diǎn)就是 ssl 層的身份驗(yàn)證,而身份驗(yàn)證需要用到 ssl 證書(shū),以前少有免費(fèi) ssl 證書(shū),所以小站基本不會(huì)選擇 https ,而現(xiàn)在網(wǎng)上提供個(gè)人免費(fèi) ssl 證書(shū)的機(jī)構(gòu)越來(lái)越多,這使得免費(fèi)升級(jí)站點(diǎn)為 https 成為可能。
1. 申請(qǐng) SSL 證書(shū)網(wǎng)上已經(jīng)有不少機(jī)構(gòu)提供個(gè)人免費(fèi) ssl 證書(shū),有效期幾個(gè)月到幾年不等,博主使用的是 StartSSL, 申請(qǐng)成功后有效期 3 年,到期后可免費(fèi)續(xù)租。 具體申請(qǐng)過(guò)程不復(fù)雜,注冊(cè)后根據(jù)提示驗(yàn)證網(wǎng)站 + 生成證書(shū)即可,如果不清楚可以 Google 一下。
要注意 StartSSL 驗(yàn)證網(wǎng)站擁有者時(shí)是給域名所有者的郵箱發(fā)驗(yàn)證郵件,如果域名開(kāi)啟了隱私保護(hù)請(qǐng)暫時(shí)關(guān)閉。
然后在自己服務(wù)器中生成 SSL 證書(shū)的 csr ,記住生成輸入的秘密,之后要用到:
openssl req -new -sha256 -key rapospectre.com_secure.key -out rapospectre.com.csr
假設(shè)以上文件生成在 /var/tmp 文件夾下
在 StartSSL 填寫(xiě) csr 文件內(nèi)容,生成 SSL 證書(shū)并下載, 生成成果后如圖:
點(diǎn)擊 Retrieve 下載證書(shū),解壓縮后包含各種服務(wù)器的 crt ,博主使用 nginx 做反代,所以選擇 nginxserver 解壓縮后得到 www.rapospectre.com_bundle.crt 將此文件上傳到服務(wù)器,假設(shè)傳到 /var/tmp/ 文件夾
2. 配置服務(wù)器以 nginx 為例,打開(kāi) /etc/nginx/nginx.conf,加入配置:
server { listen 443 ssl; ssl_certificate /var/tmp/www.rapospectre.com_bundle.crt; ssl_certificate_key /var/tmp/rapospectre.com_secure.key; ssl_prefer_server_ciphers on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #選擇特定的加密方式, 避免已知的漏洞 ssl_ciphers "kEECDH+ECDSA+AES128 kEECDH+ECDSA+AES256 kEECDH+AES128 kEECDH+AES256 kEDH+AES128 kEDH+AES256 DES-CBC3-SHA +SHA !aNULL !eNULL !LOW !MD5 !EXP !DSS !PSK !SRP !kECDH !CAMELLIA !RC4 !SEED"; #讓瀏覽器記住直接訪問(wèn) https 的網(wǎng)址, 不再去 http 重定向。 add_header Strict-Transport-Security "max-age=31536000; preload"; add_header X-Frame-Options DENY; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; keepalive_timeout 70; ssl_dhparam /var/tmp/dhparam2048.pem; #禁止服務(wù)器自動(dòng)解析資源類型 add_header X-Content-Type-Options nosniff; #防XSS攻擊 add_header X-Xss-Protection 1; server_name www.rapospectre.com rapospectre.com;
在之前的 80 端口進(jìn)行重定向配置:
server { listen 80; server_name rapospectre.com www.rapospectre.com; return 301 https://www.rapospectre.com$request_uri; }3. HTTP 替換
將網(wǎng)站所有以 http 方式獲取的資源全部改為 https 方式或自動(dòng)方式獲取, eg:
改為 或
重啟服務(wù)器,提示輸入之前生成 csr 的密碼,輸入密碼,重啟成功,訪問(wèn) https://www.rapospectre.com 可以看到 HTTPS 已經(jīng)正常工作!
順手來(lái)一發(fā) SSLLABS測(cè)試,wtf 只有 F?
看圖發(fā)現(xiàn)因?yàn)?/p>
This server is vulnerable to the OpenSSL Padding Oracle vulunerability ( CVE-2016-2107 )
原來(lái)是 OpenSSL 漏洞的鍋,升級(jí) OpenSSL 到 1.0.2h 版 ( 后續(xù)版本應(yīng)該也可以,博主一開(kāi)始升級(jí)到了最新的 1.1.0a 結(jié)果服務(wù)器掛了 ) 即可修復(fù)漏洞:
Fix OpenSSL Padding Oracle vulnerability (CVE-2016-2107) - Ubuntu 14.04
# Based on http://fearby.com/article/update-openssl-on-a-digital-ocean-vm/ $ apt-get update $ apt-get dist-upgrade $ wget ftp://ftp.openssl.org/source/old/1.0.2/openssl-1.0.2h.tar.gz $ tar -xvzf openssl-1.0.2h.tar.gz $ cd openssl-1.0.2h $ ./config --prefix=/usr/ $ make depend $ sudo make install $ openssl version # OpenSSL 1.0.2h 3 May 2016 # now restart your nginx or other server $ nginx -s reload4. HTTP2
開(kāi)啟 http2 ,nginx 在 1.9.5 以后的版本才開(kāi)始支持 http2 ,之前一直使用的是 spdy 而 ubuntu 自帶的 nginx 是 1.4.6 的古董, 所以需要重新編譯安裝新版的 nginx ,博主選擇了安裝最新的 nginx 1.11.4:
1. 下載 nginx 到 /var/tmp/nginx:
wget http://nginx.org/download/nginx-1.11.4.tar.gz
2. 解壓nginx-1.11.4.tar.gz文件
tar zxvf nginx-1.11.4.tar.gz
3. 進(jìn)入ngixn-1.11.4文件夾
cd nginx-1.2.5
4. 查看nginx原來(lái)的配置
nginx -V
上面的命令將輸出類似如下信息:
--with-cc-opt="-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2" --with-ld-opt="-Wl,-Bsymbolic-functions -Wl,-z,relro" --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_sub_module --with-http_xslt_module --with-mail --with-mail_ssl_module
我們?cè)诤竺婕由?http2 模塊與 上一步中 openssl 源碼( 是源碼路徑不是安裝 )路徑:
--with-http_v2_module --with-openssl=/var/tmp/ssl/openssl-1.0.2h
注意,如果以上信息內(nèi)包含 --with-spdy_module 請(qǐng)去除,nginx 1.9.5 之后已棄用 spdy
5. 執(zhí)行configure命令,后面跟上原來(lái)nginx的配置
./configure --with-cc-opt="-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2" --with-ld-opt="-Wl,-Bsymbolic-functions -Wl,-z,relro" --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_sub_module --with-http_xslt_module --with-mail --with-mail_ssl_module --with-http_v2_module --with-openssl=/var/tmp/ssl/openssl-1.0.2h
configure時(shí)可能遇到的幾個(gè)錯(cuò)誤:
--with-http_xslt_module 時(shí)提示 the HTTP XSLT module requires the libxml2/libxslt libraries
apt-get install libxml2 libxml2-dev libxslt-dev
--with-http_image_filter_module 時(shí)提示 the HTTP image filter module requires the GD library.
apt-get install libgd2-xpm-dev
--with-http_geoip_module 時(shí)提示 the GeoIP module requires the GeoIP library.
apt-get install geoip-database libgeoip-dev
./configure: error: the HTTP rewrite module requires the PCRE library.
apt-get install libpcre3 libpcre3-dev
再次執(zhí)行 configure 命令, 然后make && make install。 編譯好以后objs目錄下多出一個(gè)nginx文件,用它替換舊的 nginx 文件:
mv /usr/sbin/nginx /usr/sbin/nginx-backup cp objs/nginx /usr/sbin/nginx
執(zhí)行/usr/sbin/nginx -t 命令檢查配置文件返回下面的信息:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
表示 nginx 升級(jí)成功,修改 nginx 配置,加入 http2 支持:
listen 443 ssl http2 fastopen=3 reuseport;
重啟 nginx 訪問(wèn)正常后再測(cè)一發(fā):
搞定,個(gè)人網(wǎng)站加入 HTTPS 并且 SSLABS 評(píng)分 A+ 。 快來(lái)試試吧~
( 博主網(wǎng)站圖片上傳到七牛,而七牛免費(fèi)似乎賬戶不支持 https 鏈接,所以有些文章比如說(shuō)這篇會(huì)提示網(wǎng)頁(yè)內(nèi)有不安全的內(nèi)容 )
原文地址:https://www.rapospectre.com/b...
作者:rapospectre
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/39363.html
摘要:繼上一篇如何打造一個(gè)全滿分網(wǎng)站之后,這一次我們來(lái)談?wù)勅绾未蛟煲粋€(gè)在安全方面也能打滿分的網(wǎng)站。無(wú)論如何,我們把一個(gè)安全得分只有的網(wǎng)站,通過(guò)各種方法優(yōu)化到了得分為,是不是小有成就感呢你也來(lái)試一試吧 繼上一篇《如何打造一個(gè)全滿分網(wǎng)站》之后,這一次我們來(lái)談?wù)勅绾未蛟煲粋€(gè)在安全方面也能打滿分的網(wǎng)站。因?yàn)閷?duì)于一個(gè)網(wǎng)站來(lái)講,僅有功能是不夠的,還需要考慮性能,僅有性能也不夠,還需要考慮安全。 由于網(wǎng)站...
很多人想要搭建自己的博客網(wǎng)站,但是又苦于沒(méi)有什么代碼基礎(chǔ),部分同學(xué)可能覺(jué)得申請(qǐng)?zhí)摂M主機(jī)管理空間等操作繁瑣,于是苦苦尋找那種單純的寫(xiě)作平臺(tái),例如早期的新浪博客,現(xiàn)在的簡(jiǎn)書(shū)、國(guó)外的WP等也就成為了不少人的選擇。但是使用第三方的博客平臺(tái)有一個(gè)最大的問(wèn)題:不穩(wěn)定。可能有的人會(huì)說(shuō)大廠商不怕倒閉,縱觀互聯(lián)網(wǎng)這十幾年的發(fā)展,再大的大牌服務(wù)如果沒(méi)有贏利支撐,該倒閉的倒閉,該關(guān)停的關(guān)停。用戶的利益對(duì)于商家來(lái)說(shuō)不是高...
摘要:就拿本篇教程為例,發(fā)布第一篇文章。十分鐘免費(fèi)博客建站教程如果你沒(méi)有自定義的路徑的話,默認(rèn)生成的文件都會(huì)在目錄下。具體語(yǔ)法請(qǐng)移步官網(wǎng)最后附上我的博客鏈接嚶嚶嚶填坑小窩 title: Hexo+NexT+Heroku十分鐘免費(fèi)博客建站教程date: 2016-10-29 20:57:20author:嚶嚶嚶 前言(上一段廢話抒發(fā)一下情感先) 接觸互聯(lián)網(wǎng)到現(xiàn)在不長(zhǎng)不短也有兩年了,從最開(kāi)始連...
摘要:一些有用的一些有用的,包括轉(zhuǎn)換小箭頭三角形媒體查詢等中文指南是當(dāng)下最熱門的前端資源模塊化管理和打包工具。 nodejs 入門 nodejs 入門教程,大家可以在 github 上提交錯(cuò)誤 2016 年最好用的表單驗(yàn)證庫(kù) SMValidator.js 前端表單驗(yàn)證工具分享 淺談前端線上部署與運(yùn)維 說(shuō)到前端部署,可能大多數(shù)前端工程師在工作中都是使用的公司現(xiàn)成的部署系統(tǒng),與SRE對(duì)接、一起完...
摘要:一些有用的一些有用的,包括轉(zhuǎn)換小箭頭三角形媒體查詢等中文指南是當(dāng)下最熱門的前端資源模塊化管理和打包工具。 nodejs 入門 nodejs 入門教程,大家可以在 github 上提交錯(cuò)誤 2016 年最好用的表單驗(yàn)證庫(kù) SMValidator.js 前端表單驗(yàn)證工具分享 淺談前端線上部署與運(yùn)維 說(shuō)到前端部署,可能大多數(shù)前端工程師在工作中都是使用的公司現(xiàn)成的部署系統(tǒng),與SRE對(duì)接、一起完...
閱讀 658·2021-11-23 09:51
閱讀 3258·2021-10-11 10:58
閱讀 15407·2021-09-29 09:47
閱讀 3529·2021-09-01 11:42
閱讀 1281·2019-08-29 16:43
閱讀 1832·2019-08-29 15:37
閱讀 2089·2019-08-29 12:56
閱讀 1718·2019-08-28 18:21