【Linux】【Apache】在伺服器上安裝SSL憑證 (ZeroSSL) HTTPS



註冊帳號




照步驟填寫下去

選擇免費的90天憑證就可以了~







我選擇了使用上傳檔案來驗證

下載Download Auth File來獲得驗證檔案,
並上傳到伺服器端網站的根目錄 /.well-known/pki-validation 資料夾底下

這邊使用SFTP的方式來上傳
$ sftp USERNAME@IPADDRESS
( /.well-known/pki-validation )
$ put FILENAME

上傳完畢以後,可以瀏覽驗證一下所上傳的檔案是否存在
http://gjlmotea.com/.well-known/pki-validation/3CAF080200E56095E29FE6B570B00A60.txt



接著點擊下一步按鈕來驗證。



驗證通過(確認完畢你是主機管理者)之後,
還必須下載證書
選擇伺服器類型(選哪個下載下來的憑證都一樣,只是安裝憑證的方法不同)







下載憑證、解壓縮之後





憑證內容



由於我的伺服器環境是Ubuntu 16.04 搭配Apache,照著說明文件的步驟來進行

上傳 certificate.crt 以及ca_bundle.crt兩個檔案到 /etc/ssl 資料夾下
上傳 private.key 到 /etc/ssl/private 資料夾下
(因為權限的關係而用root登入)
$ sftp root@IPADDRESS
(/etc/ssl)
$ put certificate.crt
$ put ca_bundle.crt
(/etc/ssl/private)
$ put private.key

還沒完,接著要調整Apache設定,
(/etc/apache2/sites-available)
$ sudo vim default-ssl.conf
檢查必須要有這些參數,最重要的是證書的路徑位置要正確!以及ServerName

(/etc/apache2/sites-available/default-ssl.conf)
<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerName www.gjlmotea.com
        ServerAdmin webmaster@localhost
        SSLEngine on
        SSLCertificateFile /etc/ssl/certificate.crt
        SSLCertificateKeyFile /etc/ssl/private/private.key
        SSLCertificateChainFile /etc/ssl/ca_bundle.crt
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        DocumentRoot /var/www
        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>
    </VirtualHost>
</IfModule>



$ sudo systemctl reload apache2
如果有報錯,有極大的可能是參數設定錯誤、或是設定檔內有些檔案路徑錯誤
(若有出現 apache2.service is not active, cannot reload.
則試著重啟服務)
$ sudo apachectl stop
$ sudo /etc/init.d/apache2 start
$ sudo apachectl restart
或者
$ sudo service apache2 restart


成功後
若沒問題,靜待一下就能以Https方式連上了! https://gjlmotea.com/