在 apache 中設定 ssl 進行本地測試

鍵入以下命令啟用模組:

sudo a2enmod ssl

重新啟動 Web 伺服器(apache2),以便識別更改:

sudo service apache2 restart

可選(但一個好主意):建立一個包含新證書檔案的目錄:

sudo mkdir /etc/apache2/ssl

在該目錄中建立金鑰和自簽名證書:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/your_domain.key -out /etc/apache2/ssl/your_domain.crt

系統會向你詢問一系列有關安全證書的問題。在提示時回答每個問題,但請使用你自己公司的資訊。這是一個例子:

Country Name (2 letter code) [AU]:US 
State or Province Name (full name) [Some-State]:Pennsylvania 
Locality Name (eg, city) []:Philadelphia 
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Cool Company
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:test_domain.com
Email Address []:my_email@test_domain.com

使用 root 許可權開啟檔案:

sudo vim /etc/apache2/sites-available/default-ssl.conf

通過將伺服器詳細資訊和證書位置新增到 default-ssl.conf 檔案來配置虛擬主機:

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin admin@example.com
        ServerName your_domain.com
        ServerAlias www.your_domain.com
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        SSLEngine on
        SSLCertificateFile /etc/apache2/ssl/your_domain.crt
        SSLCertificateKeyFile /etc/apache2/ssl/your_domain.key
        <FilesMatch "\.(cgi|shtml|phtml|php)$">
            SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /var/www/html>
            SSLOptions +StdEnvVars
            DirectoryIndex index.php
            AllowOverride All
            Order allow,deny
            Allow from all
        </Directory>
        BrowserMatch "MSIE [2-6]" \
                        nokeepalive ssl-unclean-shutdown \
                        downgrade-1.0 force-response-1.0
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
    </VirtualHost>
</IfModule>

儲存更改並輸入以下內容以啟用新的 ssl 配置:

sudo a2ensite default-ssl.conf

要啟用新配置,請執行:

service apache2 reload

現在,嘗試使用 https 在本地訪問你的網站!