之前主機還在 Bluehost 上時,雖然申請了 Let's Encrypt 的憑證,但始終無法順利的將憑證掛上,前陣子將主機搬到 Google Cloud Platform 之後,在同事的推薦下改用 Certbot 來部署,終於順利完成,將主要的重點筆記一下。

參考 Cerbot 上 CentOS 6 的教學,可以選定 Web 服務器跟作業系統,我使用的是 Apache 跟 CentOS 6。

部署指令很簡單:

step 1. 抓取安裝檔

wget https://dl.eff.org/certbot-auto

step 2. 設定權限讓 certbot-auto 可執行

chmod a+x certbot-auto

step 3. 進行 certbot-auto 的安裝,安裝時若所有網域都要憑證,可以用空白鍵,或是選某個數字對單一網域安裝憑證

sudo ./certbot-auto --apache

step 4. 安裝完畢後,憑證的路徑會放在 /etc/letsencrypt/live/xxx.xxx.xxx.xxx/的路徑下
會有四個檔案(cert.pem、privkey.pem、chain.pemvi、fullchain.pem)
若無權限進入資料夾,可以先下 sudo 指令(sudo 無法直接搭配 cd 指令):

sudo -i
cd /etc/letsencrypt/live/xxx.xxx.xxx.xxx/

step 5. 若有使用到 Virtual Host,需手動設定 Config 檔
先設定 ssl.conf(CentOS 6的路徑是 /etc/httpd/conf.d/ssl.conf)
確認下列資訊有設定在檔案中

LoadModule ssl_module modules/mod_ssl.so
#
# When we also provide SSL we have to listen to the
# the HTTPS port in addition.
#
NameVirtualHost *:443
Listen 443

step 6. 設定 httpd-vhosts.conf 可以設定多組網域,[]需自行改為<>

[virtualhost *:443]
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/xxx.xxx.xxx/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/xxx.xxx.xxx/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/xxx.xxx.xxx/chain.pemvi
SSLCACertificateFile /etc/letsencrypt/live/xxx.xxx.xxx/fullchain.pem
ServerName xxx.xxx.xxx
ServerAlias xxx.xxx.xxx
ServerAdmin xxx@xxx.xxx.xxx
DocumentRoot "/xxxx/xxx/xxx/xxx"
Options FollowSymLinks Indexes AllowOverride All Order Allow,Deny Allow from all
AddType application/x-httpd-php .php3 .php
DirectoryIndex index.html index.htm index.php index.asp index.aspx index.jsp index.jspa index.shtml index.shtm
[/virtualhost]

step 7. 重啟 Apache 服務

apachectl restart

若重啟後報錯找不到憑證,可以到憑證位置用 chmod 修改憑證權限
例:

chmod 755 cert.pem
chmod 755 privkey.pem
chmod 755 chain.pem
chmod 755 fullchain.pem

step 8. 利用 .htaccess 來將網站從 http 改寫到 https,.htaccess 檔案要放在根路徑下

Options -Indexes


RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

order allow,deny allow from all

step 9. 用 Chrome 開啟網址,確認網址顯示是否安全,若為否,用 Chrome 的「檢查」(呼叫開發人員工具),查看是否有混和內容
改用 https 連線後,頁面載入的內容,都必須改為 https 的連線方式來取得,像圖檔、js、css等都是,透過工具可以看到報錯內容,修正後即會顯示安全

step 10. 用 crontab 來自動更新憑證,Let's Encrypt 憑證每三個月會失效,需更新
加入下列這一行,設定每個月1號跟15號的凌晨三點,自動檢查憑證(編輯這個檔案通常是針對系統的例行性任務)

vi /etc/crontab
00 3 1,15 * *  root ./certbot-auto renew

若是要使用 crontab -e 的指令也可以(通常這個指令是針對使用者的例行性任務),兩者選其一做就行

crontab -e
00 3 1,15 * *  root ./certbot-auto renew

