前言
在 Windows 使用 Apache,有很多種方式,本文會分別以 Apache Lounge 與 MAMP 為例,示範 https 設定的方法。
適用環境
- Windows 10
- Apache Lounge (Apache 2.4.52 VS16 Win64)
- MAMP 5.0.5 (Apache 2.4.33)
- 開發環境
- 測試環境
前置設定
在本機(開發機)模擬正式機環境,可透過 hosts
設定網域對應到本機 IP 127.0.0.1
設定 hosts
- 路徑
%WinDir%\System32\drivers\etc\hosts
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
127.0.0.1 album.com
以 Apache Lounge 為例
在本文教學中,Apache 所在目錄為 C:\AMP\Apache24\
在 \Apache24\conf\httpd.conf
可以設定 Define SRVROOT 這個變數,簡化後續設定檔所使用的連結,如下所示
Define SRVROOT "c:/AMP/Apache24"
ServerRoot "${SRVROOT}"
透過 OpenSSL 產生憑證與金鑰
透過Apache內附的OpenSSL.exe,可產生所需的 憑證
與 金鑰
,在輸入指令前,需先建立設定檔 openssl.cnf
- 在 apache 的 bin 資料夾,新增 openssl.cnf
- 放置的路徑為
C:\AMP\Apache24\bin\openssl.cnf
[req]
prompt = no
default_md = sha256
default_bits = 2048
distinguished_name = dn
x509_extensions = v3_req
[dn]
C = TW
ST = Taiwan
L = Taipei
O = FlyStudioX
OU = IT
emailAddress = test@example.com
CN = localhost
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
DNS.2 = album.com
- 透過終端機輸入指令,產生憑證與金鑰
在Windows輸入指令的方式有很多種,除了可以在資料夾路徑列,輸入 cmd ,再按下 enter ,開啟命令提示字元。另外也可使用 PowerShell。
直接輸入 cmd 開啟命令提示字元,雖然方便,但缺點是沒有系統管理員權限,所以建議透過 Windows 搜尋功能,用 cmd 關鍵字找到命令提示字元後,按下滑鼠右鍵 以系統管理員身分執行
,可減少因權限衍生的麻煩。
接著透過透過終端機輸入以下指令,切換到 apache 的 bin 資料夾,並產生憑證與金鑰。
cd C:\AMP\Apache24\bin\
openssl req -x509 -new -nodes -sha256 -utf8 -days 365 -newkey rsa:2048 -keyout server.key -out server.crt -config openssl.cnf
- 最後要複製憑證
server.crt
與金鑰server.key
,到 conf 資料夾C:\AMP\Apache24\conf
設定 httpd-ssl.conf
憑證與金鑰就定位後,接著需要開啟 httpd-ssl.conf,確認設定檔內的路徑是否正確。
- 設定檔路徑為
C:\AMP\Apache24\conf\extra\httpd-ssl.conf
SSLCertificateFile "${SRVROOT}/conf/server.crt"
SSLCertificateKeyFile "${SRVROOT}/conf/server.key"
設定 httpd.conf
httpd-ssl.conf 設定無誤後,需要到 httpd.conf 啟用 SSL 相關 Module,並 Include httpd-ssl.conf
,最後設定 VirtualHost,聽取 https 的 port 443。
- 設定檔路徑為
C:\AMP\Apache24\conf\httpd.conf
# 以下兩個Module需啟用
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
# Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.conf
<VirtualHost *:443>
DocumentRoot "C:\AMP\WWW\album"
ServerName album.com
</VirtualHost>
安裝憑證
經過以上的設定,已經可順利開啟 https://album.com,但因為瀏覽器不認識這個憑證,所以在瀏覽器的網址前面會出現"不安全",為了解決這個問題,我們可以將憑證安裝到 受信任的根憑證授權單位
。
安裝的方式,就是用滑鼠左鍵對著 server.crt 點兩下,點選 安裝憑證
,存放位置可選擇 目前使用者
,接著選擇憑證存放區,將所有憑證放入以下的存放區,按下 瀏覽
,並選取憑證存放區,放在 受信任的根憑證授權單位
。
- 提示:若您完全按照上述方式操作,server.crt 將會位於
C:\AMP\Apache24\conf\server.crt
。
以 MAMP 為例
透過 OpenSSL 產生憑證與金鑰
- 在 apache 的 bin 資料夾,新增 openssl.cnf
- 檔案路徑
C:\MAMP\bin\apache\bin\openssl.cnf
openssl.cnf 內容同 Apache Lounge
以下內容為會員專屬