今天要來講SSL囉!
我們會用certbot來生SSL。
我們先打開certbot的網站,然後會看到有一行:
把software選apache
,system選FreeBSD
,然後他就會開始生步驟,那我們就照著他的步驟吧:pkg install py36-certbot
他也有說可以用ports裝,不過我就懶得用了~sudo certbot certonly --standalone
或sudo certbot certonly --webroot
前者是在apache先關掉的時候,後者是讓你的apache繼續跑。個人習慣前者,很怕後者會出事QQ
然後建議先開screen,待會要複製東西。
然後他會問你一些問題,就如實回答,會放在你憑證的資訊裡面。
到了第四個問題就很重要了,要問你的網域,千萬要打對,不然可能要重做。
然後他會跑一下,跑完之後你會看到一個IMPORTANT NOTES
,他會有兩個路徑,就是你的key,像我的就是 /usr/local/etc/letsencrypt/live/test.cnmc.tw/fullchain.pem
跟/usr/local/etc/letsencrypt/live/test.cnmc.tw/privkey.pem
(當然你們有自己的domain name)。接下來就要把它們弄到apache的設定檔囉。
先把剛剛的路徑複製好,或是可以直接把他們移動。
然後打開/usr/local/etc/apache24/extra/httpd-ssl.conf
。找一下SSLCertificateFile
,然後把剛剛fullchain.pem
的路徑給他;再找SSLCertificateKeyFile
,把privkey.pem
的路徑給他,完成之後應該會像這樣:
SSLCertificateFile "/usr/local/etc/letsencrypt/live/test.cnmc.tw/fullchain.pem"
SSLCertificateKeyFile "/usr/local/etc/letsencrypt/live/test.cnmc.tw/privkey.pem"
然後接下來再去httpd.conf
,先把約524行的Include etc/apache24/extra/httpd-ssl.conf
取消註解(不然剛剛改那麼就是在幹嘛),
再把大概147行左右的ssl_module
取消註解,接下來還有大概91行的socache_shmcb_module
也取消註解(如果沒弄的話會跑錯誤,看到錯誤就知道該怎麼弄)。
最後再service apache24 start
,這樣就大功告成囉!可以去你的網站用https連連看,如果有出現那個安全的鎖就是可以了,如果沒有,然後你的apache還沒跳錯誤,那就真是太神奇了OAO
基本上這樣就可以了,但是接下來還是要講些httpd-ssl.conf的設定。
他其實跟httpd.conf是差不多的,以後有改網站路徑之類的要在這裡改。只有一個昨天沒有講到的:SSLEngine On
再大概132行,應該很顯然一定要吧,沒有的話你的ssl就跑不起來了。<VirtualHost _default_:443>
我們明天就會講到類似的東西了,可以先有個印象就好。
剩下很多都是昨天提過的像是DocumentRoot
、ErrorLog
等等,如果忘記了就請回到昨天。
昨天再講AllowOverride有提到他,他用途很多,我們現在只是用它來把所有的連線都導到https。
我們先在/usr/local/etc/apache24
建一個叫.htaccess
的檔案,然後把這段東西貼上:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://test.cnmc.tw/ [R,L]
正是正規表示式,令人難過的是我對他不熟,所以我也是去查資料來的。(資料來源)
接下來要去httpd.conf取消註解大概在179行的rewrite_module
,這樣他上面那個RewriteEngine
才能動。再來要加一行(真難得):Include etc/apache24/.htaccess
。
最後再service apache24 restart
,他就會自動導過去了!
可以去看一下你的網站有沒有都導到https,我會直接打IP試試,如果有基本上就是有了;也可以用http://test.cnmc.tw
看看。
今天就把網頁弄了https,這樣應該舒服多了吧!
如果過程中有不順的話很有可能是忘記取消註解之類的,可以仔細看看錯誤訊息跟文章。
話說今天段考欸,好可怕,明天還有4科,然後有兩科還沒念完...