以上為使用 Certbot 自動部署 Let's Encrypt 憑證,在 GCP 的 CentOS 6的 Apache服務(含憑證自動展延)的筆記。

2017-08-12  -  duncan Email  -  243  -  資訊工程 - 讀者回應

Toontastic 3D on iTunes App Store

Toontastic 3D on Google Play Store

我在朋友的 Facebook 上,看到了電腦玩物所發表這篇「讓孩子輕鬆把想像變成卡通動畫 Google Toontastic 3D 免費下載 」,Google 所製作的這個 App 很有趣,透過這款 App,我們可以很快速的選擇故事的情節模式,例如有三個故事轉折的,也有五個故事轉折的情結可以選擇。

接著進入每一個情結片段,可以選擇場景跟人物,除了 App 內建的場景跟人物可以使用外,也可以自行繪製,這款 App 還會把手繪的人物,轉成簡易的 3D 模型。

選擇好場景與人物後,就可以錄製該情結片段的故事,同時在錄音之後,還可以選擇該情結片段的背景音樂。就這樣依序把三個場景或五個場景的故事錄製完畢,就能串起一個完整的故事,同時也能在上面加上標題。詳細的操作跟介紹就不贅述,請參考上面電腦玩物的文章介紹。

我下載完 App 之後,先是簡易的操作了一下,但是我發現最大的難處在於我無法輕易的就說出故事。嘗試了一下操作模式之後,我就找了空檔,跟女兒(彤彤)示範了一下這個 App 的使用方式,沒想到她操作的比我還熟練,不知該說是她有天份?還是這個 App 的操作介面設計的太好?

之後妹妹(霏霏)也加入錄製行列,就這樣兩小在這個週末假期,迅速的做出了幾個自編自導的卡通,同時還給卡通命名跟寫上自己的外號(話說姊姊的花紫跟妹妹的星星,這兩個外號是怎麼來的啊?),這也太強了吧!老大彤彤還打了一段字,分享到我的 Facebook 上。我將這些影片上傳到 Youtube,還將它做成了一個影片播放清單,如果有人想聽故事的,可以到這邊觀看,應該會不定時更新。

彤:我是彤,花紫是我在學校的外號,「小美少女的旅行」是一個很有趣的故事,也是我自己做的故事,雖然短短的幾分鐘而已,但是很有創意,要看一看哦,你會覺得很有創意嗎?

=> 深入閱讀...

2017-06-19  -  duncan Email  -  199  -  資訊工程 - 讀者回應

[2016.10.6更新]讓舊 Mac 也能使用 Handoff、Instant Hotspot、New AirDrop透過這篇文章所介紹的Continuity Activation Tool,在macOS Sierra可以快速啟用Handoff的功能。

早前曾分享過一篇自己動手換舊式MacBook Pro藍芽晶片,好支援OS X Yosemite上新推出的Handoff功能─15-inch Early 2011記憶體升級16GB與更換SSD(TRIM Enabler for OS X Yosemite)

而近日OS X El Capitan正式推出,已經更換過藍芽晶片的舊版MBP,作業升級到OS X 10.11之後,Handoff功能又會消失,所以這篇文章就分享一下我的15-inch Early 2011 MacBook Pro(MBP)在OS X El Capitan上開啟Handoff的方法。

升級之前提醒大家,記得要先進行主機的備份動作,可以使用Time Machine進行備份,或是利用Carbon Copy Cloner來備份整個磁區的資料。另外以下的操作,如果你不熟悉,也看不太懂,那麼衷心的建議你不要操作,避免產生其他的問題。同時這是針對已經手動更換過藍芽晶片的狀態來設定的,如果還沒更換過藍芽晶片,請看15-inch Early 2011記憶體升級16GB與更換SSD(TRIM Enabler for OS X Yosemite)裡的說明。

