2020年3月5日 星期四

使用 letsencrypt 與 Certbot 申請網頁 ssl 憑證

近日透過 nctu.me 免費申請了一個 domain name,想讓家裡的桌機網頁可以透過 https 連線。
於是選擇了 https://letsencrypt.org/zh-tw/ 免費的 ssl 的申請機制。

依照 letsencrypt 官網推薦的方式,使用Certbot 來自動建立憑證。但很不幸的 Certbot 並不支援windows 環境,因此耍了點小手段,先在桌機run了 VM,執行了 CentOS7,然後調整寬頻分享器,先把 CentOS7 的 web server 對應到對外的 web server,如此可以讓 CentOS7 自動建立憑證。完成之後,再把憑證 copy 到桌機的 apache server 來用。

PS : 但原本的自動更新憑證機制,則無法在本機執行,所以憑證僅有3個月效期,之後還是得再透過 VM 來更新。

CentOS 獲得的憑證,權限如下:

drwxr-xr-x /etc/pki/site/certs/
-rw-r--r--. 1 root root 1911 2020-03-04 22:19 cert.pem
-rw-r--r--. 1 root root 1647 2020-03-04 22:19 chain.pem
-rw-r--r--. 1 root root 3558 2020-03-04 22:19 fullchain.pem
-rw-------. 1 root root 1708 2020-03-04 22:19 privkey.pem

若要直接搬移到其他 CentOS機器,請注意 SELinux 的安全性,可能讓 apache server 找不到憑證。若有發生設定正確,卻始終找不到憑證的情況,可以試著設定整個目錄的權限:

restorecon -Rv /etc/pki/site/certs/

接著複製到windows上,將apache server 的設定指向這些憑證,也就成功了。

補充:
要開啟 apache server 的  https service,設定動作如下:

conf/httpd.conf
  打開 mod_ssl.so 與 socache_shmcb_module (與ssl cache有關) 模組
  LoadModule ssl_module modules/mod_ssl.so
  LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

  引入 httpd-ssl.conf,打開下面設定。
  Include conf/extra/httpd-ssl.conf

conf/extra/httpd-ssl.conf
  設定憑證檔還有 Key 的位置
  SSLCertificateFile "D:/Program/Apache24/conf/site/certs/cert.pem"
  SSLCertificateKeyFile "D:/Program/Apache24/conf/site/certs/privkey.pem"

執行 bin/ApacheMonitor.exe
  用監控程式,重新啟動 apache

沒有留言:

張貼留言