OS X El Capitan與OS X Yosemite的不同,在於它推出了System Integrity Protection(SIP)的系統防護功能,而原有使用rootless=0或者kext-dev-mode=1的啟動參數,目前已經失效。詳細的介紹資料,請看「Clover 更新SIP配置方法簡要說明 Apple SIP/Rootless安全技術介紹+測試分析及關閉方法」這篇。

簡單說一下,手動更換了藍芽晶片之後,蘋果並不會因為我們更換晶片,就讓系統針對新的晶片產生它該有的功能,因此要開啟Handoff功能,就必須去置換位在/system/library/extensions/下的IO80211Family.kext檔案。以往沒有SIP的防護機制時,我們可以輕易的置換IO80211Family.kext檔,但有了SIP的保護機制後,我們就無法刪除或搬移/system/library/extensions/下的任何檔案了。

接下來說明打開Handoff功能的方法,首先請先下載0xEDKext Drop這兩個程式,並將其拖到應用程式裡。0xED主要是用來修改MAC的編碼,Kext Drop則是用來重新安裝IO80211Family.kext的kext。

Step 1、請開啟Finder(檔案總管),在上方工具列選「前往」,然後從下拉式選單裡選「前往檔案夾」(或是在Finder下直接用shift+command+G,一樣會跳出視窗)。當跳出視窗時,輸入"/system/library/extensions/",然後按下「前往」按鍵。

Step 2、尋找IO80211Family.kext,並將其Copy到桌面,同時另外備份一個原檔到另一個資料夾(自己選擇位置存放,保險用途)。

Step 3、在桌面上的IO80211Family.kext點選右鍵,選擇「顯示套件內容」,然後進入「Contents」,再進入「PlugIns」,接著再進入「AirPortBrcm4360.kext」,同樣在AirPortBrcm4360.kext點選右鍵,選擇「顯示套件內容」,然後進入「Contents」,再進入「MacOS」,此時會看到AirPortBrcm4360這個檔案,請用0xED這個編輯器來開啟。

無標題

=> 深入閱讀...

2015-10-08  -  duncan Email  -  3669  -  資訊工程 - 回應(5)

我在辦公室使用的這台15" MBP,是2011年初的版本,當初購買時我的記憶體就已經配置到8GB,硬碟則是選擇750GB的容量。在今年五月份時過保,這三年來因為安裝的工具程式相當多,加上工作上的需求,會使用到VM,但8GB的記憶體實在不夠用,每每開啟VM之後,兩個作業系統都會處在互等狀態,基本上雖然還不致於當機,但就連滑鼠也不太能正常操控。

因為已經影響到工作的效能,所以一過保之後,就決定自己拆機升級。決定升級之前,朋友建議我直接賣掉舊機,再買一台新的筆電。但原本這台15吋的MBP是客製化版本,當初購買時花了八萬多,二手出脫怎麼評估都不划算,而在網路上搜尋時,發現有他人也做了簡單的升級,但老機卻可以迅速回春,於是我就決定走升級了路線,當然這樣一來又投資了兩萬元在這台三歲的筆電上。

決定要升級有三個主因,原本以為這台機器Ram最多只能安裝到8GB(官網的規格上寫兩個 SO-DIMM 插槽可支援高達 8GB),但我看到網友Atom成功升級了他的MBP,16GB已經可以滿足我現階段的需求,所以這是一大利多。

再者我發現SSD也可以跟著升級,原本只是擔心系統的移轉問題,但看了一些文章(MacBook Pro升級SSD及數據轉移完全教程[教學]Mac如何更換大硬碟,並完全轉移檔案、解決奇怪顯示的資料夾問題[MAC] MAC OSX換新硬碟系統免重灌)之後,發現可以用Carbon Copy Cloner直接鏡像備份整個舊硬碟的系統與資料,且也可以製作Recovery HD,所以對於升級又更心動了。

最後一點,是我的主機板有換過一片,之前因為顯示晶片出了問題,所以才剛送修回來沒多久,聽說這個晶片問題已經快演變為集體訴訟了(行動升級!Apple 或因 MacBook Pro 面對集體訴訟!),我想說剛換過新的主機板,電腦應該還可以撐個三年,這樣升級的投資應該也算划算,於是就決定升級了。

要升級記憶體跟SSD硬碟,首先要採購相關的硬體配件。我的購買清單如下,DDR3 1600 8GB *2、創見 SSD370 1TB 2.5吋 SATAIII *1、Onnto 2.5" FireWire 800外接盒 *1、45件 多功能工具組 *1。其中記憶體確定是可以安裝且正常使用的。SSD硬碟我選擇1TB裡面目前價格最便宜的,且支援TRIM。另外硬碟外接盒是要給拔下來的舊硬碟使用,當做備份磁碟,選擇有FireWire 800介面,一方面我的MBP只有USB 2.0,加上USB插槽兩個真的不夠用,因此買了一個有FireWire 800的外接盒,它有送FireWire 800跟USB的線材。至於工具組,因為家裡沒有星形的工具組,所以乾脆買一整組新的。

Mac升級與更新

購買清單:
Kingston DDR3 1600 8GB Apple專用筆記型記憶體(低電壓1.35V)(KTA-MB1600L/8GFR) NTD$2,499

創見 SSD370 1TB 2.5吋 SATAIII 固態硬碟 (MLC顆粒) NTD$13,900

Onnto 2.5" FireWire 800/ 400/ USB 硬碟外接盒

Jackly 捷克利 JK-6089-A 45件 多功能 起子+套筒 工具組 加長桿 螺絲刀 有磁力 45合1 手機拆卸工具

=> 深入閱讀...

2014-10-20  -  duncan Email  -  13327  -  資訊工程 - 讀者回應

Search Engine Optimization(搜尋引擎最佳化),簡稱SEO一直都是網站經營者不得不了解的一門技術。我一直很想找機會分享我對於SEO的看法,最近總算有了一點時間,就簡單整理一下我對於SEO的認知與作法。

所謂的SEO主要是將網頁內容與網站的結構,針對搜尋引擎的特性來進行調整,目的是希望藉由搜尋引擎上的曝光,幫網站帶來更多的流量。以下所談的SEO的看法,都是我個人的心得,如果文內有錯誤,或者是已經過時的資訊,還請多多包涵。另外本篇僅提供個人看法的分享,將不回答各式各樣相關的問題。

我將SEO簡單區分為三個大項的工作內容,分別是:1.網站結構、2.網站內容、3.外連結。在談這三個大項的內容之前,應該先提一下搜尋引擎運作的原理。

搜尋引擎的主要動作,包含了Crawling(資料抓取)、Preprocessing(資料處理與過濾)、Indexing(資料索引)、Query Processing與Ranking(提供查詢介面與排序機制)這幾項。

搜尋引擎會到網站上進行頁面爬取的動作,透過Spider(代理程式)來將頁面內容抓回資料庫裡。而抓取的動作是由一組伺服器在指派,抓取的URL清單會丟進一個Pool,然後伺服器會同時分派給幾個子伺服器進行頁面抓取的動作。而通常頁面抓取的模式是由廣而深,這意思是指會先抓取不同Domain Name下的第一階頁面,有餘裕時才繼續抓取某個Domain Name下第二、第三、或更深階的內容。會這樣也是有個原因,通常URL Pool裡的資料,大多都是Domain Name下的主網域,隨著Spider抓取頁面資料後,後續過程所分析到的URL才會丟回URL Pool裡,這時才會繼續抓取更深層的頁面。因此這個程序裡對SEO的作業來說很重要的兩件事:就是一、資料爬取;以及二、爬取的方式是由廣而深。

=> 深入閱讀...

2013-09-05  -  duncan Email  -  2343  -  資訊工程 - 讀者回應

:: 下一頁 >>